зеркало из https://github.com/microsoft/clang-1.git
Do not use IR marker for LLVM intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129001 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
0ac2cf4d28
Коммит
6931743e29
|
@ -334,10 +334,11 @@ void CXXNameMangler::mangle(const NamedDecl *D, llvm::StringRef Prefix) {
|
|||
// another has a "\01foo". That is known to happen on ELF with the
|
||||
// tricks normally used for producing aliases (PR9177). Fortunately the
|
||||
// llvm mangler on ELF is a nop, so we can just avoid adding the \01
|
||||
// marker.
|
||||
// marker. We also avoid adding the marker if this is an alias for an
|
||||
// LLVM intrinsic.
|
||||
llvm::StringRef UserLabelPrefix =
|
||||
getASTContext().Target.getUserLabelPrefix();
|
||||
if (!UserLabelPrefix.empty())
|
||||
if (!UserLabelPrefix.empty() && !ALA->getLabel().startswith("llvm."))
|
||||
Out << '\01'; // LLVM IR Marker for __asm("foo")
|
||||
|
||||
Out << ALA->getLabel();
|
||||
|
|
|
@ -63,3 +63,12 @@ int func(void) {
|
|||
// CHECK: @_Z4foo9Dv4_f
|
||||
typedef __attribute__(( vector_size(16) )) float float4;
|
||||
void __attribute__((__overloadable__)) foo9(float4 f) {}
|
||||
|
||||
// Intrinsic calls.
|
||||
extern int llvm_cas(volatile int*, int, int)
|
||||
__asm__("llvm.atomic.cmp.swap.i32.p0i32");
|
||||
|
||||
int foo10(volatile int* add, int from, int to) {
|
||||
// CHECK: call i32 @llvm.atomic.cmp.swap.i32.p0i32
|
||||
return llvm_cas(add, from, to);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче