From 60e93a63900106cc800597bdab607267c403e337 Mon Sep 17 00:00:00 2001 From: Tanya Lattner Date: Fri, 8 Feb 2013 01:07:32 +0000 Subject: [PATCH] Use the target address space value when mangling names. llvm-svn: 174688 --- clang/lib/AST/ItaniumMangle.cpp | 3 ++- clang/test/CodeGenCXX/mangle.cpp | 3 +++ clang/test/CodeGenOpenCL/local.cl | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 792bda635419..dadf9d3cc52f 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -1668,7 +1668,8 @@ void CXXNameMangler::mangleQualifiers(Qualifiers Quals) { // where is a source name consisting of 'AS' // followed by the address space . SmallString<64> ASString; - ASString = "AS" + llvm::utostr_32(Quals.getAddressSpace()); + ASString = "AS" + llvm::utostr_32( + Context.getASTContext().getTargetAddressSpace(Quals.getAddressSpace())); Out << 'U' << ASString.size() << ASString; } diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index 5dad030d5ea2..e7955a8ed910 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -872,3 +872,6 @@ namespace test37 { func(foo().d); } } + +// CHECK: define void @_Z6ASfuncPU3AS3i +void ASfunc(__attribute__((address_space(3))) int* x) {} diff --git a/clang/test/CodeGenOpenCL/local.cl b/clang/test/CodeGenOpenCL/local.cl index 32fa7be0f764..b4bd0085dfad 100644 --- a/clang/test/CodeGenOpenCL/local.cl +++ b/clang/test/CodeGenOpenCL/local.cl @@ -5,3 +5,8 @@ __kernel void foo(void) { __local int i; ++i; } + +// CHECK: define void @_Z3barPU3AS2i +__kernel void __attribute__((__overloadable__)) bar(local int *x) { + *x = 5; +}