[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