[PATCH] D36512: [ValueTracking] Honour recursion limit
Davide Italiano via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 9 05:05:50 PDT 2017
davide created this revision.
The recently improved support for `icmp` in ValueTracking,
commit c6b02fa9154c7b897afe5fb746cec527fb3f8bb0
Author: Chad Rosier <mcrosier at codeaurora.org>
Date: Thu Jul 6 20:00:25 2017 +0000
[ValueTracking] Support icmps fed by 'and' and 'or'.
This patch adds support for handling some forms of ands and ors in
ValueTracking's isImpliedCondition API.
PR33611
https://reviews.llvm.org/D34901
exposes the fact that `isImplied` condition doesn't really bail out if we hit the recursion limit (and this function calls `computeKnownBits` which increases the depth and asserts).
This is the top of the stack, for archeologists (the frame is #13 because this is running inside `rr`).
#13 0x000000000215d12f in llvm::computeKnownBits (V=0x7a05fc0, Known=..., DL=...,
Depth=7, AC=0x0, CxtI=0x0, DT=0x0, ORE=0x0) at ../lib/Analysis/ValueTracking.cpp:142
#14 0x0000000002171143 in isTruePredicate(llvm::CmpInst::Predicate, llvm::Value const*, llvm::Value const*, llvm::DataLayout const&, unsigned int)::$_9::operator()(llvm::Value const
*, llvm::Value const*, llvm::Value const*&, llvm::APInt const*&, llvm::APInt const*&) const (this=0x7ffd945de098, A=0x7a078d0, B=0x7a05c00, X=@0x7ffd945de090: 0x7a05fc0,
CA=@0x7ffd945de088: 0x7a07888, CB=@0x7ffd945de080: 0x7a05af8)
at ../lib/Analysis/ValueTracking.cpp:4376
#15 0x0000000002170ec0 in isTruePredicate (Pred=llvm::CmpInst::ICMP_ULE, LHS=0x7a078d0,
RHS=0x7a05c00, DL=..., Depth=6) at ../lib/Analysis/ValueTracking.cpp:4387
#16 0x0000000002170c71 in isImpliedCondOperands (Pred=llvm::CmpInst::ICMP_ULT,
ALHS=0x7a05c00, ARHS=0x7a05b10, BLHS=0x7a078d0, BRHS=0x7a05b10, DL=..., Depth=6)
at ../lib/Analysis/ValueTracking.cpp:4414
#17 0x00000000021675c1 in isImpliedCondICmps (LHS=0x7a27d60, RHS=0x7a07960, DL=...,
LHSIsTrue=true, Depth=6) at ../lib/Analysis/ValueTracking.cpp:4518
#18 0x000000000216720a in llvm::isImpliedCondition (LHS=0x7a27d60, RHS=0x7a07960,
DL=..., LHSIsTrue=true, Depth=6) at ../lib/Analysis/ValueTracking.cpp:4581
#19 0x000000000216785a in isImpliedCondAndOr (LHS=0x7a27dd0, RHS=0x7a07960, DL=...,
LHSIsTrue=true, Depth=5) at ../lib/Analysis/ValueTracking.cpp:4549
#20 0x0000000002167278 in llvm::isImpliedCondition (LHS=0x7a27dd0, RHS=0x7a07960,
DL=..., LHSIsTrue=true, Depth=5) at ../lib/Analysis/ValueTracking.cpp:4589
#21 0x0000000002167798 in isImpliedCondAndOr (LHS=0x7a066b0, RHS=0x7a07960, DL=...,
LHSIsTrue=true, Depth=4) at ../lib/Analysis/ValueTracking.cpp:4546
#22 0x0000000002167278 in llvm::isImpliedCondition (LHS=0x7a066b0, RHS=0x7a07960,
https://reviews.llvm.org/D36512
Files:
lib/Analysis/ValueTracking.cpp
test/Transforms/SimplifyCFG/pr34131.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36512.110363.patch
Type: text/x-patch
Size: 6576 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170809/d9ad82ce/attachment.bin>
More information about the llvm-commits
mailing list