diff options
author | martinboehme <mboehme@google.com> | 2023-11-27 14:55:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-27 14:55:49 +0100 |
commit | 5bd643e1456bd2acc53ac0bf594d285be89a44fe (patch) | |
tree | bd625622b52d61582c1cfd2bb44fbdde9025fc89 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | edf645616f8734b0dbf08e15cc5209e6cf553c12 (diff) | |
download | llvm-5bd643e1456bd2acc53ac0bf594d285be89a44fe.zip llvm-5bd643e1456bd2acc53ac0bf594d285be89a44fe.tar.gz llvm-5bd643e1456bd2acc53ac0bf594d285be89a44fe.tar.bz2 |
[clang][dataflow] Strengthen widening of boolean values. (#73484)
Before we widen to top, we now check if both values can be proved either
true or
false in their respective environments; if so, widening returns a true
or false
literal. The idea is that we avoid losing information if posssible.
This patch includes a test that fails without this change to widening.
This change does mean that we call the SAT solver in more places, but
this seems
acceptable given the additional precision we gain.
In tests on an internal codebase, the number of SAT solver timeouts we
observe
with Crubit's nullability checker does increase by about 25%. They can
be
brought back to the previous level by doubling the SAT solver work
limit.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions