re PR rtl-optimization/50212 (ICE: in ei_container, at basic-block.h:610 with -fnon-call-exceptions -freorder-blocks-and-partition)

PR rtl-optimization/50212
	* bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
	Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.

	* g++.dg/other/pr50212.C: New test.

From-SVN: r178785
This commit is contained in:
Jakub Jelinek 2011-09-12 19:55:36 +02:00 committed by Jakub Jelinek
parent 7d8102762c
commit b58d339116
4 changed files with 30 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2011-09-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/50212
* bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
PR debug/50299
* calls.c (load_register_parameters): Use use_reg_mode instead
of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE

View File

@ -1,5 +1,5 @@
/* Basic block reordering routines for the GNU compiler.
Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@ -1315,7 +1315,9 @@ find_rarely_executed_basic_blocks_and_crossing_edges (void)
{
bool all_same, all_diff;
if (lp == NULL)
if (lp == NULL
|| lp->landing_pad == NULL_RTX
|| !LABEL_P (lp->landing_pad))
continue;
all_same = all_diff = true;

View File

@ -1,3 +1,8 @@
2011-09-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/50212
* g++.dg/other/pr50212.C: New test.
2011-09-12 Georg-Johann Lay <avr@gjlay.de>
PR target/43746

View File

@ -0,0 +1,17 @@
// PR rtl-optimization/50212
// { dg-do compile }
// { dg-require-effective-target freorder }
// { dg-options "-O -fnon-call-exceptions -ftrapv -freorder-blocks-and-partition" }
void
foo (int n)
{
try
{
int i = 0;
while (i++ < n);
}
catch (...)
{
}
}