Commit 26122e2d by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/77377 (c-c++-common/pr59037.c ICEs with -fpic -msse on i686)

	PR middle-end/77377
	* simplify-rtx.c (avoid_constant_pool_reference): For out of bounds
	constant pool reference return x instead of c.

	* gcc.target/i386/pr77377.c: New test.

From-SVN: r239854
parent ab834832
2016-08-30 Jakub Jelinek <jakub@redhat.com>
PR middle-end/77377
* simplify-rtx.c (avoid_constant_pool_reference): For out of bounds
constant pool reference return x instead of c.
2016-08-29 Segher Boessenkool <segher@kernel.crashing.org> 2016-08-29 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): Do not * config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): Do not
......
...@@ -251,15 +251,14 @@ avoid_constant_pool_reference (rtx x) ...@@ -251,15 +251,14 @@ avoid_constant_pool_reference (rtx x)
/* If we're accessing the constant in a different mode than it was /* If we're accessing the constant in a different mode than it was
originally stored, attempt to fix that up via subreg simplifications. originally stored, attempt to fix that up via subreg simplifications.
If that fails we have no choice but to return the original memory. */ If that fails we have no choice but to return the original memory. */
if ((offset != 0 || cmode != GET_MODE (x)) if (offset == 0 && cmode == GET_MODE (x))
&& offset >= 0 && offset < GET_MODE_SIZE (cmode)) return c;
else if (offset >= 0 && offset < GET_MODE_SIZE (cmode))
{ {
rtx tem = simplify_subreg (GET_MODE (x), c, cmode, offset); rtx tem = simplify_subreg (GET_MODE (x), c, cmode, offset);
if (tem && CONSTANT_P (tem)) if (tem && CONSTANT_P (tem))
return tem; return tem;
} }
else
return c;
} }
return x; return x;
......
2016-08-30 Jakub Jelinek <jakub@redhat.com> 2016-08-30 Jakub Jelinek <jakub@redhat.com>
PR middle-end/77377
* gcc.target/i386/pr77377.c: New test.
PR debug/77389 PR debug/77389
* g++.dg/debug/dwarf2/template-params-12f.C: Pass -gno-strict-dwarf * g++.dg/debug/dwarf2/template-params-12f.C: Pass -gno-strict-dwarf
in dg-options. in dg-options.
......
/* PR middle-end/77377 */
/* { dg-do compile } */
/* { dg-options "-O3 -msse" } */
/* { dg-additional-options "-fpic" { target fpic } } */
#include "../../c-c++-common/pr59037.c"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment