http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50691
--- Comment #4 from John David Anglin <danglin at gcc dot gnu.org> 2011-10-21 12:17:11 UTC --- The following tree is incorrectly expanded bt expand call: (gdb) p debug_tree (exp) <call_expr 0x403bf730 type <integer_type 0x4036c3c0 int public SI size <integer_cst 0x40362510 constant 32> unit size <integer_cst 0x40362528 constant 4> align 32 symtab 0 alias set 2 canonical type 0x4036c3c0 precision 32 min <integer_cst 0x40362780 -2147483648> max <integer_cst 0x40362798 2147483647> pointer_to_this <pointer_type 0x4036cae0>> side-effects fn <addr_expr 0x403da738 type <pointer_type 0x403cff00 type <function_type 0x403cfde0> unsigned SI size <integer_cst 0x40362510 32> unit size <integer_cst 0x40362528 4> align 32 symtab 0 alias set -1 canonical type 0x403cff00> constant arg 0 <function_decl 0x403dbf00 bar type <function_type 0x403cfde0> addressable used public external decl_5 SI file xxx.c line 2 col 12 align 32 context <translation_unit_decl 0x40377e00 D.1216> chain <function_decl 0x403dbf80 foo>>> arg 0 <addr_expr 0x403da660 type <pointer_type 0x4036cae0 type <integer_type 0x4036c3c0 int> unsigned SI size <integer_cst 0x40362510 32> unit size <integer_cst 0x40362528 4> align 32 symtab 0 alias set -1 canonical type 0x4036cae0> arg 0 <parm_decl 0x403e30b0 x type <integer_type 0x4036c3c0 int> addressable used SI file xxx.c line 4 col 10 size <integer_cst 0x40362510 32> unit size <integer_cst 0x40362528 4> align 32 context <function_decl 0x403dbf80 foo> (mem/c/i:SI (plus:SI (reg/f:SI 90 virtual-incoming-args) (const_int -4 [0xfffffffc])) [2 x+0 S4 A32]) arg-type <integer_type 0x4036c3c0 int> incoming-rtl (reg:SI 26 %r26 [ x ])> xxx.c:6:14> arg 1 <addr_expr 0x403da678 type <pointer_type 0x4036cae0> arg 0 <var_decl 0x403cfd80 y type <integer_type 0x4036c3c0 int> addressable used public external tls-global-dynamic SI file xxx.c line 1 col 21 size <integer_cst 0x40362510 32> unit size <integer_cst 0x40362528 4> align 32 context <translation_unit_decl 0x40377e00 D.1216> chain <function_decl 0x403dbf00 bar>> xxx.c:6:14> xxx.c:6:3> $11 = void (gdb) bt #0 expand_call (exp=0x403bf730, target=0x403bbe50, ignore=0) at ../../gcc/gcc/calls.c:1965 #1 0x0027bdb0 in expand_expr_real_1 (exp=0x403bf730, target=<optimized out>, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0xfdf02a08) at ../../gcc/gcc/expr.c:9934 #2 0x0027a194 in expand_expr_real_1 (exp=0x403bf730, target=<optimized out>, tmode=SImode, modifier=EXPAND_NORMAL, alt_rtl=0xfdf02a08) at ../../gcc/gcc/expr.c:9911