OSDN Git Service

Make this test a bit stricter.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 23 Oct 2014 18:52:46 +0000 (18:52 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 23 Oct 2014 18:52:46 +0000 (18:52 +0000)
This now:
* Forces the linker to include the internal definition.
* Checks the full output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220495 91177308-0d34-0410-b5e6-96231b3b80d8

test/Linker/2003-05-31-LinkerRename.ll
test/Linker/Inputs/2003-05-31-LinkerRename.ll [new file with mode: 0644]

index 2e734be..0261fe3 100644 (file)
@@ -1,18 +1,23 @@
-; The funcresolve pass will (intentionally) llvm-link an _internal_ function 
-; body with an external declaration.  Because of this, if we LINK an internal 
-; function body into a program that already has an external declaration for 
-; the function name, we must rename the internal function to something that 
-; does not conflict.
-
-; RUN: echo " define internal i32 @foo() { ret i32 7 } " | llvm-as > %t.1.bc
-; RUN: llvm-as < %s > %t.2.bc
+; RUN: llvm-as %S/Inputs/2003-05-31-LinkerRename.ll -o %t.1.bc
+; RUN: llvm-as  %s -o %t.2.bc
 ; RUN: llvm-link %t.1.bc %t.2.bc -S | FileCheck %s
-; CHECK: internal {{.*}} @foo{{[0-9]}}(
 
-declare i32 @foo() 
+; CHECK: @bar = global i32 ()* @foo2
+
+; CHECK:      define internal i32 @foo2() {
+; CHECK-NEXT:   ret i32 7
+; CHECK-NEXT: }
+
+; CHECK: declare i32 @foo()
 
-define i32 @test() { 
+; CHECK:      define i32 @test() {
+; CHECK-NEXT:   %X = call i32 @foo()
+; CHECK-NEXT:   ret i32 %X
+; CHECK-NEXT: }
+
+declare i32 @foo()
+
+define i32 @test() {
   %X = call i32 @foo()
   ret i32 %X
 }
-
diff --git a/test/Linker/Inputs/2003-05-31-LinkerRename.ll b/test/Linker/Inputs/2003-05-31-LinkerRename.ll
new file mode 100644 (file)
index 0000000..dcd0bf5
--- /dev/null
@@ -0,0 +1,5 @@
+@bar = global i32()* @foo
+
+define internal i32 @foo() {
+  ret i32 7
+}