mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 17:29:19 +00:00
The reason this got reverted was that the @feat.00 symbol which was emitted for every TU became quoted, and on cygwin/mingw we use the gas assembler which couldn't handle the quotes. This commit fixes the problem by only emitting @feat.00 for win32, where we use clang -cc1as to assemble. gas would just drop this symbol anyway, so there is no loss there. With @feat.00 gone, there shouldn't be quoted symbols showing up on cygwin since it uses the Itanium ABI, which doesn't put these funny characters in symbols. > Because of win32 mangling, we produce symbol and section names with > funny characters in them, most notably @ characters. > > MC would choke on trying to parse its own assembly output. This patch addresses > that by: > > - Making @ trigger quoting of symbol names > - Also quote section names in the same way > - Just parse section names like other identifiers (to allow for quotes) > - Don't assume @ signifies a symbol variant if it is in a string. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192859 91177308-0d34-0410-b5e6-96231b3b80d8
25 lines
454 B
LLVM
25 lines
454 B
LLVM
; RUN: llc -mtriple="i386-pc-mingw32" < %s | FileCheck %s
|
|
; PR5851
|
|
|
|
%0 = type { void (...)* }
|
|
|
|
define internal x86_stdcallcc void @MyFunc() nounwind {
|
|
entry:
|
|
; CHECK: "_MyFunc@0":
|
|
; CHECK: ret
|
|
ret void
|
|
}
|
|
|
|
; PR14410
|
|
define x86_stdcallcc i32 @"\01DoNotMangle"(i32 %a) {
|
|
; CHECK: DoNotMangle:
|
|
; CHECK: ret $4
|
|
entry:
|
|
ret i32 %a
|
|
}
|
|
|
|
@B = global %0 { void (...)* bitcast (void ()* @MyFunc to void (...)*) }, align 4
|
|
; CHECK: _B:
|
|
; CHECK: .long "_MyFunc@0"
|
|
|