This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/50691] Incorrect argument evaluation in call with __thread argument
- From: "danglin at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 21 Oct 2011 12:17:11 +0000
- Subject: [Bug middle-end/50691] Incorrect argument evaluation in call with __thread argument
- Auto-submitted: auto-generated
- References: <bug-50691-4@http.gcc.gnu.org/bugzilla/>
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