/* Generated by compiling with gcc 4.8 as follows:
**
** gcc-4.8 -O0 -g -fno-dwarf2-cfi-asm -c dwarf4_simple.c -o gcc48-simple.
**
** Note: -fno-dwarf2-cfi-asm to tell gcc to generate .dwarf_frames as well
** as the .eh_frames it generates by default.
**
*/

extern int bar(int);
extern int baz(int);

int foo(int v) {
    int x = bar(v);
    int i;
    for (i = 0; i < v; ++i)
        x += bar(i) + bar(v) * baz(i);
    return x;
}
