------- Comment #6 from jakub at gcc dot gnu dot org 2009-03-09 11:09 ------- Confirmed. Simplified testcase: extern inline void * asmfn (void *dest, const void *src, unsigned long n) { asm volatile ("" : "=m" (*(struct { char x[n]; } *) dest) : "r" (n), "r" (dest), "r" (src), "m" (*(struct { char x[n]; } *) src) : "cc"); return dest; }
extern inline void baz (char *dest, const char *str, unsigned long len) { if (__builtin_constant_p (len)) asmfn (dest, str, len + 1); else asmfn (dest, str, len); } extern inline void bar (char *dest, const char *str) { baz (dest, str, __builtin_strlen (str)); } void foo (char *dest, const char *str) { bar (dest, str); } -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|tree-optimization |c Keywords|ice-on-valid-code | Known to fail|4.4.0 | Known to work|4.3.1 | Priority|P3 |P1 Last reconfirmed|0000-00-00 00:00:00 |2009-03-09 11:09:57 date| | Summary|[4.4 regression] ICE in |gcc 4.4.0 20090306 segfaults |copy_tree_body_r |at argp-help.c in glibc 2.7 | |and 2.9 Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39394