rtl-ssa: Avoid using a stale splay tree root [PR116009]
In the fix for PR115928, I'd failed to notice that "root" was used later in the function, so needed to be updated. gcc/ PR rtl-optimization/116009 * rtl-ssa/accesses.cc (function_info::add_def): Set the root local variable after removing the old clobber group. gcc/testsuite/ PR rtl-optimization/116009 * gcc.c-torture/compile/pr116009.c: New test.
This commit is contained in:
parent
e62988b777
commit
34f33ea801
2 changed files with 25 additions and 1 deletions
|
@ -946,7 +946,8 @@ function_info::add_def (def_info *def)
|
|||
prev = split_clobber_group (group, insn);
|
||||
next = prev->next_def ();
|
||||
tree.remove_root ();
|
||||
last->set_splay_root (tree.root ());
|
||||
root = tree.root ();
|
||||
last->set_splay_root (root);
|
||||
}
|
||||
// COMPARISON is < 0 if DEF comes before ROOT or > 0 if DEF comes
|
||||
// after ROOT.
|
||||
|
|
23
gcc/testsuite/gcc.c-torture/compile/pr116009.c
Normal file
23
gcc/testsuite/gcc.c-torture/compile/pr116009.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
int tt, tt1;
|
||||
int y6;
|
||||
void ff(void);
|
||||
int ttt;
|
||||
void g(int var) {
|
||||
do {
|
||||
int t1 = var == 45 || var == 3434;
|
||||
if (tt != 0)
|
||||
if (t1)
|
||||
ff();
|
||||
if (tt < 0)
|
||||
break;
|
||||
if (t1)
|
||||
ff();
|
||||
if (tt < 0)
|
||||
break;
|
||||
ff();
|
||||
if (tt1)
|
||||
var = y6;
|
||||
if (t1)
|
||||
ff();
|
||||
} while(1);
|
||||
}
|
Loading…
Add table
Reference in a new issue