summaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2024-10-11 21:39:06 -0700
committerAmir Ayupov <aaupov@fb.com>2024-10-11 21:39:06 -0700
commit436701d88c1384d3f72c44dd152cd55e47ef2de3 (patch)
treec9825a370f1ba14e5fff19cea1279a0e7a7e9b54 /llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
parentefa1900174cb940f3750ce9e8cb6f06e69b4f3f0 (diff)
parentdd326b122506421aba2368053103767f4c56e2ba (diff)
[𝘀𝗽𝗿] changes introduced through rebaseusers/aaupov/spr/main.boltnfc-speedup-batwritemaps
Created using spr 1.3.4 [skip ci]
Diffstat (limited to 'llvm/lib/Transforms/IPO/FunctionSpecialization.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/FunctionSpecialization.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
index 548335d750e3..bd0a337e579e 100644
--- a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp
@@ -423,13 +423,16 @@ Constant *InstCostVisitor::visitGetElementPtrInst(GetElementPtrInst &I) {
Constant *InstCostVisitor::visitSelectInst(SelectInst &I) {
assert(LastVisited != KnownConstants.end() && "Invalid iterator!");
- if (I.getCondition() != LastVisited->first)
- return nullptr;
-
- Value *V = LastVisited->second->isZeroValue() ? I.getFalseValue()
- : I.getTrueValue();
- Constant *C = findConstantFor(V, KnownConstants);
- return C;
+ if (I.getCondition() == LastVisited->first) {
+ Value *V = LastVisited->second->isZeroValue() ? I.getFalseValue()
+ : I.getTrueValue();
+ return findConstantFor(V, KnownConstants);
+ }
+ if (Constant *Condition = findConstantFor(I.getCondition(), KnownConstants))
+ if ((I.getTrueValue() == LastVisited->first && Condition->isOneValue()) ||
+ (I.getFalseValue() == LastVisited->first && Condition->isZeroValue()))
+ return LastVisited->second;
+ return nullptr;
}
Constant *InstCostVisitor::visitCastInst(CastInst &I) {