aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2016-10-12 20:12:19 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2016-10-12 20:12:19 +0000
commitd84bb1caf816e65200aa3e9863d4e7792f0163d8 (patch)
treee8a16ea3bf6ed18c8a73d22bc691486528d8af7b
parente0ace4ad680442c5e2eb1f99d9477afbd59139cb (diff)
LTO: Use the correct mangler function in LTOCodeGenerator::applyScopeRestrictions().
We need to use the overload of Mangler::getNameWithPrefix that takes a GlobalValue in order to mangle in the stdcall stack byte count for Windows targets. Differential Revision: https://reviews.llvm.org/D25529 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284040 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/LTO/LTOCodeGenerator.cpp4
-rw-r--r--test/LTO/X86/stdcall.ll10
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/LTO/LTOCodeGenerator.cpp b/lib/LTO/LTOCodeGenerator.cpp
index 81fb58a4e0a..a07707cd38a 100644
--- a/lib/LTO/LTOCodeGenerator.cpp
+++ b/lib/LTO/LTOCodeGenerator.cpp
@@ -410,6 +410,7 @@ void LTOCodeGenerator::applyScopeRestrictions() {
// Declare a callback for the internalize pass that will ask for every
// candidate GlobalValue if it can be internalized or not.
+ Mangler Mang;
SmallString<64> MangledName;
auto mustPreserveGV = [&](const GlobalValue &GV) -> bool {
// Unnamed globals can't be mangled, but they can't be preserved either.
@@ -421,8 +422,7 @@ void LTOCodeGenerator::applyScopeRestrictions() {
// underscore.
MangledName.clear();
MangledName.reserve(GV.getName().size() + 1);
- Mangler::getNameWithPrefix(MangledName, GV.getName(),
- MergedModule->getDataLayout());
+ Mang.getNameWithPrefix(MangledName, &GV, /*CannotUsePrivateLabel=*/false);
return MustPreserveSymbols.count(MangledName);
};
diff --git a/test/LTO/X86/stdcall.ll b/test/LTO/X86/stdcall.ll
new file mode 100644
index 00000000000..f7800d0212f
--- /dev/null
+++ b/test/LTO/X86/stdcall.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s > %t
+; RUN: llvm-lto -exported-symbol=_DllMain@12 -filetype=asm -o - %t | FileCheck %s
+
+target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
+target triple = "i386-pc-windows-msvc19.0.23918"
+
+; CHECK: .globl _DllMain@12
+define x86_stdcallcc i32 @DllMain(i8* %module, i32 %reason, i8* %reserved) {
+ ret i32 1
+}