re PR rtl-optimization/51014 (ICE: in apply_opt_in_copies, at loop-unroll.c:2283 with -O2 -g -funroll-loops)

PR rtl-optimization/51014
	* loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
	both from bb and orig_bb.

	* g++.dg/opt/pr51014.C: New test.

From-SVN: r181883
This commit is contained in:
Jakub Jelinek 2011-12-01 17:57:07 +01:00 committed by Jakub Jelinek
parent c8218030cc
commit 0397b96547
4 changed files with 35 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2011-12-01 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/51014
* loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs
both from bb and orig_bb.
2011-12-01 Joern Rennecke <joern.rennecke@embecosm.com> 2011-12-01 Joern Rennecke <joern.rennecke@embecosm.com>
PR tree-optimization/50802 PR tree-optimization/50802

View File

@ -1,5 +1,5 @@
/* Loop unrolling and peeling. /* Loop unrolling and peeling.
Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2010 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2010, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
@ -2262,10 +2262,15 @@ apply_opt_in_copies (struct opt_info *opt_info,
for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next) for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next)
{ {
next = NEXT_INSN (insn); next = NEXT_INSN (insn);
if (!INSN_P (insn)) if (!INSN_P (insn)
|| (DEBUG_INSN_P (insn)
&& TREE_CODE (INSN_VAR_LOCATION_DECL (insn)) == LABEL_DECL))
continue; continue;
while (!INSN_P (orig_insn)) while (!INSN_P (orig_insn)
|| (DEBUG_INSN_P (orig_insn)
&& (TREE_CODE (INSN_VAR_LOCATION_DECL (orig_insn))
== LABEL_DECL)))
orig_insn = NEXT_INSN (orig_insn); orig_insn = NEXT_INSN (orig_insn);
ivts_templ.insn = orig_insn; ivts_templ.insn = orig_insn;

View File

@ -1,3 +1,8 @@
2011-12-01 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/51014
* g++.dg/opt/pr51014.C: New test.
2011-12-01 Paolo Carlini <paolo.carlini@oracle.com> 2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51367 PR c++/51367

View File

@ -0,0 +1,16 @@
// PR rtl-optimization/51014
// { dg-do compile }
// { dg-options "-O2 -funroll-loops -fcompare-debug" }
struct S
{
~S() { delete s; }
int *s;
};
void
f (S *x, S *y)
{
for (; x != y; ++x)
x->~S();
}