[clang] [clang][sycl] Remove support for global_device and global_host AS (PR #194423)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 27 10:47:14 PDT 2026
https://github.com/elizabethandrews created https://github.com/llvm/llvm-project/pull/194423
Attributes `__attribute__((opencl_global_device))` and `__attribute__((opencl_global_host))` were implemented to enable better performance for USM pointers on FPGAs. Since we do not plan to support FPGAs, these can be removed.
>From 1b595be438b991690bba3d0d2ed2141b3d6b4df7 Mon Sep 17 00:00:00 2001
From: Elizabeth Andrews <elizabeth.andrews at intel.com>
Date: Mon, 27 Apr 2026 09:28:02 -0700
Subject: [PATCH] [clang][sycl] Remove support for global_device and
global_host address spaces
Atributes __attribute__((opencl_global_device)) and __attribute__((opencl_global_host))
were implemented to enable better performance for USM pointers on
FPGAs. Since we do not plan to support FPGAs, these can be removed.
---
clang/docs/SYCLSupport.rst | 12 ----
clang/include/clang/Basic/AddressSpaces.h | 4 --
clang/include/clang/Basic/Attr.td | 10 ---
clang/include/clang/Basic/AttrDocs.td | 25 -------
clang/include/clang/Sema/ParsedAttr.h | 8 ---
clang/lib/AST/ItaniumMangle.cpp | 12 ----
clang/lib/AST/MicrosoftMangle.cpp | 8 +--
clang/lib/AST/Type.cpp | 10 +--
clang/lib/AST/TypePrinter.cpp | 8 ---
clang/lib/Basic/TargetInfo.cpp | 32 ++++-----
clang/lib/Basic/Targets/AArch64.h | 4 --
clang/lib/Basic/Targets/AMDGPU.cpp | 8 ---
clang/lib/Basic/Targets/DirectX.h | 4 --
clang/lib/Basic/Targets/NVPTX.h | 4 --
clang/lib/Basic/Targets/SPIR.h | 8 ---
clang/lib/Basic/Targets/SystemZ.h | 4 --
clang/lib/Basic/Targets/TCE.h | 4 --
clang/lib/Basic/Targets/WebAssembly.h | 4 --
clang/lib/Basic/Targets/X86.h | 4 --
clang/lib/CIR/CodeGen/CIRGenModule.cpp | 3 +-
clang/lib/CIR/Dialect/IR/CIRTypes.cpp | 4 --
clang/lib/CodeGen/CodeGenModule.cpp | 5 --
clang/lib/Sema/ParsedAttr.cpp | 2 -
clang/lib/Sema/SemaType.cpp | 2 -
.../AST/language_address_space_attribute.cpp | 18 -----
.../test/CodeGenCXX/mangle-address-space.cpp | 12 ----
.../address-spaces-conversions.cl | 28 +-------
clang/test/CodeGenOpenCL/address-spaces.cl | 8 ---
.../CodeGenSYCL/address-space-conversions.cpp | 13 ----
.../amd-address-space-conversions.cpp | 10 ---
.../cuda-address-space-conversions.cpp | 14 +---
.../usm-address-spaces-conversions.cl | 67 -------------------
.../SemaSYCL/address-space-conversions.cpp | 13 ----
.../SemaTemplate/address_space-dependent.cpp | 2 +-
34 files changed, 21 insertions(+), 353 deletions(-)
delete mode 100644 clang/test/SemaOpenCL/usm-address-spaces-conversions.cl
diff --git a/clang/docs/SYCLSupport.rst b/clang/docs/SYCLSupport.rst
index 364d95a31047e..e7b935dfe9ccc 100644
--- a/clang/docs/SYCLSupport.rst
+++ b/clang/docs/SYCLSupport.rst
@@ -40,12 +40,6 @@ following conversions:
space-attributed type
- implicit conversions from the address space-attributed type to the default
address space
-- explicit conversions to/from the global address space from/to the
- ``__attribute__((opencl_global_device))`` or
- ``__attribute__((opencl_global_host))`` address space-attributed type
-- implicit conversions from the ``__attribute__((opencl_global_device))`` or
- ``__attribute__((opencl_global_host))`` address space-attributed type to the
- global address space
All named address spaces are disjoint and sub-sets of default address space.
@@ -103,10 +97,6 @@ space attributes for pointers:
- SYCL address_space enumeration
* - ``__attribute__((opencl_global))``
- global_space, constant_space
- * - ``__attribute__((opencl_global_device))``
- - global_space
- * - ``__attribute__((opencl_global_host))``
- - global_space
* - ``__attribute__((opencl_local))``
- local_space
* - ``__attribute__((opencl_private))``
@@ -115,5 +105,3 @@ space attributes for pointers:
.. code-block:: C++
- //TODO: add support for __attribute__((opencl_global_host)) and __attribute__((opencl_global_device)).
-
diff --git a/clang/include/clang/Basic/AddressSpaces.h b/clang/include/clang/Basic/AddressSpaces.h
index a941805423bca..8e4844dabde87 100644
--- a/clang/include/clang/Basic/AddressSpaces.h
+++ b/clang/include/clang/Basic/AddressSpaces.h
@@ -36,8 +36,6 @@ enum class LangAS : unsigned {
opencl_constant,
opencl_private,
opencl_generic,
- opencl_global_device,
- opencl_global_host,
// CUDA specific address spaces.
cuda_device,
@@ -46,8 +44,6 @@ enum class LangAS : unsigned {
// SYCL specific address spaces.
sycl_global,
- sycl_global_device,
- sycl_global_host,
sycl_local,
sycl_private,
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
index 97536ac7a1966..5a8a7ef2bb0a9 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -1820,16 +1820,6 @@ def OpenCLGlobalAddressSpace : TypeAttr {
let Documentation = [OpenCLAddressSpaceGlobalDocs];
}
-def OpenCLGlobalDeviceAddressSpace : TypeAttr {
- let Spellings = [Clang<"opencl_global_device">];
- let Documentation = [OpenCLAddressSpaceGlobalExtDocs];
-}
-
-def OpenCLGlobalHostAddressSpace : TypeAttr {
- let Spellings = [Clang<"opencl_global_host">];
- let Documentation = [OpenCLAddressSpaceGlobalExtDocs];
-}
-
def OpenCLLocalAddressSpace : TypeAttr {
let Spellings = [CustomKeyword<"__local">, CustomKeyword<"local">,
Clang<"opencl_local">];
diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td
index c956ac426daa4..22aaf7646cbfa 100644
--- a/clang/include/clang/Basic/AttrDocs.td
+++ b/clang/include/clang/Basic/AttrDocs.td
@@ -5076,31 +5076,6 @@ scope) variables and static local variable as well.
}];
}
-def OpenCLAddressSpaceGlobalExtDocs : Documentation {
- let Category = DocOpenCLAddressSpaces;
- let Heading = "[[clang::opencl_global_device]], [[clang::opencl_global_host]]";
- let Content = [{
-The ``global_device`` and ``global_host`` address space attributes specify that
-an object is allocated in global memory on the device/host. It helps to
-distinguish USM (Unified Shared Memory) pointers that access global device
-memory from those that access global host memory. These new address spaces are
-a subset of the ``__global/opencl_global`` address space, the full address space
-set model for OpenCL 2.0 with the extension looks as follows:
-
- | generic->global->host
- | ->device
- | ->private
- | ->local
- | constant
-
-As ``global_device`` and ``global_host`` are a subset of
-``__global/opencl_global`` address spaces it is allowed to convert
-``global_device`` and ``global_host`` address spaces to
-``__global/opencl_global`` address spaces (following ISO/IEC TR 18037 5.1.3
-"Address space nesting and rules for pointers").
- }];
-}
-
def OpenCLAddressSpaceLocalDocs : Documentation {
let Category = DocOpenCLAddressSpaces;
let Heading = "__local, local, [[clang::opencl_local]]";
diff --git a/clang/include/clang/Sema/ParsedAttr.h b/clang/include/clang/Sema/ParsedAttr.h
index 5387f9fad6cd2..4f82e9f0adbbf 100644
--- a/clang/include/clang/Sema/ParsedAttr.h
+++ b/clang/include/clang/Sema/ParsedAttr.h
@@ -561,10 +561,6 @@ class ParsedAttr final
return LangAS::opencl_constant;
case ParsedAttr::AT_OpenCLGlobalAddressSpace:
return LangAS::opencl_global;
- case ParsedAttr::AT_OpenCLGlobalDeviceAddressSpace:
- return LangAS::opencl_global_device;
- case ParsedAttr::AT_OpenCLGlobalHostAddressSpace:
- return LangAS::opencl_global_host;
case ParsedAttr::AT_OpenCLLocalAddressSpace:
return LangAS::opencl_local;
case ParsedAttr::AT_OpenCLPrivateAddressSpace:
@@ -582,10 +578,6 @@ class ParsedAttr final
switch (getKind()) {
case ParsedAttr::AT_OpenCLGlobalAddressSpace:
return LangAS::sycl_global;
- case ParsedAttr::AT_OpenCLGlobalDeviceAddressSpace:
- return LangAS::sycl_global_device;
- case ParsedAttr::AT_OpenCLGlobalHostAddressSpace:
- return LangAS::sycl_global_host;
case ParsedAttr::AT_OpenCLLocalAddressSpace:
return LangAS::sycl_local;
case ParsedAttr::AT_OpenCLPrivateAddressSpace:
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index f58faa03bfa8c..d6187f30b1b48 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -2803,12 +2803,6 @@ void CXXNameMangler::mangleQualifiers(Qualifiers Quals, const DependentAddressSp
case LangAS::opencl_global:
ASString = "CLglobal";
break;
- case LangAS::opencl_global_device:
- ASString = "CLdevice";
- break;
- case LangAS::opencl_global_host:
- ASString = "CLhost";
- break;
case LangAS::opencl_local:
ASString = "CLlocal";
break;
@@ -2826,12 +2820,6 @@ void CXXNameMangler::mangleQualifiers(Qualifiers Quals, const DependentAddressSp
case LangAS::sycl_global:
ASString = "SYglobal";
break;
- case LangAS::sycl_global_device:
- ASString = "SYdevice";
- break;
- case LangAS::sycl_global_host:
- ASString = "SYhost";
- break;
case LangAS::sycl_local:
ASString = "SYlocal";
break;
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp
index 20c52969d7024..8a36cabec57a8 100644
--- a/clang/lib/AST/MicrosoftMangle.cpp
+++ b/clang/lib/AST/MicrosoftMangle.cpp
@@ -2453,7 +2453,7 @@ void MicrosoftCXXNameMangler::mangleAddressSpaceType(QualType T,
// where:
// <language_addr_space> ::= <OpenCL-addrspace> | <CUDA-addrspace>
// <OpenCL-addrspace> ::= "CL" [ "global" | "local" | "constant" |
- // "private"| "generic" | "device" | "host" ]
+ // "private"| "generic" ]
// <CUDA-addrspace> ::= "CU" [ "device" | "constant" | "shared" ]
// Note that the above were chosen to match the Itanium mangling for this.
//
@@ -2477,12 +2477,6 @@ void MicrosoftCXXNameMangler::mangleAddressSpaceType(QualType T,
case LangAS::opencl_global:
Extra.mangleSourceName("_ASCLglobal");
break;
- case LangAS::opencl_global_device:
- Extra.mangleSourceName("_ASCLdevice");
- break;
- case LangAS::opencl_global_host:
- Extra.mangleSourceName("_ASCLhost");
- break;
case LangAS::opencl_local:
Extra.mangleSourceName("_ASCLlocal");
break;
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp
index 6c295c1a9c409..811b149196cd0 100644
--- a/clang/lib/AST/Type.cpp
+++ b/clang/lib/AST/Type.cpp
@@ -74,21 +74,13 @@ bool Qualifiers::isTargetAddressSpaceSupersetOf(LangAS A, LangAS B,
// In OpenCLC v2.0 s6.5.5: every address space except for __constant can be
// used as __generic.
return (A == LangAS::opencl_generic && B != LangAS::opencl_constant) ||
- // We also define global_device and global_host address spaces,
- // to distinguish global pointers allocated on host from pointers
- // allocated on device, which are a subset of __global.
- (A == LangAS::opencl_global && (B == LangAS::opencl_global_device ||
- B == LangAS::opencl_global_host)) ||
- (A == LangAS::sycl_global &&
- (B == LangAS::sycl_global_device || B == LangAS::sycl_global_host)) ||
// Consider pointer size address spaces to be equivalent to default.
((isPtrSizeAddressSpace(A) || A == LangAS::Default) &&
(isPtrSizeAddressSpace(B) || B == LangAS::Default)) ||
// Default is a superset of SYCL address spaces.
(A == LangAS::Default &&
(B == LangAS::sycl_private || B == LangAS::sycl_local ||
- B == LangAS::sycl_global || B == LangAS::sycl_global_device ||
- B == LangAS::sycl_global_host)) ||
+ B == LangAS::sycl_global)) ||
// In HIP device compilation, any cuda address space is allowed
// to implicitly cast into the default address space.
(A == LangAS::Default &&
diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp
index 80f5b90ba35c4..737508009f3ad 100644
--- a/clang/lib/AST/TypePrinter.cpp
+++ b/clang/lib/AST/TypePrinter.cpp
@@ -1994,8 +1994,6 @@ void TypePrinter::printAttributedAfter(const AttributedType *T,
case attr::OpenCLPrivateAddressSpace:
case attr::OpenCLGlobalAddressSpace:
- case attr::OpenCLGlobalDeviceAddressSpace:
- case attr::OpenCLGlobalHostAddressSpace:
case attr::OpenCLLocalAddressSpace:
case attr::OpenCLConstantAddressSpace:
case attr::OpenCLGenericAddressSpace:
@@ -2679,12 +2677,6 @@ std::string Qualifiers::getAddrSpaceAsString(LangAS AS) {
return "__constant";
case LangAS::opencl_generic:
return "__generic";
- case LangAS::opencl_global_device:
- case LangAS::sycl_global_device:
- return "__global_device";
- case LangAS::opencl_global_host:
- case LangAS::sycl_global_host:
- return "__global_host";
case LangAS::cuda_device:
return "__device__";
case LangAS::cuda_constant:
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp
index e6ae89e0948c5..aedd19989c47f 100644
--- a/clang/lib/Basic/TargetInfo.cpp
+++ b/clang/lib/Basic/TargetInfo.cpp
@@ -34,27 +34,23 @@ static const LangASMap FakeAddrSpaceMap = {
2, // opencl_constant
0, // opencl_private
4, // opencl_generic
- 5, // opencl_global_device
- 6, // opencl_global_host
- 7, // cuda_device
- 8, // cuda_constant
- 9, // cuda_shared
+ 5, // cuda_device
+ 6, // cuda_constant
+ 7, // cuda_shared
1, // sycl_global
- 5, // sycl_global_device
- 6, // sycl_global_host
3, // sycl_local
0, // sycl_private
- 10, // ptr32_sptr
- 11, // ptr32_uptr
- 12, // ptr64
- 13, // hlsl_groupshared
- 14, // hlsl_constant
- 15, // hlsl_private
- 16, // hlsl_device
- 17, // hlsl_input
- 18, // hlsl_output
- 19, // hlsl_push_constant
- 20, // wasm_funcref
+ 8, // ptr32_sptr
+ 9, // ptr32_uptr
+ 10, // ptr64
+ 11, // hlsl_groupshared
+ 12, // hlsl_constant
+ 13, // hlsl_private
+ 14, // hlsl_device
+ 15, // hlsl_input
+ 16, // hlsl_output
+ 17, // hlsl_push_constant
+ 18, // wasm_funcref
};
// TargetInfo Constructor.
diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h
index 0a29bad81939b..daccfa716d15d 100644
--- a/clang/lib/Basic/Targets/AArch64.h
+++ b/clang/lib/Basic/Targets/AArch64.h
@@ -31,14 +31,10 @@ static const unsigned ARM64AddrSpaceMap[] = {
0, // opencl_constant
0, // opencl_private
0, // opencl_generic
- 0, // opencl_global_device
- 0, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
static_cast<unsigned>(AArch64AddrSpace::ptr32_sptr),
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 48ba5d94df581..69db2bbed526d 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -33,14 +33,10 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsGenMap = {
llvm::AMDGPUAS::CONSTANT_ADDRESS, // opencl_constant
llvm::AMDGPUAS::PRIVATE_ADDRESS, // opencl_private
llvm::AMDGPUAS::FLAT_ADDRESS, // opencl_generic
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // opencl_global_device
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // opencl_global_host
llvm::AMDGPUAS::GLOBAL_ADDRESS, // cuda_device
llvm::AMDGPUAS::CONSTANT_ADDRESS, // cuda_constant
llvm::AMDGPUAS::LOCAL_ADDRESS, // cuda_shared
llvm::AMDGPUAS::GLOBAL_ADDRESS, // sycl_global
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // sycl_global_device
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // sycl_global_host
llvm::AMDGPUAS::LOCAL_ADDRESS, // sycl_local
llvm::AMDGPUAS::PRIVATE_ADDRESS, // sycl_private
llvm::AMDGPUAS::FLAT_ADDRESS, // ptr32_sptr
@@ -64,15 +60,11 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsPrivMap = {
llvm::AMDGPUAS::CONSTANT_ADDRESS, // opencl_constant
llvm::AMDGPUAS::PRIVATE_ADDRESS, // opencl_private
llvm::AMDGPUAS::FLAT_ADDRESS, // opencl_generic
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // opencl_global_device
- llvm::AMDGPUAS::GLOBAL_ADDRESS, // opencl_global_host
llvm::AMDGPUAS::GLOBAL_ADDRESS, // cuda_device
llvm::AMDGPUAS::CONSTANT_ADDRESS, // cuda_constant
llvm::AMDGPUAS::LOCAL_ADDRESS, // cuda_shared
// SYCL address space values for this map are dummy
llvm::AMDGPUAS::FLAT_ADDRESS, // sycl_global
- llvm::AMDGPUAS::FLAT_ADDRESS, // sycl_global_device
- llvm::AMDGPUAS::FLAT_ADDRESS, // sycl_global_host
llvm::AMDGPUAS::FLAT_ADDRESS, // sycl_local
llvm::AMDGPUAS::FLAT_ADDRESS, // sycl_private
llvm::AMDGPUAS::FLAT_ADDRESS, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/DirectX.h b/clang/lib/Basic/Targets/DirectX.h
index 8b21b86bac264..b306153cf73b5 100644
--- a/clang/lib/Basic/Targets/DirectX.h
+++ b/clang/lib/Basic/Targets/DirectX.h
@@ -27,15 +27,11 @@ static const unsigned DirectXAddrSpaceMap[] = {
2, // opencl_constant
0, // opencl_private
4, // opencl_generic
- 5, // opencl_global_device
- 6, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
// SYCL address space values for this map are dummy
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h
index 69ee20f38343b..f9996eab83789 100644
--- a/clang/lib/Basic/Targets/NVPTX.h
+++ b/clang/lib/Basic/Targets/NVPTX.h
@@ -32,14 +32,10 @@ static const unsigned NVPTXAddrSpaceMap[] = {
0, // opencl_private
// FIXME: generic has to be added to the target
0, // opencl_generic
- 1, // opencl_global_device
- 1, // opencl_global_host
1, // cuda_device
4, // cuda_constant
3, // cuda_shared
1, // sycl_global
- 1, // sycl_global_device
- 1, // sycl_global_host
3, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h
index ebf0e8122edfe..3f77034fb0f13 100644
--- a/clang/lib/Basic/Targets/SPIR.h
+++ b/clang/lib/Basic/Targets/SPIR.h
@@ -35,15 +35,11 @@ static const unsigned SPIRDefIsPrivMap[] = {
2, // opencl_constant
0, // opencl_private
4, // opencl_generic
- 5, // opencl_global_device
- 6, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
// SYCL address space values for this map are dummy
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
0, // ptr32_sptr
@@ -69,8 +65,6 @@ static const unsigned SPIRDefIsGenMap[] = {
2, // opencl_constant
0, // opencl_private
4, // opencl_generic
- 5, // opencl_global_device
- 6, // opencl_global_host
// cuda_* address space mapping is intended for HIPSPV (HIP to SPIR-V
// translation). This mapping is enabled when the language mode is HIP.
1, // cuda_device
@@ -80,8 +74,6 @@ static const unsigned SPIRDefIsGenMap[] = {
1, // cuda_constant
3, // cuda_shared
1, // sycl_global
- 5, // sycl_global_device
- 6, // sycl_global_host
3, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/SystemZ.h b/clang/lib/Basic/Targets/SystemZ.h
index 00f7d7a055b24..b101a0d811956 100644
--- a/clang/lib/Basic/Targets/SystemZ.h
+++ b/clang/lib/Basic/Targets/SystemZ.h
@@ -28,14 +28,10 @@ static const unsigned ZOSAddressMap[] = {
0, // opencl_constant
0, // opencl_private
0, // opencl_generic
- 0, // opencl_global_device
- 0, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/TCE.h b/clang/lib/Basic/Targets/TCE.h
index 1360298de9794..f220e5fc319e6 100644
--- a/clang/lib/Basic/Targets/TCE.h
+++ b/clang/lib/Basic/Targets/TCE.h
@@ -35,16 +35,12 @@ static const unsigned TCEOpenCLAddrSpaceMap[] = {
3, // opencl_local
2, // opencl_constant
0, // opencl_private
- 1, // opencl_global_device
- 1, // opencl_global_host
// FIXME: generic has to be added to the target
0, // opencl_generic
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/WebAssembly.h b/clang/lib/Basic/Targets/WebAssembly.h
index 808342485cad0..f991fc74a542e 100644
--- a/clang/lib/Basic/Targets/WebAssembly.h
+++ b/clang/lib/Basic/Targets/WebAssembly.h
@@ -28,14 +28,10 @@ static const unsigned WebAssemblyAddrSpaceMap[] = {
0, // opencl_constant
0, // opencl_private
0, // opencl_generic
- 0, // opencl_global_device
- 0, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
0, // ptr32_sptr
diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h
index c7afcc7c86053..5ba7992e393e4 100644
--- a/clang/lib/Basic/Targets/X86.h
+++ b/clang/lib/Basic/Targets/X86.h
@@ -32,14 +32,10 @@ static const unsigned X86AddrSpaceMap[] = {
0, // opencl_constant
0, // opencl_private
0, // opencl_generic
- 0, // opencl_global_device
- 0, // opencl_global_host
0, // cuda_device
0, // cuda_constant
0, // cuda_shared
0, // sycl_global
- 0, // sycl_global_device
- 0, // sycl_global_host
0, // sycl_local
0, // sycl_private
270, // ptr32_sptr
diff --git a/clang/lib/CIR/CodeGen/CIRGenModule.cpp b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
index e3c8dd270d964..249ade108c72f 100644
--- a/clang/lib/CIR/CodeGen/CIRGenModule.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
@@ -740,8 +740,7 @@ std::optional<cir::SourceLanguage> CIRGenModule::getCIRSourceLanguage() const {
LangAS CIRGenModule::getGlobalVarAddressSpace(const VarDecl *d) {
if (langOpts.OpenCL) {
LangAS as = d ? d->getType().getAddressSpace() : LangAS::opencl_global;
- assert(as == LangAS::opencl_global || as == LangAS::opencl_global_device ||
- as == LangAS::opencl_global_host || as == LangAS::opencl_constant ||
+ assert(as == LangAS::opencl_global || as == LangAS::opencl_constant ||
as == LangAS::opencl_local || as >= LangAS::FirstTargetAddressSpace);
return as;
}
diff --git a/clang/lib/CIR/Dialect/IR/CIRTypes.cpp b/clang/lib/CIR/Dialect/IR/CIRTypes.cpp
index 1ceeea954daa2..ffa8cc570a34e 100644
--- a/clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+++ b/clang/lib/CIR/Dialect/IR/CIRTypes.cpp
@@ -1039,11 +1039,7 @@ cir::LangAddressSpace cir::toCIRLangAddressSpace(clang::LangAS langAS) {
return LangAddressSpace::OffloadPrivate;
case LangAS::opencl_generic:
return LangAddressSpace::OffloadGeneric;
- case LangAS::opencl_global_device:
- case LangAS::opencl_global_host:
case LangAS::sycl_global:
- case LangAS::sycl_global_device:
- case LangAS::sycl_global_host:
case LangAS::sycl_local:
case LangAS::sycl_private:
case LangAS::ptr32_sptr:
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 55ea2b413f101..66f91edc3a8da 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -2631,9 +2631,6 @@ static unsigned ArgInfoAddressSpace(LangAS AS) {
return 3;
case LangAS::opencl_generic:
return 4; // Not in SPIR 2.0 specs.
- case LangAS::opencl_global_device:
- return 5;
- case LangAS::opencl_global_host:
return 6;
default:
return 0; // Assume private.
@@ -6012,8 +6009,6 @@ LangAS CodeGenModule::GetGlobalVarAddressSpace(const VarDecl *D) {
if (LangOpts.OpenCL) {
LangAS AS = D ? D->getType().getAddressSpace() : LangAS::opencl_global;
assert(AS == LangAS::opencl_global ||
- AS == LangAS::opencl_global_device ||
- AS == LangAS::opencl_global_host ||
AS == LangAS::opencl_constant ||
AS == LangAS::opencl_local ||
AS >= LangAS::FirstTargetAddressSpace);
diff --git a/clang/lib/Sema/ParsedAttr.cpp b/clang/lib/Sema/ParsedAttr.cpp
index 2b5ad33ad7b29..9fdf722bee789 100644
--- a/clang/lib/Sema/ParsedAttr.cpp
+++ b/clang/lib/Sema/ParsedAttr.cpp
@@ -230,8 +230,6 @@ bool ParsedAttr::slidesFromDeclToDeclSpecLegacyBehavior() const {
case AT_AddressSpace:
case AT_OpenCLPrivateAddressSpace:
case AT_OpenCLGlobalAddressSpace:
- case AT_OpenCLGlobalDeviceAddressSpace:
- case AT_OpenCLGlobalHostAddressSpace:
case AT_OpenCLLocalAddressSpace:
case AT_OpenCLConstantAddressSpace:
case AT_OpenCLGenericAddressSpace:
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 3dc8ceb70f3cd..399490b57de9f 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -9094,8 +9094,6 @@ static void processTypeAttrs(TypeProcessingState &state, QualType &type,
break;
case ParsedAttr::AT_OpenCLPrivateAddressSpace:
case ParsedAttr::AT_OpenCLGlobalAddressSpace:
- case ParsedAttr::AT_OpenCLGlobalDeviceAddressSpace:
- case ParsedAttr::AT_OpenCLGlobalHostAddressSpace:
case ParsedAttr::AT_OpenCLLocalAddressSpace:
case ParsedAttr::AT_OpenCLConstantAddressSpace:
case ParsedAttr::AT_OpenCLGenericAddressSpace:
diff --git a/clang/test/AST/language_address_space_attribute.cpp b/clang/test/AST/language_address_space_attribute.cpp
index fcc293ab5e705..0f4b5e2ada735 100644
--- a/clang/test/AST/language_address_space_attribute.cpp
+++ b/clang/test/AST/language_address_space_attribute.cpp
@@ -20,24 +20,6 @@ void langas() {
// CHECK: VarDecl {{.*}} z_global '__global int *'
[[clang::opencl_global]] int *z_global;
- // CHECK: VarDecl {{.*}} x_global_device '__global_device int *'
- __attribute__((opencl_global_device)) int *x_global_device;
-
- // CHECK: VarDecl {{.*}} y_global_device '__global_device int *'
- int [[clang::opencl_global_device]] *y_global_device;
-
- // CHECK: VarDecl {{.*}} z_global_device '__global_device int *'
- [[clang::opencl_global_device]] int *z_global_device;
-
- // CHECK: VarDecl {{.*}} x_global_host '__global_host int *'
- __attribute__((opencl_global_host)) int *x_global_host;
-
- // CHECK: VarDecl {{.*}} y_global_host '__global_host int *'
- int [[clang::opencl_global_host]] *y_global_host;
-
- // CHECK: VarDecl {{.*}} z_global_host '__global_host int *'
- [[clang::opencl_global_host]] int *z_global_host;
-
// CHECK: VarDecl {{.*}} x_local '__local int *'
__attribute__((opencl_local)) int *x_local;
diff --git a/clang/test/CodeGenCXX/mangle-address-space.cpp b/clang/test/CodeGenCXX/mangle-address-space.cpp
index d5294e3de4991..89935a099c439 100644
--- a/clang/test/CodeGenCXX/mangle-address-space.cpp
+++ b/clang/test/CodeGenCXX/mangle-address-space.cpp
@@ -43,10 +43,6 @@ void ocl_f0(char __private *p) { }
struct ocl_OpaqueType;
typedef ocl_OpaqueType __global * ocl_OpaqueTypePtr;
-typedef ocl_OpaqueType __attribute__((opencl_global_host)) * ocl_OpaqueTypePtrH;
-typedef ocl_OpaqueType
- __attribute__((opencl_global_device)) *
- ocl_OpaqueTypePtrD;
// CHECKOCL-LABEL: define {{.*}}void @_Z6ocl_f0PU8CLglobal14ocl_OpaqueType
// WINOCL-LABEL: define {{.*}}void @"?ocl_f0@@YAXPEAU?$_ASCLglobal@$$CAUocl_OpaqueType@@@__clang@@@Z"
@@ -65,12 +61,4 @@ __constant float *ocl_f1(char __generic const *p) { return 0;}
// CHECKOCL-LABEL: define {{.*}}ptr @_Z6ocl_f2PU9CLgenericKc
// WINOCL-LABEL: define {{.*}}ptr @"?ocl_f2@@YAPEAU?$_ASCLgeneric@$$CAM at __clang@@QEAU?$_ASCLgeneric@$$CBD at 2@@Z"
__generic float *ocl_f2(__generic char const * const p) { return 0;}
-
-// CHECKOCL-LABEL: define {{.*}}void @_Z6ocl_f3PU6CLhost14ocl_OpaqueType
-// WINOCL-LABEL: define {{.*}}void @"?ocl_f3@@YAXPEAU?$_ASCLhost@$$CAUocl_OpaqueType@@@__clang@@@Z"
-void ocl_f3(ocl_OpaqueTypePtrH) {}
-
-// CHECKOCL-LABEL: define {{.*}}void @_Z6ocl_f4PU8CLdevice14ocl_OpaqueType
-// WINOCL-LABEL: define {{.*}}void @"?ocl_f4@@YAXPEAU?$_ASCLdevice@$$CAUocl_OpaqueType@@@__clang@@@Z"
-void ocl_f4(ocl_OpaqueTypePtrD) {}
#endif
diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
index f3a22fe89eaeb..ef2786f878907 100644
--- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
+++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
@@ -8,9 +8,7 @@
// pointers to different address spaces
// CHECK: define{{.*}} void @test
-void test(global int *arg_glob, generic int *arg_gen,
- __attribute__((opencl_global_device)) int *arg_device,
- __attribute__((opencl_global_host)) int *arg_host) {
+void test(global int *arg_glob, generic int *arg_gen) {
int var_priv;
arg_gen = arg_glob; // implicit cast global -> generic
// CHECK: %{{[0-9]+}} = addrspacecast ptr addrspace(1) %{{[0-9]+}} to ptr addrspace(4)
@@ -41,30 +39,6 @@ void test(global int *arg_glob, generic int *arg_gen,
generic void *var_gen_v = arg_glob;
// CHECK: addrspacecast
// CHECK-NOFAKE-NOT: addrspacecast
-
- arg_glob = arg_device; // implicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
-
- arg_glob = arg_host; // implicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
-
- arg_glob = (global int *)arg_device; // explicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
-
- arg_glob = (global int *)arg_host; // explicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
-
- arg_device = (__attribute((opencl_global_device)) int *)arg_glob; // explicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
-
- arg_host = (__attribute((opencl_global_host)) int *)arg_glob; // explicit cast
- // CHECK: addrspacecast
- // CHECK-NOFAKE-NOT: addrspacecast
}
// Test ternary operator.
diff --git a/clang/test/CodeGenOpenCL/address-spaces.cl b/clang/test/CodeGenOpenCL/address-spaces.cl
index b9f01069fa26c..b44667134fe46 100644
--- a/clang/test/CodeGenOpenCL/address-spaces.cl
+++ b/clang/test/CodeGenOpenCL/address-spaces.cl
@@ -57,14 +57,6 @@ void fl(local int *arg) {}
// AMDGCN: ptr addrspace(4) %arg
void fc(constant int *arg) {}
-// SPIR: ptr addrspace(5) %arg
-// AMDGCN: ptr addrspace(1) %arg
-void fd(__attribute__((opencl_global_device)) int *arg) {}
-
-// SPIR: ptr addrspace(6) %arg
-// AMDGCN: ptr addrspace(1) %arg
-void fh(__attribute__((opencl_global_host)) int *arg) {}
-
#ifdef CL20
int i;
// CL20-DAG: @i = {{(dso_local )?}}addrspace(1) global i32 0
diff --git a/clang/test/CodeGenSYCL/address-space-conversions.cpp b/clang/test/CodeGenSYCL/address-space-conversions.cpp
index 506a24fb4a3ba..36278bebe8277 100644
--- a/clang/test/CodeGenSYCL/address-space-conversions.cpp
+++ b/clang/test/CodeGenSYCL/address-space-conversions.cpp
@@ -25,10 +25,6 @@ void tmpl(T t) {}
// CHECK-DAG: [[LOC:%[a-zA-Z0-9]+]] = alloca ptr addrspace(3)
__attribute__((opencl_private)) int *PRIV;
// CHECK-DAG: [[PRIV:%[a-zA-Z0-9]+]] = alloca ptr
- __attribute__((opencl_global_device)) int *GLOBDEVICE;
- // CHECK-DAG: [[GLOB_DEVICE:%[a-zA-Z0-9]+]] = alloca ptr addrspace(5)
- __attribute__((opencl_global_host)) int *GLOBHOST;
- // CHECK-DAG: [[GLOB_HOST:%[a-zA-Z0-9]+]] = alloca ptr addrspace(6)
// CHECK-DAG: [[NoAS]].ascast = addrspacecast ptr [[NoAS]] to ptr addrspace(4)
// CHECK-DAG: [[GLOB]].ascast = addrspacecast ptr [[GLOB]] to ptr addrspace(4)
@@ -66,15 +62,6 @@ void tmpl(T t) {}
// CHECK-DAG: [[NoAS_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr addrspace(4) [[NoAS_LOAD]] to ptr
// CHECK-DAG: store ptr [[NoAS_CAST]], ptr addrspace(4) [[PRIV]].ascast
PRIV = (__attribute__((opencl_private)) int *)NoAS;
- // From opencl_global_[host/device] address spaces to opencl_global
- // CHECK-DAG: [[GLOBDEVICE_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(5), ptr addrspace(4) [[GLOB_DEVICE]].ascast
- // CHECK-DAG: [[GLOBDEVICE_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr addrspace(5) [[GLOBDEVICE_LOAD]] to ptr addrspace(1)
- // CHECK-DAG: store ptr addrspace(1) [[GLOBDEVICE_CAST]], ptr addrspace(4) [[GLOB]].ascast
- GLOB = (__attribute__((opencl_global)) int *)GLOBDEVICE;
- // CHECK-DAG: [[GLOBHOST_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(6), ptr addrspace(4) [[GLOB_HOST]].ascast
- // CHECK-DAG: [[GLOBHOST_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr addrspace(6) [[GLOBHOST_LOAD]] to ptr addrspace(1)
- // CHECK-DAG: store ptr addrspace(1) [[GLOBHOST_CAST]], ptr addrspace(4) [[GLOB]].ascast
- GLOB = (__attribute__((opencl_global)) int *)GLOBHOST;
bar(*GLOB);
// CHECK-DAG: [[GLOB_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr addrspace(4) [[GLOB]].ascast
diff --git a/clang/test/CodeGenSYCL/amd-address-space-conversions.cpp b/clang/test/CodeGenSYCL/amd-address-space-conversions.cpp
index 17a98195318ad..12055fa89de0a 100644
--- a/clang/test/CodeGenSYCL/amd-address-space-conversions.cpp
+++ b/clang/test/CodeGenSYCL/amd-address-space-conversions.cpp
@@ -25,10 +25,6 @@ void tmpl(T t) {}
// CHECK-DAG: [[LOC:%[a-zA-Z0-9]+]] = alloca ptr addrspace(3), align 4, addrspace(5)
__attribute__((opencl_private)) int *PRIV;
// CHECK-DAG: [[PRIV:%[a-zA-Z0-9]+]] = alloca ptr addrspace(5), align 4, addrspace(5)
- __attribute__((opencl_global_device)) int *GLOBDEVICE;
- // CHECK-DAG: [[GLOB_DEVICE:%[a-zA-Z0-9]+]] = alloca ptr addrspace(1), align 8, addrspace(5)
- __attribute__((opencl_global_host)) int *GLOBHOST;
- // CHECK-DAG: [[GLOB_HOST:%[a-zA-Z0-9]+]] = alloca ptr addrspace(1), align 8, addrspace(5)
LOC = nullptr;
// CHECK-DAG: store ptr addrspace(3) addrspacecast (ptr null to ptr addrspace(3)), ptr [[LOC]].ascast, align 4
GLOB = nullptr;
@@ -57,12 +53,6 @@ void tmpl(T t) {}
// CHECK-DAG: [[NoAS_LOAD:%[a-zA-Z0-9]+]] = load ptr, ptr [[NoAS]].ascast, align 8
// CHECK-DAG: [[NoAS_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr [[NoAS_LOAD]] to ptr addrspace(5)
// CHECK-DAG: store ptr addrspace(5) [[NoAS_CAST]], ptr [[PRIV]].ascast, align 4
- GLOB = (__attribute__((opencl_global)) int *)GLOBDEVICE;
- // CHECK-DAG: [[NoAS_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB]]DEVICE.ascast, align 8
- // CHECK-DAG: store ptr addrspace(1) [[NoAS_LOAD]], ptr [[GLOB]].ascast, align 8
- GLOB = (__attribute__((opencl_global)) int *)GLOBHOST;
- // CHECK-DAG: [[NoAS_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB]]HOST.ascast, align 8
- // CHECK-DAG: tore ptr addrspace(1) [[NoAS_LOAD]], ptr [[GLOB]].ascast, align 8
bar(*GLOB);
// CHECK-DAG: [[GLOB_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB]].ascast, align 8
// CHECK-DAG: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr addrspace(1) [[GLOB_LOAD]] to ptr
diff --git a/clang/test/CodeGenSYCL/cuda-address-space-conversions.cpp b/clang/test/CodeGenSYCL/cuda-address-space-conversions.cpp
index ffb601e62c118..283a0db71b8aa 100644
--- a/clang/test/CodeGenSYCL/cuda-address-space-conversions.cpp
+++ b/clang/test/CodeGenSYCL/cuda-address-space-conversions.cpp
@@ -25,10 +25,6 @@ void tmpl(T t);
// CHECK-DAG: [[LOC:%[a-zA-Z0-9]+]] = alloca ptr addrspace(3), align 8
__attribute__((opencl_private)) int *PRIV;
// CHECK-DAG: [[PRIV:%[a-zA-Z0-9]+]] = alloca ptr, align 8
- __attribute__((opencl_global_device)) int *GLOBDEVICE;
- // CHECK-DAG: [[GLOB_DEVICE:%[a-zA-Z0-9]+]] = alloca ptr addrspace(1), align 8
- __attribute__((opencl_global_host)) int *GLOBHOST;
- // CHECK-DAG: [[GLOB_HOST:%[a-zA-Z0-9]+]] = alloca ptr addrspace(1), align 8
LOC = nullptr;
// CHECK-DAG: store ptr addrspace(3) addrspacecast (ptr null to ptr addrspace(3)), ptr [[LOC]], align 8
GLOB = nullptr;
@@ -55,12 +51,6 @@ void tmpl(T t);
PRIV = (__attribute__((opencl_private)) int *)NoAS;
// CHECK-DAG: [[NoAS_LOAD:%[a-zA-Z0-9]+]] = load ptr, ptr [[NoAS]], align 8
// CHECK-DAG: store ptr [[NoAS_LOAD]], ptr [[PRIV]], align 8
- GLOB = (__attribute__((opencl_global)) int *)GLOBDEVICE;
- // CHECK-DAG: [[GLOBDEVICE_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB_DEVICE]], align 8
- // CHECK-DAG: store ptr addrspace(1) [[GLOBDEVICE_LOAD]], ptr %GLOB, align 8
- GLOB = (__attribute__((opencl_global)) int *)GLOBHOST;
- // CHECK-DAG: [[GLOB_HOST_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB_HOST]], align 8
- // CHECK-DAG: store ptr addrspace(1) [[GLOB_HOST_LOAD]], ptr [[GLOB]], align 8
bar(*GLOB);
// CHECK-DAG: [[GLOB_LOAD:%[a-zA-Z0-9]+]] = load ptr addrspace(1), ptr [[GLOB]], align 8
// CHECK-DAG: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast ptr addrspace(1) [[GLOB_LOAD]] to ptr
@@ -113,8 +103,8 @@ void tmpl(T t);
// CHECK-DAG: [[PRIV_LOAD5:%[a-zA-Z0-9]+]] = load ptr, ptr [[PRIV]], align 8
// CHECK-DAG: call void @_Z4tmplIPiEvT_(ptr noundef [[PRIV_LOAD5]])
tmpl(NoAS);
-// CHECK-DAG: %33 = load ptr, ptr %NoAS, align 8
-// CHECK-DAG: call void @_Z4tmplIPiEvT_(ptr noundef %33)
+// CHECK-DAG: [[NoAS_LOAD5:%[a-zA-Z0-9]+]] = load ptr, ptr %NoAS, align 8
+// CHECK-DAG: call void @_Z4tmplIPiEvT_(ptr noundef [[NoAS_LOAD5]])
}
// CHECK-DAG: void @_Z4tmplIPU3AS1iEvT_(ptr addrspace(1) noundef
diff --git a/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl b/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl
deleted file mode 100644
index 668b0db70d49e..0000000000000
--- a/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl
+++ /dev/null
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -cl-std=CL2.0
-// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -cl-std=CL2.0 -DGENERIC
-// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -cl-std=CL2.0 -DCONSTANT
-// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -cl-std=CL2.0 -DLOCAL
-
-/* USM (unified shared memory) extension for OpenCLC 2.0 adds two new address
- * spaces: global_device and global_host that are a subset of __global address
- * space. As ISO/IEC TR 18037 5.1.3 declares - it's possible to implicitly
- * convert a subset address space to a superset address space, while conversion
- * in a reversed direction could be achieved only with an explicit cast */
-
-#ifdef GENERIC
-#define AS_COMP __generic
-#else
-#define AS_COMP __global
-#endif // GENERIC
-
-#ifdef CONSTANT
-#define AS_INCOMP __constant
-#elif LOCAL
-#define AS_INCOMP __local
-#else // PRIVATE
-#define AS_INCOMP __private
-#endif // CONSTANT
-
-void test(AS_COMP int *arg_comp,
- __attribute__((opencl_global_device)) int *arg_device,
- __attribute__((opencl_global_host)) int *arg_host) {
- AS_COMP int *var_glob1 = arg_device;
- AS_COMP int *var_glob2 = arg_host;
- AS_COMP int *var_glob3 = (AS_COMP int *)arg_device;
- AS_COMP int *var_glob4 = (AS_COMP int *)arg_host;
- arg_device = (__attribute__((opencl_global_device)) int *)arg_comp;
- arg_host = (__attribute__((opencl_global_host)) int *)arg_comp;
-#ifdef GENERIC
- // expected-error at +6{{assigning '__generic int *__private' to '__global_device int *__private' changes address space of pointer}}
- // expected-error at +6{{assigning '__generic int *__private' to '__global_host int *__private' changes address space of pointer}}
-#else
- // expected-error at +3{{assigning '__global int *__private' to '__global_device int *__private' changes address space of pointer}}
- // expected-error at +3{{assigning '__global int *__private' to '__global_host int *__private' changes address space of pointer}}
-#endif // GENERIC
- arg_device = arg_comp;
- arg_host = arg_comp;
-
-#ifdef CONSTANT
- // expected-error at +15{{initializing '__constant int *__private' with an expression of type '__global_device int *__private' changes address space of pointer}}
- // expected-error at +15{{initializing '__constant int *__private' with an expression of type '__global_host int *__private' changes address space of pointer}}
- // expected-error at +15{{initializing '__constant int *__private' with an expression of type '__global_device int *' changes address space of pointer}}
- // expected-error at +16{{initializing '__constant int *__private' with an expression of type '__global_host int *' changes address space of pointer}}
-#elif LOCAL
- // expected-error at +10{{initializing '__local int *__private' with an expression of type '__global_device int *__private' changes address space of pointer}}
- // expected-error at +10{{initializing '__local int *__private' with an expression of type '__global_host int *__private' changes address space of pointer}}
- // expected-error at +10{{initializing '__local int *__private' with an expression of type '__global_device int *' changes address space of pointer}}
- // expected-error at +11{{initializing '__local int *__private' with an expression of type '__global_host int *' changes address space of pointer}}
-#else // PRIVATE
- // expected-error at +5{{initializing '__private int *__private' with an expression of type '__global_device int *__private' changes address space of pointer}}
- // expected-error at +5{{initializing '__private int *__private' with an expression of type '__global_host int *__private' changes address space of pointer}}
- // expected-error at +5{{initializing '__private int *__private' with an expression of type '__global_device int *' changes address space of pointer}}
- // expected-error at +6{{initializing '__private int *__private' with an expression of type '__global_host int *' changes address space of pointer}}
-#endif // CONSTANT
- AS_INCOMP int *var_incomp1 = arg_device;
- AS_INCOMP int *var_incomp2 = arg_host;
- AS_INCOMP int *var_incomp3 =
- (__attribute__((opencl_global_device)) int *)arg_device;
- AS_INCOMP int *var_incomp4 =
- (__attribute__((opencl_global_host)) int *)arg_host;
-}
diff --git a/clang/test/SemaSYCL/address-space-conversions.cpp b/clang/test/SemaSYCL/address-space-conversions.cpp
index d8758248499de..e5bb303055fe6 100644
--- a/clang/test/SemaSYCL/address-space-conversions.cpp
+++ b/clang/test/SemaSYCL/address-space-conversions.cpp
@@ -64,17 +64,4 @@ void usages() {
void *v = GLOB;
(void)i;
(void)v;
-
- __attribute__((opencl_global_host)) int *GLOB_HOST;
- bar(*GLOB_HOST);
- bar2(*GLOB_HOST);
- GLOB = GLOB_HOST;
- GLOB_HOST = GLOB; // expected-error {{assigning '__global int *' to '__global_host int *' changes address space of pointer}}
- GLOB_HOST = static_cast<__attribute__((opencl_global_host)) int *>(GLOB); // expected-error {{static_cast from '__global int *' to '__global_host int *' is not allowed}}
- __attribute__((opencl_global_device)) int *GLOB_DEVICE;
- bar(*GLOB_DEVICE);
- bar2(*GLOB_DEVICE);
- GLOB = GLOB_DEVICE;
- GLOB_DEVICE = GLOB; // expected-error {{assigning '__global int *' to '__global_device int *' changes address space of pointer}}
- GLOB_DEVICE = static_cast<__attribute__((opencl_global_device)) int *>(GLOB); // expected-error {{static_cast from '__global int *' to '__global_device int *' is not allowed}}
}
diff --git a/clang/test/SemaTemplate/address_space-dependent.cpp b/clang/test/SemaTemplate/address_space-dependent.cpp
index 3fdccb2c71a76..a96a9657893d9 100644
--- a/clang/test/SemaTemplate/address_space-dependent.cpp
+++ b/clang/test/SemaTemplate/address_space-dependent.cpp
@@ -43,7 +43,7 @@ void neg() {
template <long int I>
void tooBig() {
- __attribute__((address_space(I))) int *bounds; // expected-error {{address space is larger than the maximum supported (8388580)}}
+ __attribute__((address_space(I))) int *bounds; // expected-error {{address space is larger than the maximum supported (8388584)}}
}
template <long int I>
More information about the cfe-commits
mailing list