[PATCH] D46495: Fix assertion in FunctionComparator::cmpInlineAsm
whitequark via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 10 08:09:38 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL331990: [PR37339] Fix assertion in FunctionComparator::cmpInlineAsm (authored by whitequark, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D46495?vs=145892&id=146128#toc
Repository:
rL LLVM
https://reviews.llvm.org/D46495
Files:
llvm/trunk/lib/Transforms/Utils/FunctionComparator.cpp
llvm/trunk/test/Transforms/MergeFunc/inline-asm.ll
Index: llvm/trunk/lib/Transforms/Utils/FunctionComparator.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Utils/FunctionComparator.cpp
+++ llvm/trunk/lib/Transforms/Utils/FunctionComparator.cpp
@@ -710,7 +710,7 @@
return Res;
if (int Res = cmpNumbers(L->getDialect(), R->getDialect()))
return Res;
- llvm_unreachable("InlineAsm blocks were not uniqued.");
+ assert(L->getFunctionType() != R->getFunctionType());
return 0;
}
Index: llvm/trunk/test/Transforms/MergeFunc/inline-asm.ll
===================================================================
--- llvm/trunk/test/Transforms/MergeFunc/inline-asm.ll
+++ llvm/trunk/test/Transforms/MergeFunc/inline-asm.ll
@@ -0,0 +1,53 @@
+; RUN: opt -mergefunc -S < %s | FileCheck %s
+
+; CHECK-LABEL: @int_ptr_arg_different
+; CHECK-NEXT: call void asm
+
+; CHECK-LABEL: @int_ptr_arg_same
+; CHECK-NEXT: %2 = bitcast i32* %0 to float*
+; CHECK-NEXT: tail call void @float_ptr_arg_same(float* %2)
+
+; CHECK-LABEL: @int_ptr_null
+; CHECK-NEXT: tail call void @float_ptr_null()
+
+; Used to satisfy minimum size limit
+declare void @stuff()
+
+; Can be merged
+define void @float_ptr_null() {
+ call void asm "nop", "r"(float* null)
+ call void @stuff()
+ ret void
+}
+
+define void @int_ptr_null() {
+ call void asm "nop", "r"(i32* null)
+ call void @stuff()
+ ret void
+}
+
+; Can be merged (uses same argument differing by pointer type)
+define void @float_ptr_arg_same(float*) {
+ call void asm "nop", "r"(float* %0)
+ call void @stuff()
+ ret void
+}
+
+define void @int_ptr_arg_same(i32*) {
+ call void asm "nop", "r"(i32* %0)
+ call void @stuff()
+ ret void
+}
+
+; Can not be merged (uses different arguments)
+define void @float_ptr_arg_different(float*, float*) {
+ call void asm "nop", "r"(float* %0)
+ call void @stuff()
+ ret void
+}
+
+define void @int_ptr_arg_different(i32*, i32*) {
+ call void asm "nop", "r"(i32* %1)
+ call void @stuff()
+ ret void
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46495.146128.patch
Type: text/x-patch
Size: 2001 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180510/7dab8ca8/attachment.bin>
More information about the llvm-commits
mailing list