Index: lib/AST/ItaniumMangle.cpp =================================================================== --- lib/AST/ItaniumMangle.cpp +++ lib/AST/ItaniumMangle.cpp @@ -1796,6 +1796,7 @@ case LangAS::opencl_global: ASString = "CLglobal"; break; case LangAS::opencl_local: ASString = "CLlocal"; break; case LangAS::opencl_constant: ASString = "CLconstant"; break; + case LangAS::opencl_generic: ASString = "CLgeneric"; break; // ::= "CU" [ "device" | "constant" | "shared" ] case LangAS::cuda_device: ASString = "CUdevice"; break; case LangAS::cuda_constant: ASString = "CUconstant"; break; Index: test/CodeGenOpenCL/generic_mangling.cl =================================================================== --- test/CodeGenOpenCL/generic_mangling.cl +++ test/CodeGenOpenCL/generic_mangling.cl @@ -0,0 +1,9 @@ +// RUN: %clang -Xclang -ffake-address-space-map -emit-llvm -ffp-contract=off -x cl -Xclang -cl-std=CL2.0 -o - -c %s + +bool __attribute__((__overloadable__)) atomic_compare_exchange_strong ( volatile __global atomic_int *object, + int *expected, + int desired) +{ + return atomic_compare_exchange_strong_explicit( + object, expected, desired, 1, 2); +}