[llvm] r284040 - LTO: Use the correct mangler function in LTOCodeGenerator::applyScopeRestrictions().

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 12 13:12:19 PDT 2016


Author: pcc
Date: Wed Oct 12 15:12:19 2016
New Revision: 284040

URL: http://llvm.org/viewvc/llvm-project?rev=284040&view=rev
Log:
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

Added:
    llvm/trunk/test/LTO/X86/stdcall.ll
Modified:
    llvm/trunk/lib/LTO/LTOCodeGenerator.cpp

Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=284040&r1=284039&r2=284040&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Wed Oct 12 15:12:19 2016
@@ -410,6 +410,7 @@ void LTOCodeGenerator::applyScopeRestric
 
   // 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::applyScopeRestric
     // 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);
   };
 

Added: llvm/trunk/test/LTO/X86/stdcall.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LTO/X86/stdcall.ll?rev=284040&view=auto
==============================================================================
--- llvm/trunk/test/LTO/X86/stdcall.ll (added)
+++ llvm/trunk/test/LTO/X86/stdcall.ll Wed Oct 12 15:12:19 2016
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s > %t
+; RUN: llvm-lto -exported-symbol=_DllMain at 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 at 12
+define x86_stdcallcc i32 @DllMain(i8* %module, i32 %reason, i8* %reserved) {
+  ret i32 1
+}




More information about the llvm-commits mailing list