aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-08-29 11:20:54 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-08-29 11:20:54 +0200
commit1d9cd701ec31686dbd037e0fe264c8738d993e41 (patch)
treec21d3fa2978d3c7b2e588a5c894f40a108b0f09d /gcc/tree-cfg.c
parentc3bad34748071038343f8b88a30128faee7c5c0c (diff)
downloadgcc-1d9cd701ec31686dbd037e0fe264c8738d993e41.zip
gcc-1d9cd701ec31686dbd037e0fe264c8738d993e41.tar.gz
gcc-1d9cd701ec31686dbd037e0fe264c8738d993e41.tar.bz2
re PR tree-optimization/91351 (-fstrict-enums generates incorrect code)
PR tree-optimization/91351 * tree-cfg.c (generate_range_test): Use range_check_type instead of unsigned_type_for. * tree-cfgcleanup.c (convert_single_case_switch): Punt if range_check_type returns NULL. * tree-switch-conversion.c (switch_conversion::build_one_array): Use range_check_type instead of unsigned_type_for, don't perform linear opt if it returns NULL. (bit_test_cluster::find_bit_tests): Formatting fix. (bit_test_cluster::emit): Use range_check_type instead of unsigned_type_for. (switch_decision_tree::try_switch_expansion): Punt if range_check_type returns NULL. * g++.dg/opt/pr91351.C: New test. From-SVN: r275026
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 2648663..b75fdb2 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -9221,7 +9221,7 @@ generate_range_test (basic_block bb, tree index, tree low, tree high,
tree *lhs, tree *rhs)
{
tree type = TREE_TYPE (index);
- tree utype = unsigned_type_for (type);
+ tree utype = range_check_type (type);
low = fold_convert (utype, low);
high = fold_convert (utype, high);