Commit c83ee180 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/63284 (-fcompare-debug issue due to redirection to __builtin_unreachable ())

	PR debug/63284
	* tree-cfgcleanup.c (fixup_noreturn_call): Don't split block
	if there are only debug stmts after the noreturn call, instead
	remove the debug stmts.

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

From-SVN: r215331
parent f020a31c
2014-09-17 Jakub Jelinek <jakub@redhat.com>
PR debug/63284
* tree-cfgcleanup.c (fixup_noreturn_call): Don't split block
if there are only debug stmts after the noreturn call, instead
remove the debug stmts.
2014-09-17 Jan Hubicka <hubicka@ucw.cz>
* ipa-devirt.c (type_pair, default_hashset_traits): New types.
2014-09-17 Jakub Jelinek <jakub@redhat.com>
PR debug/63284
* gcc.dg/pr63284.c: New test.
* ada/acats/run_all.sh: Redirect mkdir stderr to /dev/null.
2014-09-17 Paolo Carlini <paolo.carlini@oracle.com>
......
/* PR debug/63284 */
/* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */
int a[10], *b, *d, c, f;
int fn2 (void);
void fn3 (void);
void fn4 (int);
static int
fn1 (int x)
{
int e = a[0];
if (e)
return 1;
if (b)
switch (x)
{
case 1:
if (d)
e = fn2 ();
else
fn3 ();
break;
case 0:
if (d)
{
fn3 ();
if (c)
fn4 (1);
}
else
fn4 (0);
}
return e;
}
void
fn6 (void)
{
f = fn1 (0);
}
......@@ -565,7 +565,20 @@ fixup_noreturn_call (gimple stmt)
/* First split basic block if stmt is not last. */
if (stmt != gsi_stmt (gsi_last_bb (bb)))
split_block (bb, stmt);
{
if (stmt == gsi_stmt (gsi_last_nondebug_bb (bb)))
{
/* Don't split if there are only debug stmts
after stmt, that can result in -fcompare-debug
failures. Remove the debug stmts instead,
they should be all unreachable anyway. */
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
for (gsi_next (&gsi); !gsi_end_p (gsi); )
gsi_remove (&gsi, true);
}
else
split_block (bb, stmt);
}
changed |= remove_fallthru_edge (bb->succs);
......
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