mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
Check for SSA_NAME not in the IL yet.
Check for an SSA_NAME not in the CFG before trying to create an equivalence record in the defintion block. PR tree-optimization/116003 gcc/ * value-relation.cc (equiv_oracle::register_initial_def): Check if SSA_NAME is in the IL before registering. gcc/testsuite/ * gcc.dg/pr116003.c: New.
This commit is contained in:
parent
a95c1911d8
commit
01c095ab77
21
gcc/testsuite/gcc.dg/pr116003.c
Normal file
21
gcc/testsuite/gcc.dg/pr116003.c
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O2 -fnon-call-exceptions -fprofile-arcs -finstrument-functions -fno-tree-copy-prop" } */
|
||||||
|
|
||||||
|
_BitInt(5) b5;
|
||||||
|
|
||||||
|
char c;
|
||||||
|
int i;
|
||||||
|
_BitInt(129) b129;
|
||||||
|
|
||||||
|
void
|
||||||
|
foo(_BitInt(128) b128)
|
||||||
|
{
|
||||||
|
l50:
|
||||||
|
b128 %= b128 - b129;
|
||||||
|
l64:
|
||||||
|
b128 %= c;
|
||||||
|
if (__builtin_add_overflow(i, 0, &c))
|
||||||
|
goto l50;
|
||||||
|
if (__builtin_sub_overflow(c, 0, &b5))
|
||||||
|
goto l64;
|
||||||
|
}
|
@ -607,7 +607,11 @@ equiv_oracle::register_initial_def (tree ssa)
|
|||||||
if (SSA_NAME_IS_DEFAULT_DEF (ssa))
|
if (SSA_NAME_IS_DEFAULT_DEF (ssa))
|
||||||
return;
|
return;
|
||||||
basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (ssa));
|
basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (ssa));
|
||||||
gcc_checking_assert (bb && !find_equiv_dom (ssa, bb));
|
|
||||||
|
// If defining stmt is not in the IL, simply return.
|
||||||
|
if (!bb)
|
||||||
|
return;
|
||||||
|
gcc_checking_assert (!find_equiv_dom (ssa, bb));
|
||||||
|
|
||||||
unsigned v = SSA_NAME_VERSION (ssa);
|
unsigned v = SSA_NAME_VERSION (ssa);
|
||||||
bitmap_set_bit (m_equiv_set, v);
|
bitmap_set_bit (m_equiv_set, v);
|
||||||
|
Loading…
Reference in New Issue
Block a user