PR116510: Add missing fold_converts into tree switch if conversion
Passes test suite. Ok to commit? gcc/ChangeLog: PR middle-end/116510 * tree-if-conv.cc (predicate_bbs): Add missing fold_converts. gcc/testsuite/ChangeLog: * gcc.dg/vect/vect-switch-ifcvt-3.c: New test.
This commit is contained in:
parent
e48a65d3b3
commit
d5a05db80f
2 changed files with 18 additions and 3 deletions
12
gcc/testsuite/gcc.dg/vect/vect-switch-ifcvt-3.c
Normal file
12
gcc/testsuite/gcc.dg/vect/vect-switch-ifcvt-3.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
// PR116510
|
||||
|
||||
char excmap_def_0;
|
||||
int gg_strescape_i;
|
||||
void gg_strescape() {
|
||||
for (; gg_strescape_i; gg_strescape_i++)
|
||||
switch ((unsigned char)gg_strescape_i)
|
||||
case '\\':
|
||||
case '"':
|
||||
excmap_def_0 = 0;
|
||||
}
|
|
@ -1477,10 +1477,12 @@ predicate_bbs (loop_p loop)
|
|||
{
|
||||
tree low = build2_loc (loc, GE_EXPR,
|
||||
boolean_type_node,
|
||||
index, CASE_LOW (label));
|
||||
index, fold_convert_loc (loc, TREE_TYPE (index),
|
||||
CASE_LOW (label)));
|
||||
tree high = build2_loc (loc, LE_EXPR,
|
||||
boolean_type_node,
|
||||
index, CASE_HIGH (label));
|
||||
index, fold_convert_loc (loc, TREE_TYPE (index),
|
||||
CASE_HIGH (label)));
|
||||
case_cond = build2_loc (loc, TRUTH_AND_EXPR,
|
||||
boolean_type_node,
|
||||
low, high);
|
||||
|
@ -1489,7 +1491,8 @@ predicate_bbs (loop_p loop)
|
|||
case_cond = build2_loc (loc, EQ_EXPR,
|
||||
boolean_type_node,
|
||||
index,
|
||||
CASE_LOW (gimple_switch_label (sw, i)));
|
||||
fold_convert_loc (loc, TREE_TYPE (index),
|
||||
CASE_LOW (label)));
|
||||
if (i > 1)
|
||||
switch_cond = build2_loc (loc, TRUTH_OR_EXPR,
|
||||
boolean_type_node,
|
||||
|
|
Loading…
Add table
Reference in a new issue