gcc is 2.96-70 and the testcase is: /* ---------- testcase.c ----------*/ struct argp_option { int key; }; struct argp { __const struct argp_option *options; }; extern __inline__ int _option_is_short (__const struct argp_option *__opt) { return isprint (__opt->key); } struct group { void *hook; }; int convert_options (const struct argp *argp, struct group *group) { const struct argp_option *opt = argp->options; if (_option_is_short(opt)) return 0; } int _option_is_short (__const struct argp_option *__opt) { return 0; } /* ---------------- end ----------------- */ baud:~$ gcc -O2 -ggdb3 -c testcase.c testcase.c: In function `_option_is_short': testcase.c:30: Internal compiler error in add_abstract_origin_attribute, at dwarf2out.c:7744 Please submit a full bug report. See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
I updated to gcc-2.96-71.i386.rpm and got the same problem. Also, I can provide a shorter testcase, that crashes gcc, and this candidate is certainly very close to the world record! :-) /* ---------- testcase.c -------- */ extern __inline__ int f1 (int x) { return f2(0); } int f3 (int y) { if (f1(y)) return 0; } int f1 (int x) { return 0; } /* ----------- end --------------- */ baud:~$ gcc -O2 -ggdb3 -c testcase.c testcase.c: In function `f1': testcase.c:14: Internal compiler error in add_abstract_origin_attribute, at dwarf2out.c:7744
Fixed in gcc-2.96-72.
Huuuh..., sorry. I forgot kgcc was my default compiler. gcc-2.96-72 doesn't fix the problem. The following testcase makes an internal compiler error with flags: -O2 -ggdb3 extern __inline__ int f1 (int x) {return f2(0);} int f3 (int y) {return f1(y);} int f1 (int x) {return 0;}
Happens both with our 2.96 and CVS head, will try to debug this in the coming week.
Should be worked-around in gcc-2.96-75.