This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/54041] [4.7/4.8/4.9 regression] -mshort ICE in convert_memory_address_addr_space, at explow.c:327
- From: "law at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 06 Feb 2014 06:02:14 +0000
- Subject: [Bug middle-end/54041] [4.7/4.8/4.9 regression] -mshort ICE in convert_memory_address_addr_space, at explow.c:327
- Auto-submitted: auto-generated
- References: <bug-54041-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54041
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P4 |P5
CC| |law at redhat dot com
Assignee|unassigned at gcc dot gnu.org |law at redhat dot com
--- Comment #10 from Jeffrey A. Law <law at redhat dot com> ---
I believe the problem is expand_expr_addr_expr_1 assumes that expand_expr will
produce a result in the requested mode. Unfortunately, expand_expr has always
been free to return an object with a different mode.
If we use convert_modes in the obvious way when tmode != GET_MODE (tmp) we no
longer get the ICE and the resulting code looks reasonably correct.
Of course we don't really have a good way to test -mshort. I'm not even sure
if it's used anymore in real world scenarios.
I'll do a bootstrap and test on x86_64, but I obviously realize that's not
going to give this change any real coverage testing.