-
- Downloads
Process only valid shift ranges.
When shifting outside the valid range of [0, precision-1], we can choose to process just the valid ones since the rest is undefined. this allows us to produce results for x << [0,2][+INF, +INF] by discarding the invalid ranges and processing just [0,2]. gcc/ PR tree-optimization/93781 * range-op.cc (get_shift_range): Rename from undefined_shift_range_check and now return valid shift ranges. (operator_lshift::fold_range): Use result from get_shift_range. (operator_rshift::fold_range): Ditto. gcc/testsuite/ * gcc.dg/tree-ssa/pr93781-1.c: New. * gcc.dg/tree-ssa/pr93781-2.c: New. * gcc.dg/tree-ssa/pr93781-3.c: New.
Showing
- gcc/range-op.cc 36 additions, 28 deletionsgcc/range-op.cc
- gcc/testsuite/gcc.dg/tree-ssa/pr93781-1.c 18 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/pr93781-1.c
- gcc/testsuite/gcc.dg/tree-ssa/pr93781-2.c 17 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/pr93781-2.c
- gcc/testsuite/gcc.dg/tree-ssa/pr93781-3.c 21 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/pr93781-3.c
Loading
Please register or sign in to comment