[llvm] r179889 - Do not mangle in MS-way the globals with magic \001 in the name.
Anton Korobeynikov
asl at math.spbu.ru
Fri Apr 19 14:20:57 PDT 2013
Author: asl
Date: Fri Apr 19 16:20:56 2013
New Revision: 179889
URL: http://llvm.org/viewvc/llvm-project?rev=179889&view=rev
Log:
Do not mangle in MS-way the globals with magic \001 in the name.
Based on the patch by David Nadlinger!
Modified:
llvm/trunk/lib/Target/Mangler.cpp
llvm/trunk/test/CodeGen/X86/fastcall-correct-mangling.ll
llvm/trunk/test/CodeGen/X86/stdcall.ll
Modified: llvm/trunk/lib/Target/Mangler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mangler.cpp?rev=179889&r1=179888&r2=179889&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mangler.cpp (original)
+++ llvm/trunk/lib/Target/Mangler.cpp Fri Apr 19 16:20:56 2013
@@ -188,7 +188,12 @@ void Mangler::getNameWithPrefix(SmallVec
// If this global has a name, handle it simply.
if (GV->hasName()) {
- getNameWithPrefix(OutName, GV->getName(), PrefixTy);
+ StringRef Name = GV->getName();
+ getNameWithPrefix(OutName, Name, PrefixTy);
+ // No need to do anything else if the global has the special "do not mangle"
+ // flag in the name.
+ if (Name[0] == 1)
+ return;
} else {
// Get the ID for the global, assigning a new one if we haven't got one
// already.
Modified: llvm/trunk/test/CodeGen/X86/fastcall-correct-mangling.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fastcall-correct-mangling.ll?rev=179889&r1=179888&r2=179889&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fastcall-correct-mangling.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fastcall-correct-mangling.ll Fri Apr 19 16:20:56 2013
@@ -7,3 +7,8 @@ define x86_fastcallcc void @func(i64 %X,
ret void
}
+define x86_fastcallcc i32 @"\01DoNotMangle"(i32 %a) {
+; CHECK: DoNotMangle:
+entry:
+ ret i32 %a
+}
Modified: llvm/trunk/test/CodeGen/X86/stdcall.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stdcall.ll?rev=179889&r1=179888&r2=179889&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/stdcall.ll (original)
+++ llvm/trunk/test/CodeGen/X86/stdcall.ll Fri Apr 19 16:20:56 2013
@@ -1,16 +1,24 @@
-; RUN: llc < %s | FileCheck %s
+; RUN: llc -mtriple="i386-pc-mingw32" < %s | FileCheck %s
; PR5851
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
-target triple = "i386-pc-mingw32"
-
%0 = type { void (...)* }
- at B = global %0 { void (...)* bitcast (void ()* @MyFunc to void (...)*) }, align 4
-; CHECK: _B:
-; CHECK: .long _MyFunc at 0
-
define internal x86_stdcallcc void @MyFunc() nounwind {
entry:
+; CHECK: MyFunc at 0:
+; CHECK: ret
ret void
}
+
+; PR14410
+define x86_stdcallcc i32 @"\01DoNotMangle"(i32 %a) {
+; CHECK: DoNotMangle:
+; CHECK: ret $4
+entry:
+ ret i32 %a
+}
+
+ at B = global %0 { void (...)* bitcast (void ()* @MyFunc to void (...)*) }, align 4
+; CHECK: _B:
+; CHECK: .long _MyFunc at 0
+
More information about the llvm-commits
mailing list