summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Transforms/IPO/MergeFunctions.cpp10
-rw-r--r--llvm/test/Feature/OperandBundles/merge-func.ll30
2 files changed, 35 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/IPO/MergeFunctions.cpp b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
index 132b5872fbe..8a209a18c54 100644
--- a/llvm/lib/Transforms/IPO/MergeFunctions.cpp
+++ b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
@@ -974,17 +974,17 @@ int FunctionComparator::cmpOperations(const Instruction *L,
CI->getMetadata(LLVMContext::MD_range),
cast<CallInst>(R)->getMetadata(LLVMContext::MD_range));
}
- if (const InvokeInst *CI = dyn_cast<InvokeInst>(L)) {
- if (int Res = cmpNumbers(CI->getCallingConv(),
+ if (const InvokeInst *II = dyn_cast<InvokeInst>(L)) {
+ if (int Res = cmpNumbers(II->getCallingConv(),
cast<InvokeInst>(R)->getCallingConv()))
return Res;
if (int Res =
- cmpAttrs(CI->getAttributes(), cast<InvokeInst>(R)->getAttributes()))
+ cmpAttrs(II->getAttributes(), cast<InvokeInst>(R)->getAttributes()))
return Res;
- if (int Res = cmpOperandBundlesSchema(CI, R))
+ if (int Res = cmpOperandBundlesSchema(II, R))
return Res;
return cmpRangeMetadata(
- CI->getMetadata(LLVMContext::MD_range),
+ II->getMetadata(LLVMContext::MD_range),
cast<InvokeInst>(R)->getMetadata(LLVMContext::MD_range));
}
if (const InsertValueInst *IVI = dyn_cast<InsertValueInst>(L)) {
diff --git a/llvm/test/Feature/OperandBundles/merge-func.ll b/llvm/test/Feature/OperandBundles/merge-func.ll
index aad9262c901..1fa6eb09308 100644
--- a/llvm/test/Feature/OperandBundles/merge-func.ll
+++ b/llvm/test/Feature/OperandBundles/merge-func.ll
@@ -32,3 +32,33 @@ define i32 @g() {
ret i32 %v2
}
+
+define i32 @f.invoke() personality i8 3 {
+; CHECK-LABEL: @f.invoke(
+ entry:
+; CHECK: %v0 = invoke i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
+ %v0 = invoke i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
+ to label %normal unwind label %exception
+
+ normal:
+ ret i32 %v0
+
+ exception:
+ %cleanup = landingpad i8 cleanup
+ ret i32 0
+}
+
+define i32 @g.invoke() personality i8 3 {
+; CHECK-LABEL: @g.invoke(
+ entry:
+; CHECK: %v0 = invoke i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
+ %v0 = invoke i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
+ to label %normal unwind label %exception
+
+ normal:
+ ret i32 %v0
+
+ exception:
+ %cleanup = landingpad i8 cleanup
+ ret i32 0
+}
OpenPOWER on IntegriCloud