Commit 0397b965 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/51014 (ICE: in apply_opt_in_copies, at loop-unroll.c:2283…

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
parent c8218030
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
/* 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, ...@@ -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;
......
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
......
// 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();
}
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