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.