This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/54041] [4.7/4.8/4.9 regression] -mshort ICE in convert_memory_address_addr_space, at explow.c:327


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]