re PR debug/54693 (VTA guality issues with loops)

PR debug/54693
	* tree-flow.h (propagate_threaded_block_debug_into): New prototype.
	* tree-ssa-threadedge.c (propagate_threaded_block_debug_into): No
	longer static.
	* tree-ssa-loop-ch.c (copy_loop_headers): Use it.

	* gcc.dg/guality/pr54693-2.c: New test.

From-SVN: r193281
This commit is contained in:
Jakub Jelinek 2012-11-07 08:50:01 +01:00 committed by Jakub Jelinek
parent 4c166488ff
commit 6e02b5f509
6 changed files with 53 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2012-11-07 Jakub Jelinek <jakub@redhat.com>
PR debug/54693
* tree-flow.h (propagate_threaded_block_debug_into): New prototype.
* tree-ssa-threadedge.c (propagate_threaded_block_debug_into): No
longer static.
* tree-ssa-loop-ch.c (copy_loop_headers): Use it.
2012-11-06 Sterling Augustine <saugustine@google.com>
* dwarf2out.c (output_comdat_type_unit): Check for OBJECT_FORMAT_ELF.

View File

@ -1,3 +1,8 @@
2012-11-07 Jakub Jelinek <jakub@redhat.com>
PR debug/54693
* gcc.dg/guality/pr54693-2.c: New test.
2012-11-06 Andrew Pinski <apinski@cavium.com>
* gcc.target/aarch64/vect-fmaxv-fminv-compile.c: Add -fno-vect-cost-model.

View File

@ -0,0 +1,33 @@
/* PR debug/54693 */
/* { dg-do run } */
/* { dg-options "-g" } */
int v;
__attribute__((noinline, noclone)) void
bar (int i)
{
v = i;
asm volatile ("" : : "r" (i) : "memory");
}
__attribute__((noinline, noclone)) void
foo (int x, int y, int z)
{
int i = 0;
while (x > 3 && y > 3 && z > 3)
{ /* { dg-final { gdb-test 21 "i" "v + 1" } } */
/* { dg-final { gdb-test 21 "x" "10 - i" } } */
bar (i); /* { dg-final { gdb-test 21 "y" "20 - 2 * i" } } */
/* { dg-final { gdb-test 21 "z" "30 - 3 * i" } } */
i++, x--, y -= 2, z -= 3;
}
}
int
main ()
{
v = -1;
foo (10, 20, 30);
return 0;
}

View File

@ -1,6 +1,6 @@
/* Data and Control Flow Analysis for Trees.
Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012 Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>
This file is part of GCC.
@ -689,6 +689,7 @@ extern void set_ssa_name_value (tree, tree);
extern bool potentially_threadable_block (basic_block);
extern void thread_across_edge (gimple, edge, bool,
VEC(tree, heap) **, tree (*) (gimple, gimple));
extern void propagate_threaded_block_debug_into (basic_block, basic_block);
/* In tree-ssa-loop-im.c */
/* The possibilities of statement movement. */

View File

@ -1,5 +1,5 @@
/* Loop header copying on trees.
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@ -197,6 +197,7 @@ copy_loop_headers (void)
entry = loop_preheader_edge (loop);
propagate_threaded_block_debug_into (exit->dest, entry->dest);
if (!gimple_duplicate_sese_region (entry, exit, bbs, n_bbs, copied_bbs))
{
fprintf (dump_file, "Duplication failed.\n");

View File

@ -1,5 +1,5 @@
/* SSA Jump Threading
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Jeff Law <law@redhat.com>
@ -617,7 +617,7 @@ DEF_VEC_ALLOC_O_STACK(tree);
/* Copy debug stmts from DEST's chain of single predecessors up to
SRC, so that we don't lose the bindings as PHI nodes are introduced
when DEST gains new predecessors. */
static void
void
propagate_threaded_block_debug_into (basic_block dest, basic_block src)
{
if (!MAY_HAVE_DEBUG_STMTS)