Skip to content

Commit 7b31bbb

Browse files
committed
[Clang][AMDGPU] Add a new builtin type for buffer rsrc
1 parent 29d857f commit 7b31bbb

29 files changed

+251
-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
@@ -1094,6 +1094,9 @@ enum PredefinedTypeIDs {
10941094
// \brief WebAssembly reference types with auto numeration
10951095
#define WASM_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
10961096
#include "clang/Basic/WebAssemblyReferenceTypes.def"
1097+
// \brief AMDGPU types with auto numeration
1098+
#define AMDGPU_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1099+
#include "clang/Basic/AMDGPUTypes.def"
10971100

10981101
/// The placeholder type for unresolved templates.
10991102
PREDEF_TYPE_UNRESOLVED_TEMPLATE,
@@ -1106,7 +1109,7 @@ enum PredefinedTypeIDs {
11061109
///
11071110
/// Type IDs for non-predefined types will start at
11081111
/// NUM_PREDEF_TYPE_IDs.
1109-
const unsigned NUM_PREDEF_TYPE_IDS = 503;
1112+
const unsigned NUM_PREDEF_TYPE_IDS = 504;
11101113

11111114
// Ensure we do not overrun the predefined types we reserved
11121115
// in the enum PredefinedTypeIDs above.

clang/lib/AST/ASTContext.cpp

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

1387+
if (Target.getTriple().isAMDGPU() ||
1388+
(AuxTarget && AuxTarget->getTriple().isAMDGPU())) {
1389+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
1390+
InitBuiltinType(SingletonId, BuiltinType::Id);
1391+
#include "clang/Basic/AMDGPUTypes.def"
1392+
}
1393+
13871394
// Builtin type for __objc_yes and __objc_no
13881395
ObjCBuiltinBoolTy = (Target.useSignedCharForObjCBool() ?
13891396
SignedCharTy : BoolTy);
@@ -2200,6 +2207,13 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const {
22002207
Align = 8; \
22012208
break;
22022209
#include "clang/Basic/WebAssemblyReferenceTypes.def"
2210+
#define AMDGPU_OPAQUE_PTR_TYPE(NAME, MANGLEDNAME, AS, WIDTH, ALIGN, ID, \
2211+
SINGLETONID) \
2212+
case BuiltinType::ID: \
2213+
Width = WIDTH; \
2214+
Align = ALIGN; \
2215+
break;
2216+
#include "clang/Basic/AMDGPUTypes.def"
22032217
}
22042218
break;
22052219
case Type::ObjCObjectPointer:
@@ -8168,6 +8182,8 @@ static char getObjCEncodingForPrimitiveType(const ASTContext *C,
81688182
#include "clang/Basic/RISCVVTypes.def"
81698183
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
81708184
#include "clang/Basic/WebAssemblyReferenceTypes.def"
8185+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
8186+
#include "clang/Basic/AMDGPUTypes.def"
81718187
{
81728188
DiagnosticsEngine &Diags = C->getDiagnostics();
81738189
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
@@ -11807,6 +11807,8 @@ GCCTypeClass EvaluateBuiltinClassifyType(QualType T,
1180711807
#include "clang/Basic/RISCVVTypes.def"
1180811808
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
1180911809
#include "clang/Basic/WebAssemblyReferenceTypes.def"
11810+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
11811+
#include "clang/Basic/AMDGPUTypes.def"
1181011812
return GCCTypeClass::None;
1181111813

1181211814
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
@@ -3360,6 +3360,8 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
33603360
#include "clang/Basic/RISCVVTypes.def"
33613361
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
33623362
#include "clang/Basic/WebAssemblyReferenceTypes.def"
3363+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
3364+
#include "clang/Basic/AMDGPUTypes.def"
33633365
case BuiltinType::ShortAccum:
33643366
case BuiltinType::Accum:
33653367
case BuiltinType::LongAccum:

clang/lib/Index/USRGeneration.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,10 @@ void USRGenerator::VisitType(QualType T) {
770770
case BuiltinType::Id: \
771771
Out << "@BT@" << Name; break;
772772
#include "clang/Basic/RISCVVTypes.def"
773+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
774+
case BuiltinType::Id: \
775+
Out << "@BT@" << #Name; break;
776+
#include "clang/Basic/AMDGPUTypes.def"
773777
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
774778
#include "clang/Basic/WebAssemblyReferenceTypes.def"
775779
case BuiltinType::ShortAccum:

clang/lib/Sema/Sema.cpp

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

500+
if (Context.getTargetInfo().getTriple().isAMDGPU() ||
501+
Context.getAuxTargetInfo()->getTriple().isAMDGPU()) {
502+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
503+
addImplicitTypedef(Name, Context.SingletonId);
504+
#include "clang/Basic/AMDGPUTypes.def"
505+
}
506+
500507
if (Context.getTargetInfo().hasBuiltinMSVaList()) {
501508
DeclarationName MSVaList = &Context.Idents.get("__builtin_ms_va_list");
502509
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"
@@ -21003,6 +21005,8 @@ ExprResult Sema::CheckPlaceholderExpr(Expr *E) {
2100321005
#include "clang/Basic/RISCVVTypes.def"
2100421006
#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
2100521007
#include "clang/Basic/WebAssemblyReferenceTypes.def"
21008+
#define AMDGPU_TYPE(Name, Id, SingletonId) case BuiltinType::Id:
21009+
#include "clang/Basic/AMDGPUTypes.def"
2100621010
#define BUILTIN_TYPE(Id, SingletonId) case BuiltinType::Id:
2100721011
#define PLACEHOLDER_TYPE(Id, SingletonId)
2100821012
#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
@@ -7394,6 +7394,11 @@ QualType ASTReader::GetType(TypeID ID) {
73947394
T = Context.SingletonId; \
73957395
break;
73967396
#include "clang/Basic/WebAssemblyReferenceTypes.def"
7397+
#define AMDGPU_TYPE(Name, Id, SingletonId) \
7398+
case PREDEF_TYPE_##Id##_ID: \
7399+
T = Context.SingletonId; \
7400+
break;
7401+
#include "clang/Basic/AMDGPUTypes.def"
73977402
}
73987403

73997404
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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
// REQUIRES: amdgpu-registered-target
3+
// RUN: %clang_cc1 -triple amdgcn -emit-llvm -o - %s -debug-info-kind=limited 2>&1 | FileCheck %s
4+
5+
// CHECK: name: "__amdgpu_buffer_rsrc_t",{{.*}}baseType: ![[BT:[0-9]+]]
6+
// CHECK: [[BT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "__amdgpu_buffer_rsrc_t", {{.*}} flags: DIFlagFwdDecl)
7+
void test_locals(void) {
8+
__amdgpu_buffer_rsrc_t k;
9+
}
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)