[llvm] r265333 - Beef up some dllexport tests.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 4 12:10:56 PDT 2016


Author: silvas
Date: Mon Apr  4 14:10:55 2016
New Revision: 265333

URL: http://llvm.org/viewvc/llvm-project?rev=265333&view=rev
Log:
Beef up some dllexport tests.

Adds some dllexport tests to verify that:
  - Variables in bss are exported appropriately
  - Non-dllexport symbols aliased to dllexport symbols are not exported
  - Symbols declared as dllexport but are not defined are not exported

We plan to enable dllimport/dllexport support for the PS4, and these
additional tests are for points we noticed in our internal testing.

Patch by Warren Ristow!

Differential Revision: http://reviews.llvm.org/D18682

Modified:
    llvm/trunk/test/CodeGen/X86/dllexport-x86_64.ll

Modified: llvm/trunk/test/CodeGen/X86/dllexport-x86_64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dllexport-x86_64.ll?rev=265333&r1=265332&r2=265333&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/dllexport-x86_64.ll (original)
+++ llvm/trunk/test/CodeGen/X86/dllexport-x86_64.ll Mon Apr  4 14:10:55 2016
@@ -52,11 +52,19 @@ define weak_odr dllexport void @weak1()
 ; CHECK: .globl WeakVar2
 @WeakVar2 = weak_odr dllexport unnamed_addr constant i32 1
 
+; CHECK: .bss
+; CHECK: .globl WeakVar3
+ at WeakVar3 = weak_odr dllexport global i32 0, align 4
+
 
 ; CHECK: .globl alias
 ; CHECK: alias = notExported
 @alias = dllexport alias void(), void()* @notExported
 
+; CHECK: .globl aliasNotExported
+; CHECK: aliasNotExported = f1
+ at aliasNotExported = alias void(), void()* @f1
+
 ; CHECK: .globl alias2
 ; CHECK: alias2 = f1
 @alias2 = dllexport alias void(), void()* @f1
@@ -72,10 +80,22 @@ define weak_odr dllexport void @weak1()
 @blob = global [6 x i8] c"\B8*\00\00\00\C3", section ".text", align 16
 @blob_alias = dllexport alias i32 (), bitcast ([6 x i8]* @blob to i32 ()*)
 
-; Verify item that should not be exported does not appear in the export table.
+ at exportedButNotDefinedVariable = external dllexport global i32
+declare dllexport void @exportedButNotDefinedFunction()
+define void @foo() {
+entry:
+  store i32 4, i32* @exportedButNotDefinedVariable, align 4
+  call void @exportedButNotDefinedFunction()
+  ret void
+}
+
+; Verify items that should not be exported do not appear in the export table.
 ; We use a separate check prefix to avoid confusion between -NOT and -SAME.
 ; NOTEXPORTED: .section .drectve
 ; NOTEXPORTED-NOT: notExported
+; NOTEXPORTED-NOT: aliasNotExported
+; NOTEXPORTED-NOT: exportedButNotDefinedVariable
+; NOTEXPORTED-NOT: exportedButNotDefinedFunction
 
 ; CHECK: .section .drectve
 ; WIN32: /EXPORT:f1
@@ -88,6 +108,7 @@ define weak_odr dllexport void @weak1()
 ; WIN32-SAME: /EXPORT:Var3,DATA
 ; WIN32-SAME: /EXPORT:WeakVar1,DATA
 ; WIN32-SAME: /EXPORT:WeakVar2,DATA
+; WIN32-SAME: /EXPORT:WeakVar3,DATA
 ; WIN32-SAME: /EXPORT:alias
 ; WIN32-SAME: /EXPORT:alias2
 ; WIN32-SAME: /EXPORT:alias3
@@ -103,6 +124,7 @@ define weak_odr dllexport void @weak1()
 ; MINGW-SAME: -export:Var3,data
 ; MINGW-SAME: -export:WeakVar1,data
 ; MINGW-SAME: -export:WeakVar2,data
+; MINGW-SAME: -export:WeakVar3,data
 ; MINGW-SAME: -export:alias
 ; MINGW-SAME: -export:alias2
 ; MINGW-SAME: -export:alias3




More information about the llvm-commits mailing list