Skip to content

Commit ad59921

Browse files
authored
[Clang][AMDGPU] Add a new builtin type for buffer rsrc (llvm#94830)
This patch adds a new builtin type for AMDGPU's buffer rsrc data type, which is effectively an AS 8 pointer. This is needed because we'd like to expose certain intrinsics to users via builtins which take buffer rsrc as argument.
1 parent 70f41a8 commit ad59921

32 files changed

+299
-2
lines changed

clang/include/clang/AST/ASTContext.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,6 +1147,8 @@ class ASTContext : public RefCountedBase<ASTContext> {
11471147
#include "clang/Basic/RISCVVTypes.def"
11481148
#define WASM_TYPE(Name, Id, SingletonId) CanQualType SingletonId;
11491149
#include "clang/Basic/WebAssemblyReferenceTypes.def"
1150+
#define AMDGPU_TYPE(Name, Id, SingletonId) CanQualType SingletonId;
1151+
#include "clang/Basic/AMDGPUTypes.def"
11501152

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

clang/include/clang/AST/Type.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,6 +3015,9 @@ class BuiltinType : public Type {
30153015
// WebAssembly reference types
30163016
#define WASM_TYPE(Name, Id, SingletonId) Id,
30173017
#include "clang/Basic/WebAssemblyReferenceTypes.def"
3018+
// AMDGPU types
3019+
#define AMDGPU_TYPE(Name, Id, SingletonId) Id,
3020+
#include "clang/Basic/AMDGPUTypes.def"
30183021
// All other builtin types
30193022
#define BUILTIN_TYPE(Id, SingletonId) Id,
30203023
#define LAST_BUILTIN_TYPE(Id) LastKind = Id

clang/include/clang/AST/TypeProperties.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,10 @@ let Class = BuiltinType in {
861861
case BuiltinType::ID: return ctx.SINGLETON_ID;
862862
#include "clang/Basic/WebAssemblyReferenceTypes.def"
863863

864+
#define AMDGPU_TYPE(NAME, ID, SINGLETON_ID) \
865+
case BuiltinType::ID: return ctx.SINGLETON_ID;
866+
#include "clang/Basic/AMDGPUTypes.def"
867+
864868
#define BUILTIN_TYPE(ID, SINGLETON_ID) \
865869
case BuiltinType::ID: return ctx.SINGLETON_ID;
866870
#include "clang/AST/BuiltinTypes.def"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//===-- AMDGPUTypes.def - Metadata about AMDGPU 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 various AMDGPU builtin types.
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
#ifndef AMDGPU_OPAQUE_PTR_TYPE
14+
#define AMDGPU_OPAQUE_PTR_TYPE(Name, MangledName, AS, Width, Align, Id, SingletonId) \
15+
AMDGPU_TYPE(Name, Id, SingletonId)
16+
#endif
17+
18+
AMDGPU_OPAQUE_PTR_TYPE("__amdgpu_buffer_rsrc_t", "__amdgpu_buffer_rsrc_t", 8, 128, 128, AMDGPUBufferRsrc, AMDGPUBufferRsrcTy)
19+
20+
#undef AMDGPU_TYPE
21+
#undef AMDGPU_OPAQUE_PTR_TYPE

clang/include/clang/Serialization/ASTBitCodes.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,9 @@ enum PredefinedTypeIDs {
10971097
// \brief WebAssembly reference types with auto numeration
10981098
#define WASM_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
10991099
#include "clang/Basic/WebAssemblyReferenceTypes.def"
1100+
// \brief AMDGPU types with auto numeration
1101+
#define AMDGPU_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1102+
#include "clang/Basic/AMDGPUTypes.def"
11001103

11011104
/// The placeholder type for unresolved templates.
11021105
PREDEF_TYPE_UNRESOLVED_TEMPLATE,
@@ -1109,7 +1112,7 @@ enum PredefinedTypeIDs {
11091112
///
11101113
/// Type IDs for non-predefined types will start at
11111114
/// NUM_PREDEF_TYPE_IDs.
1112-
const unsigned NUM_PREDEF_TYPE_IDS = 503;
1115+
const unsigned NUM_PREDEF_TYPE_IDS = 504;
11131116

11141117
// Ensure we do not overrun the predefined types we reserved
11151118
// in the enum PredefinedTypeIDs above.

clang/lib/AST/ASTContext.cpp

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

1388+
if (Target.getTriple().isAMDGPU() ||
1389+
(AuxTarget && AuxTarget->getTriple().isAMDGPU())) {
1390+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
1391+
InitBuiltinType(SingletonId, BuiltinType::Id);
1392+
#include "clang/Basic/AMDGPUTypes.def"
1393+
}
1394+
13881395
// Builtin type for __objc_yes and __objc_no
13891396
ObjCBuiltinBoolTy = (Target.useSignedCharForObjCBool() ?
13901397
SignedCharTy : BoolTy);
@@ -2201,6 +2208,13 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const {
22012208
Align = 8; \
22022209
break;
22032210
#include "clang/Basic/WebAssemblyReferenceTypes.def"
2211+
#define AMDGPU_OPAQUE_PTR_TYPE(NAME, MANGLEDNAME, AS, WIDTH, ALIGN, ID, \
2212+
SINGLETONID) \
2213+
case BuiltinType::ID: \
2214+
Width = WIDTH; \
2215+
Align = ALIGN; \
2216+
break;
2217+
#include "clang/Basic/AMDGPUTypes.def"
22042218
}
22052219
break;
22062220
case Type::ObjCObjectPointer:
@@ -8169,6 +8183,8 @@ static char getObjCEncodingForPrimitiveType(const ASTContext *C,
81698183
#include "clang/Basic/RISCVVTypes.def"
81708184
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
81718185
#include "clang/Basic/WebAssemblyReferenceTypes.def"
8186+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
8187+
#include "clang/Basic/AMDGPUTypes.def"
81728188
{
81738189
DiagnosticsEngine &Diags = C->getDiagnostics();
81748190
unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error,

clang/lib/AST/ASTImporter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,10 @@ ExpectedType ASTNodeImporter::VisitBuiltinType(const BuiltinType *T) {
10991099
case BuiltinType::Id: \
11001100
return Importer.getToContext().SingletonId;
11011101
#include "clang/Basic/WebAssemblyReferenceTypes.def"
1102+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
1103+
case BuiltinType::Id: \
1104+
return Importer.getToContext().SingletonId;
1105+
#include "clang/Basic/AMDGPUTypes.def"
11021106
#define SHARED_SINGLETON_TYPE(Expansion)
11031107
#define BUILTIN_TYPE(Id, SingletonId) \
11041108
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
@@ -11814,6 +11814,8 @@ GCCTypeClass EvaluateBuiltinClassifyType(QualType T,
1181411814
#include "clang/Basic/RISCVVTypes.def"
1181511815
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
1181611816
#include "clang/Basic/WebAssemblyReferenceTypes.def"
11817+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
11818+
#include "clang/Basic/AMDGPUTypes.def"
1181711819
return GCCTypeClass::None;
1181811820

1181911821
case BuiltinType::Dependent:

clang/lib/AST/ItaniumMangle.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3423,6 +3423,12 @@ void CXXNameMangler::mangleType(const BuiltinType *T) {
34233423
Out << 'u' << type_name.size() << type_name; \
34243424
break;
34253425
#include "clang/Basic/WebAssemblyReferenceTypes.def"
3426+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
3427+
case BuiltinType::Id: \
3428+
type_name = Name; \
3429+
Out << 'u' << type_name.size() << type_name; \
3430+
break;
3431+
#include "clang/Basic/AMDGPUTypes.def"
34263432
}
34273433
}
34283434

clang/lib/AST/MicrosoftMangle.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2612,6 +2612,8 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
26122612
#include "clang/Basic/PPCTypes.def"
26132613
#define RVV_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
26142614
#include "clang/Basic/RISCVVTypes.def"
2615+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
2616+
#include "clang/Basic/AMDGPUTypes.def"
26152617
case BuiltinType::ShortAccum:
26162618
case BuiltinType::Accum:
26172619
case BuiltinType::LongAccum:

clang/lib/AST/NSAPI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ NSAPI::getNSNumberFactoryMethodKind(QualType T) const {
453453
#include "clang/Basic/RISCVVTypes.def"
454454
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
455455
#include "clang/Basic/WebAssemblyReferenceTypes.def"
456+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
457+
#include "clang/Basic/AMDGPUTypes.def"
456458
case BuiltinType::BoundMember:
457459
case BuiltinType::UnresolvedTemplate:
458460
case BuiltinType::Dependent:

clang/lib/AST/PrintfFormatString.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,8 @@ bool PrintfSpecifier::fixType(QualType QT, const LangOptions &LangOpt,
865865
#include "clang/Basic/RISCVVTypes.def"
866866
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
867867
#include "clang/Basic/WebAssemblyReferenceTypes.def"
868+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
869+
#include "clang/Basic/AMDGPUTypes.def"
868870
#define SIGNED_TYPE(Id, SingletonId)
869871
#define UNSIGNED_TYPE(Id, SingletonId)
870872
#define FLOATING_TYPE(Id, SingletonId)

clang/lib/AST/Type.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3509,6 +3509,10 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const {
35093509
case Id: \
35103510
return Name;
35113511
#include "clang/Basic/WebAssemblyReferenceTypes.def"
3512+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
3513+
case Id: \
3514+
return Name;
3515+
#include "clang/Basic/AMDGPUTypes.def"
35123516
}
35133517

35143518
llvm_unreachable("Invalid builtin type.");
@@ -4778,6 +4782,8 @@ bool Type::canHaveNullability(bool ResultIfUnknown) const {
47784782
#include "clang/Basic/RISCVVTypes.def"
47794783
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
47804784
#include "clang/Basic/WebAssemblyReferenceTypes.def"
4785+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
4786+
#include "clang/Basic/AMDGPUTypes.def"
47814787
case BuiltinType::BuiltinFn:
47824788
case BuiltinType::NullPtr:
47834789
case BuiltinType::IncompleteMatrixIdx:

clang/lib/AST/TypeLoc.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,8 @@ TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const {
428428
#include "clang/Basic/RISCVVTypes.def"
429429
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
430430
#include "clang/Basic/WebAssemblyReferenceTypes.def"
431+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
432+
#include "clang/Basic/AMDGPUTypes.def"
431433
case BuiltinType::BuiltinFn:
432434
case BuiltinType::IncompleteMatrixIdx:
433435
case BuiltinType::ArraySection:

clang/lib/CodeGen/CGDebugInfo.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,16 @@ llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) {
865865
return SingletonId; \
866866
}
867867
#include "clang/Basic/WebAssemblyReferenceTypes.def"
868-
868+
#define AMDGPU_OPAQUE_PTR_TYPE(Name, MangledName, AS, Width, Align, Id, \
869+
SingletonId) \
870+
case BuiltinType::Id: { \
871+
if (!SingletonId) \
872+
SingletonId = \
873+
DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, \
874+
MangledName, TheCU, TheCU->getFile(), 0); \
875+
return SingletonId; \
876+
}
877+
#include "clang/Basic/AMDGPUTypes.def"
869878
case BuiltinType::UChar:
870879
case BuiltinType::Char_U:
871880
Encoding = llvm::dwarf::DW_ATE_unsigned_char;

clang/lib/CodeGen/CGDebugInfo.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ class CGDebugInfo {
8383
#include "clang/Basic/OpenCLExtensionTypes.def"
8484
#define WASM_TYPE(Name, Id, SingletonId) llvm::DIType *SingletonId = nullptr;
8585
#include "clang/Basic/WebAssemblyReferenceTypes.def"
86+
#define AMDGPU_TYPE(Name, Id, SingletonId) llvm::DIType *SingletonId = nullptr;
87+
#include "clang/Basic/AMDGPUTypes.def"
8688

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

clang/lib/CodeGen/CodeGenTypes.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,11 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) {
533533
llvm_unreachable("Unexpected wasm reference builtin type!"); \
534534
} break;
535535
#include "clang/Basic/WebAssemblyReferenceTypes.def"
536+
#define AMDGPU_OPAQUE_PTR_TYPE(Name, MangledName, AS, Width, Align, Id, \
537+
SingletonId) \
538+
case BuiltinType::Id: \
539+
return llvm::PointerType::get(getLLVMContext(), AS);
540+
#include "clang/Basic/AMDGPUTypes.def"
536541
case BuiltinType::Dependent:
537542
#define BUILTIN_TYPE(Id, SingletonId)
538543
#define PLACEHOLDER_TYPE(Id, SingletonId) \

clang/lib/CodeGen/ItaniumCXXABI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3362,6 +3362,8 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
33623362
#include "clang/Basic/RISCVVTypes.def"
33633363
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
33643364
#include "clang/Basic/WebAssemblyReferenceTypes.def"
3365+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
3366+
#include "clang/Basic/AMDGPUTypes.def"
33653367
case BuiltinType::ShortAccum:
33663368
case BuiltinType::Accum:
33673369
case BuiltinType::LongAccum:

clang/lib/Index/USRGeneration.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,11 @@ void USRGenerator::VisitType(QualType T) {
772772
#include "clang/Basic/RISCVVTypes.def"
773773
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
774774
#include "clang/Basic/WebAssemblyReferenceTypes.def"
775+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
776+
case BuiltinType::Id: \
777+
Out << "@BT@" << #Name; \
778+
break;
779+
#include "clang/Basic/AMDGPUTypes.def"
775780
case BuiltinType::ShortAccum:
776781
Out << "@BT@ShortAccum"; break;
777782
case BuiltinType::Accum:

clang/lib/Sema/Sema.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,14 @@ void Sema::Initialize() {
497497
#include "clang/Basic/WebAssemblyReferenceTypes.def"
498498
}
499499

500+
if (Context.getTargetInfo().getTriple().isAMDGPU() ||
501+
(Context.getAuxTargetInfo() &&
502+
Context.getAuxTargetInfo()->getTriple().isAMDGPU())) {
503+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
504+
addImplicitTypedef(Name, Context.SingletonId);
505+
#include "clang/Basic/AMDGPUTypes.def"
506+
}
507+
500508
if (Context.getTargetInfo().hasBuiltinMSVaList()) {
501509
DeclarationName MSVaList = &Context.Idents.get("__builtin_ms_va_list");
502510
if (IdResolver.begin(MSVaList) == IdResolver.end())

clang/lib/Sema/SemaExpr.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6169,6 +6169,8 @@ static bool isPlaceholderToRemoveAsArg(QualType type) {
61696169
#include "clang/Basic/RISCVVTypes.def"
61706170
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
61716171
#include "clang/Basic/WebAssemblyReferenceTypes.def"
6172+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
6173+
#include "clang/Basic/AMDGPUTypes.def"
61726174
#define PLACEHOLDER_TYPE(ID, SINGLETON_ID)
61736175
#define BUILTIN_TYPE(ID, SINGLETON_ID) case BuiltinType::ID:
61746176
#include "clang/AST/BuiltinTypes.def"
@@ -20992,6 +20994,8 @@ ExprResult Sema::CheckPlaceholderExpr(Expr *E) {
2099220994
#include "clang/Basic/RISCVVTypes.def"
2099320995
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
2099420996
#include "clang/Basic/WebAssemblyReferenceTypes.def"
20997+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
20998+
#include "clang/Basic/AMDGPUTypes.def"
2099520999
#define BUILTIN_TYPE(Id, SingletonId) case BuiltinType::Id:
2099621000
#define PLACEHOLDER_TYPE(Id, SingletonId)
2099721001
#include "clang/AST/BuiltinTypes.def"

clang/lib/Serialization/ASTCommon.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,11 @@ serialization::TypeIdxFromBuiltin(const BuiltinType *BT) {
258258
ID = PREDEF_TYPE_##Id##_ID; \
259259
break;
260260
#include "clang/Basic/WebAssemblyReferenceTypes.def"
261+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
262+
case BuiltinType::Id: \
263+
ID = PREDEF_TYPE_##Id##_ID; \
264+
break;
265+
#include "clang/Basic/AMDGPUTypes.def"
261266
case BuiltinType::BuiltinFn:
262267
ID = PREDEF_TYPE_BUILTIN_FN;
263268
break;

clang/lib/Serialization/ASTReader.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7401,6 +7401,11 @@ QualType ASTReader::GetType(TypeID ID) {
74017401
T = Context.SingletonId; \
74027402
break;
74037403
#include "clang/Basic/WebAssemblyReferenceTypes.def"
7404+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
7405+
case PREDEF_TYPE_##Id##_ID: \
7406+
T = Context.SingletonId; \
7407+
break;
7408+
#include "clang/Basic/AMDGPUTypes.def"
74047409
}
74057410

74067411
assert(!T.isNull() && "Unknown predefined type");
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// REQUIRES: amdgpu-registered-target
2+
// Test without serialization:
3+
// RUN: %clang_cc1 -triple amdgcn -ast-dump -ast-dump-filter __amdgpu_buffer_rsrc_t %s | FileCheck %s
4+
//
5+
// Test with serialization:
6+
// RUN: %clang_cc1 -triple amdgcn -emit-pch -o %t %s
7+
// RUN: %clang_cc1 -x c -triple amdgcn -include-pch %t -ast-dump-all -ast-dump-filter __amdgpu_buffer_rsrc_t /dev/null | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" | FileCheck %s
8+
9+
// CHECK: TypedefDecl {{.*}} implicit __amdgpu_buffer_rsrc_t
10+
// CHECK-NEXT: -BuiltinType {{.*}} '__amdgpu_buffer_rsrc_t'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// REQUIRES: amdgpu-registered-target
2+
// RUN: %clang_cc1 -triple amdgcn -emit-llvm -o - %s -debug-info-kind=limited 2>&1 | FileCheck %s
3+
4+
// CHECK: name: "__amdgpu_buffer_rsrc_t",{{.*}}baseType: ![[BT:[0-9]+]]
5+
// CHECK: [[BT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "__amdgpu_buffer_rsrc_t", {{.*}} flags: DIFlagFwdDecl)
6+
void test_locals(void) {
7+
__amdgpu_buffer_rsrc_t k;
8+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// REQUIRES: amdgpu-registered-target
2+
// RUN: %clang_cc1 -triple amdgcn %s -emit-llvm -o - | FileCheck %s
3+
4+
namespace std { class type_info; };
5+
6+
auto &b = typeid(__amdgpu_buffer_rsrc_t);
7+
8+
// CHECK-DAG: @_ZTSu22__amdgpu_buffer_rsrc_t = {{.*}} c"u22__amdgpu_buffer_rsrc_t\00"
9+
// CHECK-DAG: @_ZTIu22__amdgpu_buffer_rsrc_t = {{.*}} @_ZTVN10__cxxabiv123__fundamental_type_infoE, {{.*}} @_ZTSu22__amdgpu_buffer_rsrc_t

0 commit comments

Comments
 (0)