aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2021-09-30 22:22:17 -0700
committerAlina Sbirlea <asbirlea@google.com>2021-12-13 16:49:24 -0800
commit46fb810955076de45be7c0cd4ae2d4fddc111050 (patch)
treed0220f87c282a0e1ac027c0cad5f3a321cd5ad9b /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent8c107bee702f1bfe28a37840c3952a43172b4897 (diff)
downloadllvm-46fb810955076de45be7c0cd4ae2d4fddc111050.zip
llvm-46fb810955076de45be7c0cd4ae2d4fddc111050.tar.gz
llvm-46fb810955076de45be7c0cd4ae2d4fddc111050.tar.bz2
[NewGVN] Use PredicateInfo info when previously used for the same ssa.copy intrinsic
Symbolic execution using PredicateInfo is only done for the ssa.copy intrinsic. It's using two potential sources for building the expression: 1. the Value of the instruction for which the instruction is a copy of, and 2. the Value from the contraint in PredicateInfo It's possible to get into an infinite loop when choosing between these two, as described in PR31613. This patch proposes performing swapping of the two values (i.e. choosing the second one for the expression), if that same second value was chosen before; this breaks the cycle. In the testcases provided, where there is a contradiction between the value from symbolic execution and assume instruction, NewGVN reduces the assume to assume(false). Resolves PR31613. Differential Revision: https://reviews.llvm.org/D110907
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions