diff options
author | Andrew Pinski <quic_apinski@quicinc.com> | 2024-10-17 05:18:36 +0000 |
---|---|---|
committer | Andrew Pinski <quic_apinski@quicinc.com> | 2025-05-08 07:23:28 +0000 |
commit | f2bb7ffe84840d8f4ba6c0e5acdbbad8ca9d3603 (patch) | |
tree | f5832246ca1ac02d8060eafbd90a26c0c196e649 /libjava/classpath/lib | |
parent | b38e3a7196d25bc8bcb1fe55da7663745cea9470 (diff) | |
download | gcc-f2bb7ffe84840d8f4ba6c0e5acdbbad8ca9d3603.zip gcc-f2bb7ffe84840d8f4ba6c0e5acdbbad8ca9d3603.tar.gz gcc-f2bb7ffe84840d8f4ba6c0e5acdbbad8ca9d3603.tar.bz2 |
Rewrite VCEs of integral types [PR116939]
Like the patch to phiopt (r15-4033-g1f619fe25925a5f7), this adds rewriting
of VCE to gimple_with_undefined_signed_overflow/rewrite_to_defined_overflow.
In the case of moving VCE of a bool from being conditional to unconditional,
it needs to be rewritten to not to use VCE but a normal cast. pr120122-1.c is
an example of where LIM needs this rewriting. The precision of the outer type
needs to be less then the inner one.
This also renames gimple_with_undefined_signed_overflow to gimple_needing_rewrite_undefined
and rewrite_to_defined_overflow to rewrite_to_defined_unconditional as they will be doing
more than just handling signed overflow.
Changes since v1:
* v2: rename the functions.
* v3: Add check for precision to be smaller.
Bootstrappd and tested on x86_64-linux-gnu.
PR tree-optimization/120122
PR tree-optimization/116939
gcc/ChangeLog:
* gimple-fold.h (gimple_with_undefined_signed_overflow): Rename to ..
(rewrite_to_defined_overflow): This.
(gimple_needing_rewrite_undefined): Rename to ...
(rewrite_to_defined_unconditional): this.
* gimple-fold.cc (gimple_with_undefined_signed_overflow): Rename to ...
(gimple_needing_rewrite_undefined): This. Return true for VCE with integral
types of smaller precision.
(rewrite_to_defined_overflow): Rename to ...
(rewrite_to_defined_unconditional): This. Handle VCE rewriting to a cast.
* tree-if-conv.cc: s/gimple_with_undefined_signed_overflow/gimple_needing_rewrite_undefined/
s/rewrite_to_defined_overflow/rewrite_to_defined_unconditional.
* tree-scalar-evolution.cc: Likewise
* tree-ssa-ifcombine.cc: Likewise.
* tree-ssa-loop-im.cc: Likewise.
* tree-ssa-loop-split.cc: Likewise.
* tree-ssa-reassoc.cc: Likewise.
gcc/testsuite/ChangeLog:
* gcc.dg/torture/pr120122-1.c: New test.
Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
Diffstat (limited to 'libjava/classpath/lib')
0 files changed, 0 insertions, 0 deletions