re PR tree-optimization/69209 (ICE at -Os and above on x86_64-linux-gnu (verify_gimple failed))
PR tree-optimization/69209 * ipa-split.c (split_function): If split part is not returning retval, retval has gimple type but is not gimple value, force it into a SSA_NAME first. * gcc.c-torture/compile/pr69209.c: New test. From-SVN: r233228
This commit is contained in:
parent
4b4a9fbde8
commit
a162f3af80
4 changed files with 55 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2016-02-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/69209
|
||||
* ipa-split.c (split_function): If split part is not
|
||||
returning retval, retval has gimple type but is not
|
||||
gimple value, force it into a SSA_NAME first.
|
||||
|
||||
2016-02-08 Nicklas Bo Jensen <nbjensen@gmail.com>
|
||||
|
||||
* doc/tree-ssa.texi (Preserving the virtual SSA form): Remove
|
||||
|
|
|
@ -1628,8 +1628,22 @@ split_function (basic_block return_bb, struct split_point *split_point,
|
|||
gimple_call_set_lhs (call, build_simple_mem_ref (retval));
|
||||
else
|
||||
gimple_call_set_lhs (call, retval);
|
||||
gsi_insert_after (&gsi, call, GSI_NEW_STMT);
|
||||
}
|
||||
else
|
||||
{
|
||||
gsi_insert_after (&gsi, call, GSI_NEW_STMT);
|
||||
if (retval
|
||||
&& is_gimple_reg_type (TREE_TYPE (retval))
|
||||
&& !is_gimple_val (retval))
|
||||
{
|
||||
gassign *g
|
||||
= gimple_build_assign (make_ssa_name (TREE_TYPE (retval)),
|
||||
retval);
|
||||
retval = gimple_assign_lhs (g);
|
||||
gsi_insert_after (&gsi, g, GSI_NEW_STMT);
|
||||
}
|
||||
}
|
||||
gsi_insert_after (&gsi, call, GSI_NEW_STMT);
|
||||
/* Build bndret call to obtain returned bounds. */
|
||||
if (retbnd)
|
||||
chkp_insert_retbnd_call (retbnd, retval, &gsi);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-02-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/69209
|
||||
* gcc.c-torture/compile/pr69209.c: New test.
|
||||
|
||||
2016-02-08 Jeff Law <law@redhat.com>
|
||||
|
||||
PR tree-optimization/68541
|
||||
|
|
28
gcc/testsuite/gcc.c-torture/compile/pr69209.c
Normal file
28
gcc/testsuite/gcc.c-torture/compile/pr69209.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
/* PR tree-optimization/69209 */
|
||||
|
||||
int a, c, *d, e;
|
||||
|
||||
void foo (void) __attribute__ ((__noreturn__));
|
||||
|
||||
int
|
||||
bar (void)
|
||||
{
|
||||
int f;
|
||||
if (a)
|
||||
{
|
||||
if (e)
|
||||
foo ();
|
||||
foo ();
|
||||
}
|
||||
if (d != &f)
|
||||
foo ();
|
||||
if (!c)
|
||||
foo ();
|
||||
return f;
|
||||
}
|
||||
|
||||
void
|
||||
baz ()
|
||||
{
|
||||
bar ();
|
||||
}
|
Loading…
Add table
Reference in a new issue