[PATCH] D55627: [ThinLTO] Remove dllimport attribute from locally defined symbols
Matthew Voss via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 19 11:11:00 PST 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL349667: [ThinLTO] Remove dllimport attribute from locally defined symbols (authored by ormris, committed by ).
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55627/new/
https://reviews.llvm.org/D55627
Files:
llvm/trunk/lib/LTO/LTO.cpp
llvm/trunk/test/LTO/Resolution/X86/local-def-dllimport.ll
Index: llvm/trunk/test/LTO/Resolution/X86/local-def-dllimport.ll
===================================================================
--- llvm/trunk/test/LTO/Resolution/X86/local-def-dllimport.ll
+++ llvm/trunk/test/LTO/Resolution/X86/local-def-dllimport.ll
@@ -0,0 +1,32 @@
+; RUN: opt -thinlto-bc -o %t0.bc %s
+; RUN: llvm-lto2 run -r %t0.bc,__imp_f,l \
+; RUN: -r %t0.bc,g,p \
+; RUN: -r %t0.bc,g,l \
+; RUN: -r %t0.bc,e,l \
+; RUN: -r %t0.bc,main,x \
+; RUN: -save-temps -o %t1 %t0.bc
+; RUN: llvm-dis %t1.1.3.import.bc -o - | FileCheck %s
+source_filename = "test.cpp"
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+$g = comdat any
+ at g = global i8 42, comdat, !type !0
+
+; CHECK: define
+; CHECK-NOT: dllimport
+; CHECK-SAME: @f
+define available_externally dllimport i8* @f() {
+ ret i8* @g
+}
+
+define i8* @e() {
+ ret i8* @g
+}
+
+define i32 @main() {
+ %1 = call i8* @f()
+ %2 = ptrtoint i8* %1 to i32
+ ret i32 %2
+}
+!0 = !{i32 0, !"typeid"}
Index: llvm/trunk/lib/LTO/LTO.cpp
===================================================================
--- llvm/trunk/lib/LTO/LTO.cpp
+++ llvm/trunk/lib/LTO/LTO.cpp
@@ -693,8 +693,12 @@
}
// Set the 'local' flag based on the linker resolution for this symbol.
- if (Res.FinalDefinitionInLinkageUnit)
+ if (Res.FinalDefinitionInLinkageUnit) {
GV->setDSOLocal(true);
+ if (GV->hasDLLImportStorageClass())
+ GV->setDLLStorageClass(GlobalValue::DLLStorageClassTypes::
+ DefaultStorageClass);
+ }
}
// Common resolution: collect the maximum size/alignment over all commons.
// We also record if we see an instance of a common as prevailing, so that
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55627.178923.patch
Type: text/x-patch
Size: 1836 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181219/e3feafa8/attachment.bin>
More information about the llvm-commits
mailing list