Commit ae2ffe2a by Richard Biener Committed by Richard Biener

re PR tree-optimization/67253 (ICE at -O3 on x86_64-linux-gnu (verify_gimple failed))

2015-09-16  Richard Biener  <rguenther@suse.de>

	PR middle-end/67253
	* cfgexpand.c (expand_gimple_stmt_1): Do not clobber
	location of possibly shared trees.

	* gcc.dg/torture/pr67253.c: New testcase.

From-SVN: r227826
parent 486bc847
2015-09-16 Richard Biener <rguenther@suse.de>
PR middle-end/67253
* cfgexpand.c (expand_gimple_stmt_1): Do not clobber
location of possibly shared trees.
2015-09-16 Richard Biener <rguenther@suse.de>
PR middle-end/67271
* fold-const.c (native_encode_expr): Bail out on bogus offsets.
......
......@@ -3587,7 +3587,9 @@ expand_gimple_stmt_1 (gimple stmt)
tree rhs = gimple_assign_rhs1 (assign_stmt);
gcc_assert (get_gimple_rhs_class (gimple_expr_code (stmt))
== GIMPLE_SINGLE_RHS);
if (gimple_has_location (stmt) && CAN_HAVE_LOCATION_P (rhs))
if (gimple_has_location (stmt) && CAN_HAVE_LOCATION_P (rhs)
/* Do not put locations on possibly shared trees. */
&& !is_gimple_min_invariant (rhs))
SET_EXPR_LOCATION (rhs, gimple_location (stmt));
if (TREE_CLOBBER_P (rhs))
/* This is a clobber to mark the going out of scope for
......
2015-09-16 Richard Biener <rguenther@suse.de>
PR middle-end/67253
* gcc.dg/torture/pr67253.c: New testcase.
2015-09-16 Richard Biener <rguenther@suse.de>
PR middle-end/67271
* gcc.dg/pr67271.c: New testcase.
......
/* { dg-do run } */
int *a, b, c, **d = &a, e, f, **h, i, j, k, l, m, *n, o, **q, r, s;
void fn1 (int p) { }
void
fn3 ()
{
for (; j; j++)
for (; k; k++)
l++;
f++;
}
static int
fn4 (char p1, int *p2)
{
for (; m < 1;)
{
fn1 (q == &p2);
for (; o; o++)
;
n = p2;
return 0;
}
for (;;)
{
for (; s; s++)
b = r;
*d = 0;
}
}
static int *fn2 (char, int, int *);
static int
fn5 ()
{
int *g = &c;
fn3 ();
fn2 (0, 0, g);
return e;
}
static int *
fn2 (char p1, int p2, int *p3)
{
fn4 (0, p3);
fn1 (&p3 == h);
for (; i;)
fn5 ();
fn4 (0, p3);
return *d;
}
int
main ()
{
fn5 ();
return 0;
}
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