diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2022-09-06 08:20:54 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2022-09-06 13:48:05 +0200 |
commit | f5dc9da0a97734ab68a4af34875640ed1ca0c7d1 (patch) | |
tree | 0a12434812602043f5a5c46af92ca82357d9a609 /gcc/tree-vectorizer.h | |
parent | 12f0783111067b68673284665a886cdd0c8f55c3 (diff) | |
download | gcc-f5dc9da0a97734ab68a4af34875640ed1ca0c7d1.zip gcc-f5dc9da0a97734ab68a4af34875640ed1ca0c7d1.tar.gz gcc-f5dc9da0a97734ab68a4af34875640ed1ca0c7d1.tar.bz2 |
Handle > INF and < INF correctly in range-op-float.cc
The gfortran.dg/minlocval*.f90 tests are generating conditionals past
the infinities. For example:
if (x <= +Inf)
foo (x);
else
bar (x);
It seems to me that the only possible value for x on the false side is
either NAN or undefined (for !HONOR_NANS).
gcc/ChangeLog:
* range-op-float.cc (build_le): Handle NANs and going past infinity.
(build_lt): Same.
(build_ge): Same.
(build_gt): Same.
(foperator_lt::op1_range): Avoid adjustments to range if build_*
returned false.
(foperator_lt::op2_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/vrp-float-inf-1.c: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions