diff options
author | Andrew Pinski <quic_apinski@quicinc.com> | 2025-05-04 19:24:09 +0000 |
---|---|---|
committer | Andrew Pinski <quic_apinski@quicinc.com> | 2025-05-07 14:33:05 +0000 |
commit | 8335fd561fa823d32556512c09dfce44463e8eaa (patch) | |
tree | a7ef13f27564908428dc30d2d244b2c425d2f106 /libjava/classpath | |
parent | 2c8d632d9ed4e3aeee2156ba17fe631ecbc90dbf (diff) | |
download | gcc-8335fd561fa823d32556512c09dfce44463e8eaa.zip gcc-8335fd561fa823d32556512c09dfce44463e8eaa.tar.gz gcc-8335fd561fa823d32556512c09dfce44463e8eaa.tar.bz2 |
Loop-IM: Hoist (non-expensive) stmts to executed all loop when running before PRE
While fixing up how rewrite_to_defined_overflow works, gcc.dg/Wrestrict-22.c started
to fail. This is because `d p+ 2` would moved by LIM and then be rewritten not using
pointer plus. The rewriting part is correct behavior. It only recently started to be
moved out; due to r16-190-g6901d56fea2132.
Which has the following comment:
```
When we run before PRE and PRE is active hoist all expressions
since PRE would do so anyway and we can preserve range info
but PRE cannot.
```
This is not true if hoisting past the always executed point; so, instead of hoisting
these statements all the way out of the max loops, take into account the always executed
loop too.
Bootstrapped and tested on x86_64-linux-gnu.
gcc/ChangeLog:
* tree-ssa-loop-im.cc (compute_invariantness): Hoist to the always executed point
if ignorning the cost.
Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
Diffstat (limited to 'libjava/classpath')
0 files changed, 0 insertions, 0 deletions