Don't register nonsensical relations.
gcc/ PR tree-optimization/103003 * value-relation.cc (dom_oracle::register_relation): If the 2 ssa names are the same, don't register any relation. gcc/testsuite/ * gcc.dg/pr103003.c: New.
This commit is contained in:
parent
14d3140405
commit
0187c03be3
2 changed files with 19 additions and 1 deletions
12
gcc/testsuite/gcc.dg/pr103003.c
Normal file
12
gcc/testsuite/gcc.dg/pr103003.c
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O2" } */
|
||||||
|
typedef char int8_t;
|
||||||
|
int8_t c_4, uli_5;
|
||||||
|
unsigned short us_6;
|
||||||
|
void func_1() {
|
||||||
|
int uli_9;
|
||||||
|
short ptr_16ptr_11 = &uli_9; /* { dg-warning "initialization of*" } */
|
||||||
|
for (; us_6 <= 6;)
|
||||||
|
if ((us_6 *= uli_9) < (uli_5 || 0) ?: ((c_4 = us_6) >= us_6) - uli_5)
|
||||||
|
uli_9 = 9;
|
||||||
|
}
|
|
@ -877,7 +877,13 @@ relation_oracle::register_edge (edge e, relation_kind k, tree op1, tree op2)
|
||||||
void
|
void
|
||||||
dom_oracle::register_relation (basic_block bb, relation_kind k, tree op1,
|
dom_oracle::register_relation (basic_block bb, relation_kind k, tree op1,
|
||||||
tree op2)
|
tree op2)
|
||||||
{ // Equivalencies are handled by the equivalence oracle.
|
{
|
||||||
|
// If the 2 ssa_names are the same, do nothing. An equivalence is implied,
|
||||||
|
// and no other relation makes sense.
|
||||||
|
if (op1 == op2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Equivalencies are handled by the equivalence oracle.
|
||||||
if (k == EQ_EXPR)
|
if (k == EQ_EXPR)
|
||||||
equiv_oracle::register_relation (bb, k, op1, op2);
|
equiv_oracle::register_relation (bb, k, op1, op2);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Reference in a new issue