diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-08-29 11:20:54 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-08-29 11:20:54 +0200 |
commit | 1d9cd701ec31686dbd037e0fe264c8738d993e41 (patch) | |
tree | c21d3fa2978d3c7b2e588a5c894f40a108b0f09d /gcc/tree-cfg.c | |
parent | c3bad34748071038343f8b88a30128faee7c5c0c (diff) | |
download | gcc-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.c | 2 |
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); |