Skip to content

Commit dcdc3ec

Browse files
author
git apple-llvm automerger
committed
Merge commit '52956b0f7054' from llvm.org/main into next
2 parents 7e8d653 + 52956b0 commit dcdc3ec

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+315
-12
lines changed

clang/include/clang-c/Index.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2978,7 +2978,10 @@ enum CXTypeKind {
29782978

29792979
CXType_ExtVector = 176,
29802980
CXType_Atomic = 177,
2981-
CXType_BTFTagAttributed = 178
2981+
CXType_BTFTagAttributed = 178,
2982+
2983+
// HLSL Intangible Types
2984+
CXType_HLSLResource = 179,
29822985
};
29832986

29842987
/**

clang/include/clang/AST/ASTContext.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,8 @@ class ASTContext : public RefCountedBase<ASTContext> {
11951195
#include "clang/Basic/WebAssemblyReferenceTypes.def"
11961196
#define AMDGPU_TYPE(Name, Id, SingletonId) CanQualType SingletonId;
11971197
#include "clang/Basic/AMDGPUTypes.def"
1198+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) CanQualType SingletonId;
1199+
#include "clang/Basic/HLSLIntangibleTypes.def"
11981200

11991201
// Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand.
12001202
mutable QualType AutoDeductTy; // Deduction against 'auto'.

clang/include/clang/AST/Type.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2651,6 +2651,10 @@ class alignas(TypeAlignment) Type : public ExtQualsTypeCommonBase {
26512651
bool isBitIntType() const; // Bit-precise integer type
26522652
bool isOpenCLSpecificType() const; // Any OpenCL specific type
26532653

2654+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) bool is##Id##Type() const;
2655+
#include "clang/Basic/HLSLIntangibleTypes.def"
2656+
bool isHLSLSpecificType() const; // Any HLSL specific type
2657+
26542658
/// Determines if this type, which must satisfy
26552659
/// isObjCLifetimeType(), is implicitly __unsafe_unretained rather
26562660
/// than implicitly __strong.
@@ -3043,6 +3047,9 @@ class BuiltinType : public Type {
30433047
// AMDGPU types
30443048
#define AMDGPU_TYPE(Name, Id, SingletonId) Id,
30453049
#include "clang/Basic/AMDGPUTypes.def"
3050+
// HLSL intangible Types
3051+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) Id,
3052+
#include "clang/Basic/HLSLIntangibleTypes.def"
30463053
// All other builtin types
30473054
#define BUILTIN_TYPE(Id, SingletonId) Id,
30483055
#define LAST_BUILTIN_TYPE(Id) LastKind = Id
@@ -8276,6 +8283,19 @@ inline bool Type::isOpenCLSpecificType() const {
82768283
isQueueT() || isReserveIDT() || isPipeType() || isOCLExtOpaqueType();
82778284
}
82788285

8286+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
8287+
inline bool Type::is##Id##Type() const { \
8288+
return isSpecificBuiltinType(BuiltinType::Id); \
8289+
}
8290+
#include "clang/Basic/HLSLIntangibleTypes.def"
8291+
8292+
inline bool Type::isHLSLSpecificType() const {
8293+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) is##Id##Type() ||
8294+
return
8295+
#include "clang/Basic/HLSLIntangibleTypes.def"
8296+
false; // end boolean or operation
8297+
}
8298+
82798299
inline bool Type::isTemplateTypeParmType() const {
82808300
return isa<TemplateTypeParmType>(CanonicalType);
82818301
}

clang/include/clang/AST/TypeProperties.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -876,6 +876,10 @@ let Class = BuiltinType in {
876876
case BuiltinType::ID: return ctx.SINGLETON_ID;
877877
#include "clang/Basic/AMDGPUTypes.def"
878878

879+
#define HLSL_INTANGIBLE_TYPE(NAME, ID, SINGLETON_ID) \
880+
case BuiltinType::ID: return ctx.SINGLETON_ID;
881+
#include "clang/Basic/HLSLIntangibleTypes.def"
882+
879883
#define BUILTIN_TYPE(ID, SINGLETON_ID) \
880884
case BuiltinType::ID: return ctx.SINGLETON_ID;
881885
#include "clang/AST/BuiltinTypes.def"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//===-- HLSLIntangibleTypes.def - HLSL standard intangible types ----*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===--------------------------------------------------------------------------===//
8+
//
9+
// This file defines HLSL standard intangible types. These are implementation-
10+
// defined types such as handle types that have no defined object
11+
// representation or value representation and their size is unknown at compile
12+
// time.
13+
//
14+
// The macro is:
15+
//
16+
// HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId)
17+
//
18+
// where:
19+
//
20+
// - Name is the name of the builtin type.
21+
//
22+
// - BuiltinType::Id is the enumerator defining the type.
23+
//
24+
// - Context.SingletonId is the global singleton of this type.
25+
//
26+
// To include this file, define HLSL_INTANGIBLE_TYPE.
27+
// The macro will be undefined after inclusion.
28+
//
29+
//===----------------------------------------------------------------------===//
30+
31+
HLSL_INTANGIBLE_TYPE(__hlsl_resource_t, HLSLResource, HLSLResourceTy)
32+
33+
#undef HLSL_INTANGIBLE_TYPE

clang/include/clang/Basic/Specifiers.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ namespace clang {
9898
#define GENERIC_IMAGE_TYPE(ImgType, Id) \
9999
TST_##ImgType##_t, // OpenCL image types
100100
#include "clang/Basic/OpenCLImageTypes.def"
101+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
102+
TST_##Name, // HLSL Intangible Types
103+
#include "clang/Basic/HLSLIntangibleTypes.def"
101104
TST_error // erroneous type
102105
};
103106

clang/include/clang/Basic/TokenKinds.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,9 @@ KEYWORD(groupshared , KEYHLSL)
655655
KEYWORD(in , KEYHLSL)
656656
KEYWORD(inout , KEYHLSL)
657657
KEYWORD(out , KEYHLSL)
658+
// HLSL Intangible Types
659+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) KEYWORD(Name, KEYHLSL)
660+
#include "clang/Basic/HLSLIntangibleTypes.def"
658661

659662
// OpenMP Type Traits
660663
UNARY_EXPR_OR_TYPE_TRAIT(__builtin_omp_required_simd_align, OpenMPRequiredSimdAlign, KEYALL)

clang/include/clang/Sema/DeclSpec.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@ class DeclSpec {
322322
#define GENERIC_IMAGE_TYPE(ImgType, Id) \
323323
static const TST TST_##ImgType##_t = clang::TST_##ImgType##_t;
324324
#include "clang/Basic/OpenCLImageTypes.def"
325+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
326+
static const TST TST_##Name = clang::TST_##Name;
327+
#include "clang/Basic/HLSLIntangibleTypes.def"
325328
static const TST TST_error = clang::TST_error;
326329

327330
// type-qualifiers

clang/include/clang/Serialization/ASTBitCodes.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,9 @@ enum PredefinedTypeIDs {
11321132
// \brief AMDGPU types with auto numeration
11331133
#define AMDGPU_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
11341134
#include "clang/Basic/AMDGPUTypes.def"
1135+
// \brief HLSL intangible types with auto numeration
1136+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1137+
#include "clang/Basic/HLSLIntangibleTypes.def"
11351138

11361139
/// The placeholder type for unresolved templates.
11371140
PREDEF_TYPE_UNRESOLVED_TEMPLATE,
@@ -1144,7 +1147,7 @@ enum PredefinedTypeIDs {
11441147
///
11451148
/// Type IDs for non-predefined types will start at
11461149
/// NUM_PREDEF_TYPE_IDs.
1147-
const unsigned NUM_PREDEF_TYPE_IDS = 504;
1150+
const unsigned NUM_PREDEF_TYPE_IDS = 505;
11481151

11491152
// Ensure we do not overrun the predefined types we reserved
11501153
// in the enum PredefinedTypeIDs above.

clang/include/module.modulemap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ module Clang_Basic {
7070
textual header "clang/Basic/DiagnosticOptions.def"
7171
textual header "clang/Basic/FPOptions.def"
7272
textual header "clang/Basic/Features.def"
73+
textual header "clang/Basic/HLSLIntangibleTypes.def"
7374
textual header "clang/Basic/LangOptions.def"
7475
textual header "clang/Basic/MSP430Target.def"
7576
textual header "clang/Basic/OpenACCClauses.def"

clang/lib/AST/ASTContext.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,6 +1385,12 @@ void ASTContext::InitBuiltinTypes(const TargetInfo &Target,
13851385
#include "clang/Basic/OpenCLExtensionTypes.def"
13861386
}
13871387

1388+
if (LangOpts.HLSL) {
1389+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
1390+
InitBuiltinType(SingletonId, BuiltinType::Id);
1391+
#include "clang/Basic/HLSLIntangibleTypes.def"
1392+
}
1393+
13881394
if (Target.hasAArch64SVETypes() ||
13891395
(AuxTarget && AuxTarget->hasAArch64SVETypes())) {
13901396
#define SVE_TYPE(Name, Id, SingletonId) \
@@ -2243,6 +2249,11 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const {
22432249
Align = ALIGN; \
22442250
break;
22452251
#include "clang/Basic/AMDGPUTypes.def"
2252+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
2253+
#include "clang/Basic/HLSLIntangibleTypes.def"
2254+
Width = 0;
2255+
Align = 8;
2256+
break;
22462257
}
22472258
break;
22482259
case Type::ObjCObjectPointer:
@@ -3356,6 +3367,10 @@ static void encodeTypeForFunctionPointerAuth(const ASTContext &Ctx,
33563367
case BuiltinType::Id: \
33573368
return;
33583369
#include "clang/Basic/AArch64SVEACLETypes.def"
3370+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
3371+
case BuiltinType::Id: \
3372+
return;
3373+
#include "clang/Basic/HLSLIntangibleTypes.def"
33593374
case BuiltinType::Dependent:
33603375
llvm_unreachable("should never get here");
33613376
case BuiltinType::AMDGPUBufferRsrc:
@@ -8585,6 +8600,8 @@ static char getObjCEncodingForPrimitiveType(const ASTContext *C,
85858600
#define PPC_VECTOR_TYPE(Name, Id, Size) \
85868601
case BuiltinType::Id:
85878602
#include "clang/Basic/PPCTypes.def"
8603+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
8604+
#include "clang/Basic/HLSLIntangibleTypes.def"
85888605
#define BUILTIN_TYPE(KIND, ID)
85898606
#define PLACEHOLDER_TYPE(KIND, ID) \
85908607
case BuiltinType::KIND:

clang/lib/AST/ASTImporter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,6 +1152,10 @@ ExpectedType ASTNodeImporter::VisitBuiltinType(const BuiltinType *T) {
11521152
case BuiltinType::Id: \
11531153
return Importer.getToContext().SingletonId;
11541154
#include "clang/Basic/AMDGPUTypes.def"
1155+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
1156+
case BuiltinType::Id: \
1157+
return Importer.getToContext().SingletonId;
1158+
#include "clang/Basic/HLSLIntangibleTypes.def"
11551159
#define SHARED_SINGLETON_TYPE(Expansion)
11561160
#define BUILTIN_TYPE(Id, SingletonId) \
11571161
case BuiltinType::Id: return Importer.getToContext().SingletonId;

clang/lib/AST/ExprConstant.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11880,6 +11880,8 @@ GCCTypeClass EvaluateBuiltinClassifyType(QualType T,
1188011880
#include "clang/Basic/WebAssemblyReferenceTypes.def"
1188111881
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
1188211882
#include "clang/Basic/AMDGPUTypes.def"
11883+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
11884+
#include "clang/Basic/HLSLIntangibleTypes.def"
1188311885
return GCCTypeClass::None;
1188411886

1188511887
case BuiltinType::Dependent:

clang/lib/AST/ItaniumMangle.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3431,6 +3431,12 @@ void CXXNameMangler::mangleType(const BuiltinType *T) {
34313431
Out << 'u' << type_name.size() << type_name; \
34323432
break;
34333433
#include "clang/Basic/AMDGPUTypes.def"
3434+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
3435+
case BuiltinType::Id: \
3436+
type_name = #Name; \
3437+
Out << 'u' << type_name.size() << type_name; \
3438+
break;
3439+
#include "clang/Basic/HLSLIntangibleTypes.def"
34343440
}
34353441
}
34363442

clang/lib/AST/MicrosoftMangle.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2741,6 +2741,13 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
27412741
break;
27422742

27432743
#include "clang/Basic/WebAssemblyReferenceTypes.def"
2744+
2745+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
2746+
case BuiltinType::Id: \
2747+
mangleArtificialTagType(TagTypeKind::Struct, #Name); \
2748+
break;
2749+
#include "clang/Basic/HLSLIntangibleTypes.def"
2750+
27442751
#define SVE_TYPE(Name, Id, SingletonId) \
27452752
case BuiltinType::Id:
27462753
#include "clang/Basic/AArch64SVEACLETypes.def"

clang/lib/AST/NSAPI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ NSAPI::getNSNumberFactoryMethodKind(QualType T) const {
455455
#include "clang/Basic/WebAssemblyReferenceTypes.def"
456456
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
457457
#include "clang/Basic/AMDGPUTypes.def"
458+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
459+
#include "clang/Basic/HLSLIntangibleTypes.def"
458460
case BuiltinType::BoundMember:
459461
case BuiltinType::UnresolvedTemplate:
460462
case BuiltinType::Dependent:

clang/lib/AST/PrintfFormatString.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,8 @@ bool PrintfSpecifier::fixType(QualType QT, const LangOptions &LangOpt,
867867
#include "clang/Basic/WebAssemblyReferenceTypes.def"
868868
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
869869
#include "clang/Basic/AMDGPUTypes.def"
870+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
871+
#include "clang/Basic/HLSLIntangibleTypes.def"
870872
#define SIGNED_TYPE(Id, SingletonId)
871873
#define UNSIGNED_TYPE(Id, SingletonId)
872874
#define FLOATING_TYPE(Id, SingletonId)

clang/lib/AST/Type.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2443,6 +2443,9 @@ bool Type::isSizelessBuiltinType() const {
24432443
// WebAssembly reference types
24442444
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
24452445
#include "clang/Basic/WebAssemblyReferenceTypes.def"
2446+
// HLSL intangible types
2447+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
2448+
#include "clang/Basic/HLSLIntangibleTypes.def"
24462449
return true;
24472450
default:
24482451
return false;
@@ -3452,6 +3455,10 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const {
34523455
case Id: \
34533456
return Name;
34543457
#include "clang/Basic/AMDGPUTypes.def"
3458+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
3459+
case Id: \
3460+
return #Name;
3461+
#include "clang/Basic/HLSLIntangibleTypes.def"
34553462
}
34563463

34573464
llvm_unreachable("Invalid builtin type.");
@@ -4788,6 +4795,8 @@ bool Type::canHaveNullability(bool ResultIfUnknown) const {
47884795
#include "clang/Basic/WebAssemblyReferenceTypes.def"
47894796
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
47904797
#include "clang/Basic/AMDGPUTypes.def"
4798+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
4799+
#include "clang/Basic/HLSLIntangibleTypes.def"
47914800
case BuiltinType::BuiltinFn:
47924801
case BuiltinType::NullPtr:
47934802
case BuiltinType::IncompleteMatrixIdx:

clang/lib/AST/TypeLoc.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const {
430430
#include "clang/Basic/WebAssemblyReferenceTypes.def"
431431
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
432432
#include "clang/Basic/AMDGPUTypes.def"
433+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
434+
#include "clang/Basic/HLSLIntangibleTypes.def"
433435
case BuiltinType::BuiltinFn:
434436
case BuiltinType::IncompleteMatrixIdx:
435437
case BuiltinType::ArraySection:

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,10 @@ llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) {
750750
case BuiltinType::Id: \
751751
return getOrCreateStructPtrType("opencl_" #ExtType, Id##Ty);
752752
#include "clang/Basic/OpenCLExtensionTypes.def"
753+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
754+
case BuiltinType::Id: \
755+
return getOrCreateStructPtrType(#Name, SingletonId);
756+
#include "clang/Basic/HLSLIntangibleTypes.def"
753757

754758
#define SVE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
755759
#include "clang/Basic/AArch64SVEACLETypes.def"

clang/lib/CodeGen/CGDebugInfo.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ class CGDebugInfo {
8787
#include "clang/Basic/WebAssemblyReferenceTypes.def"
8888
#define AMDGPU_TYPE(Name, Id, SingletonId) llvm::DIType *SingletonId = nullptr;
8989
#include "clang/Basic/AMDGPUTypes.def"
90+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \
91+
llvm::DIType *SingletonId = nullptr;
92+
#include "clang/Basic/HLSLIntangibleTypes.def"
9093

9194
/// Cache of previously constructed Types.
9295
llvm::DenseMap<const void *, llvm::TrackingMDRef> TypeCache;

clang/lib/CodeGen/CGHLSLRuntime.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "CGHLSLRuntime.h"
1616
#include "CGDebugInfo.h"
1717
#include "CodeGenModule.h"
18+
#include "TargetInfo.h"
1819
#include "clang/AST/Decl.h"
1920
#include "clang/Basic/TargetOptions.h"
2021
#include "llvm/IR/Metadata.h"
@@ -115,6 +116,16 @@ GlobalVariable *replaceBuffer(CGHLSLRuntime::Buffer &Buf) {
115116

116117
} // namespace
117118

119+
llvm::Type *CGHLSLRuntime::convertHLSLSpecificType(const Type *T) {
120+
assert(T->isHLSLSpecificType() && "Not an HLSL specific type!");
121+
122+
// Check if the target has a specific translation for this type first.
123+
if (llvm::Type *TargetTy = CGM.getTargetCodeGenInfo().getHLSLType(CGM, T))
124+
return TargetTy;
125+
126+
llvm_unreachable("Generic handling of HLSL types is not supported.");
127+
}
128+
118129
llvm::Triple::ArchType CGHLSLRuntime::getArch() {
119130
return CGM.getTarget().getTriple().getArch();
120131
}

clang/lib/CodeGen/CGHLSLRuntime.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ class CGHLSLRuntime {
113113
CGHLSLRuntime(CodeGenModule &CGM) : CGM(CGM) {}
114114
virtual ~CGHLSLRuntime() {}
115115

116+
llvm::Type *convertHLSLSpecificType(const Type *T);
117+
116118
void annotateHLSLResource(const VarDecl *D, llvm::GlobalVariable *GV);
117119
void generateGlobalCtorDtorCalls();
118120

clang/lib/CodeGen/CodeGenTypes.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "CodeGenTypes.h"
1414
#include "CGCXXABI.h"
1515
#include "CGCall.h"
16+
#include "CGHLSLRuntime.h"
1617
#include "CGOpenCLRuntime.h"
1718
#include "CGRecordLayout.h"
1819
#include "TargetInfo.h"
@@ -593,6 +594,10 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) {
593594
case BuiltinType::Id: \
594595
return llvm::PointerType::get(getLLVMContext(), AS);
595596
#include "clang/Basic/AMDGPUTypes.def"
597+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
598+
#include "clang/Basic/HLSLIntangibleTypes.def"
599+
ResultType = CGM.getHLSLRuntime().convertHLSLSpecificType(Ty);
600+
break;
596601
case BuiltinType::Dependent:
597602
#define BUILTIN_TYPE(Id, SingletonId)
598603
#define PLACEHOLDER_TYPE(Id, SingletonId) \

clang/lib/CodeGen/ItaniumCXXABI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3648,6 +3648,8 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
36483648
#include "clang/Basic/WebAssemblyReferenceTypes.def"
36493649
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
36503650
#include "clang/Basic/AMDGPUTypes.def"
3651+
#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
3652+
#include "clang/Basic/HLSLIntangibleTypes.def"
36513653
case BuiltinType::ShortAccum:
36523654
case BuiltinType::Accum:
36533655
case BuiltinType::LongAccum:

0 commit comments

Comments
 (0)