aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2024-05-20 07:40:54 +0200
committerGitHub <noreply@github.com>2024-05-20 07:40:54 +0200
commitb6e102e08cd35543175459494211a3a15f793302 (patch)
tree2d623ef8fcdb3a9c77ec05d106031ff1ffff6ffc /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parentd316a0bd48ceb4a0ee851d729291a2cdcc8818eb (diff)
downloadllvm-b6e102e08cd35543175459494211a3a15f793302.zip
llvm-b6e102e08cd35543175459494211a3a15f793302.tar.gz
llvm-b6e102e08cd35543175459494211a3a15f793302.tar.bz2
[SCEV] Don't use non-deterministic constant folding for trip counts (#90942)
When calculating the exit count exhaustively, if any of the involved operations is non-deterministic, the exit count we compute at compile-time and the exit count at run-time may differ. Using these non-deterministic constant folding results is only correct if we actually replace all uses of the instruction with the value. SCEV (or its consumers) generally don't do this. Handle this by adding a new AllowNonDeterministic flag to the constant folding API, and disabling it in SCEV. If non-deterministic results are not allowed, do not fold FP lib calls in general, and FP operations returning NaNs in particular. This could be made more precise (some FP libcalls like fabs are fully deterministic), but I don't think this that precise handling here is worthwhile. Fixes the interesting part of https://github.com/llvm/llvm-project/issues/89885.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions