Commit cebde9e9 by Jeff Law Committed by Jeff Law

re PR tree-optimization/70190 (ICE (segfault) at -O2 and -O3 on x86_64-linux-gnu)

	PR tree-optimization/70190
	* tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths):
	Handle cases where we can not extract the taken edge, even though we
	found a constant value.

	PR tree-optimization/70190
	* gcc.c-torture/compile/pr70190.c: New test.

From-SVN: r234151
parent 015782a5
2016-03-11 Jeff Law <law@redhat.com>
PR tree-optimization/70190
* tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths):
Handle cases where we can not extract the taken edge, even though we
found a constant value.
PR tree-optimization/64058
* tree-ssa-coalesce.c (struct coalesce_pair): Add new field INDEX.
(num_coalesce_pairs): Move up earlier in file.
......
2016-03-11 Jeff Law <law@redhat.com>
PR tree-optimization/70190
* gcc.c-torture/compile/pr70190.c: New test.
2016-03-11 David Malcolm <dmalcolm@redhat.com>
PR c/68187
......
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */
int
fn1 ()
{
static char a[] = "foo";
static void *b[] = { &&l1, &&l2 };
goto *(b[1]);
l1: goto *(a[0]);
l2: return 0;
}
......@@ -385,6 +385,16 @@ fsm_find_control_statement_thread_paths (tree name,
We have to know the outgoing edge to figure this out. */
edge taken_edge = find_taken_edge ((*path)[0], arg);
/* There are cases where we may not be able to extract the
taken edge. For example, a computed goto to an absolute
address. Handle those cases gracefully. */
if (taken_edge == NULL)
{
path->pop ();
continue;
}
bool creates_irreducible_loop = false;
if (threaded_through_latch
&& loop == taken_edge->dest->loop_father
......
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