This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/55142] [4.8 Regression] internal compiler error: in plus_constant, at explow.c:88
- From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 07 Nov 2012 18:35:13 +0000
- Subject: [Bug middle-end/55142] [4.8 Regression] internal compiler error: in plus_constant, at explow.c:88
- Auto-submitted: auto-generated
- References: <bug-55142-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55142
--- Comment #20 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-11-07 18:35:13 UTC ---
If you compile the testcase with the unmodified compiler but without -fPIC, you
get in the assembly file:
movl %edx, _dl_rtld_map-1073742800(,%eax,4)
I presume that's wrong, correct? Yet the RTL instruction is:
(insn:TI 43 38 44 4 (set (mem/f:SI (zero_extend:DI (plus:SI (ashift:SI (reg:SI
0 ax [87])
(const_int 2 [0x2]))
(const:SI (plus:SI (symbol_ref:SI ("_dl_rtld_map") [flags
0x42] <var_decl 0x7ffff6d2b7b8 _dl_rtld_map>)
(const_int -1073742800 [0xffffffffbffffc30]))))) [3
*_8+0 S4 A32])
(reg:SI 1 dx [orig:82 dyn ] [82])) pr55142.c:32 65 {*movsi_internal}
(expr_list:REG_DEAD (reg:SI 0 ax [87])
(nil)))
and there is a zero_extend.