re PR debug/50017 (-fcompare-debug failure)

PR debug/50017
	* tree-vect-stmts.c (vect_finish_stmt_generation): If gsi_stmt (*gsi)
	is a debug stmt, use location of the first non-debug stmt after it.

	* gcc.dg/pr50017.c: New test.

From-SVN: r177857
This commit is contained in:
Jakub Jelinek 2011-08-18 16:13:48 +02:00 committed by Jakub Jelinek
parent 51fdcb386b
commit 4dee97188f
4 changed files with 38 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2011-08-18 Jakub Jelinek <jakub@redhat.com>
PR debug/50017
* tree-vect-stmts.c (vect_finish_stmt_generation): If gsi_stmt (*gsi)
is a debug stmt, use location of the first non-debug stmt after it.
2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
* config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of SET.

View file

@ -2,6 +2,9 @@
* g++.dg/plugin/decl_plugin.c: Include diagnostic.h.
PR debug/50017
* gcc.dg/pr50017.c: New test.
2011-08-18 Dodji Seketeli <dodji@redhat.com>
PR c++/45625

View file

@ -0,0 +1,20 @@
/* PR debug/50017 */
/* { dg-do compile } */
/* { dg-options "-O3 -fcompare-debug" } */
struct S { int r, i; };
void
foo (struct S *x, int y)
{
int i;
for (i = 1; i < y; i++)
{
struct S a, b, c;
a = x[0];
b = x[i];
c.r = a.r * b.r - a.i * b.i;
c.i = a.r * b.i + a.i * b.r;
x[i] = c;
}
}

View file

@ -1,5 +1,5 @@
/* Statement Analysis and Transformation for Vectorization
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com>
and Ira Rosen <irar@il.ibm.com>
@ -1419,6 +1419,7 @@ vect_finish_stmt_generation (gimple stmt, gimple vec_stmt,
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
gimple_stmt_iterator si;
gcc_assert (gimple_code (stmt) != GIMPLE_LABEL);
@ -1433,7 +1434,13 @@ vect_finish_stmt_generation (gimple stmt, gimple vec_stmt,
print_gimple_stmt (vect_dump, vec_stmt, 0, TDF_SLIM);
}
gimple_set_location (vec_stmt, gimple_location (gsi_stmt (*gsi)));
si = *gsi;
if (is_gimple_debug (gsi_stmt (si)))
{
gsi_next_nondebug (&si);
gcc_assert (!gsi_end_p (si));
}
gimple_set_location (vec_stmt, gimple_location (gsi_stmt (si)));
}
/* Checks if CALL can be vectorized in type VECTYPE. Returns