From 8f2c9cba3d0092abfc20266885cd7519b10e5a6d Mon Sep 17 00:00:00 2001 From: Alex Voicu Date: Mon, 4 Aug 2025 23:02:41 +0100 Subject: [PATCH] `va_list` type should be matched between AMDGPU and AMDGCNSPIRV. --- clang/lib/Basic/Targets/SPIR.h | 4 ++++ clang/test/Sema/amdgcn-va-list-type.c | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 clang/test/Sema/amdgcn-va-list-type.c diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h index c13b286cd7916..9d0ced2afdbc7 100644 --- a/clang/lib/Basic/Targets/SPIR.h +++ b/clang/lib/Basic/Targets/SPIR.h @@ -438,6 +438,10 @@ class LLVM_LIBRARY_VISIBILITY SPIRV64AMDGCNTargetInfo final ArrayRef getGCCRegNames() const override; + BuiltinVaListKind getBuiltinVaListKind() const override { + return TargetInfo::CharPtrBuiltinVaList; + } + bool initFeatureMap(llvm::StringMap &Features, DiagnosticsEngine &Diags, StringRef, const std::vector &) const override; diff --git a/clang/test/Sema/amdgcn-va-list-type.c b/clang/test/Sema/amdgcn-va-list-type.c new file mode 100644 index 0000000000000..1c0e93adabae4 --- /dev/null +++ b/clang/test/Sema/amdgcn-va-list-type.c @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 %s -triple amdgcn-amd-amdhsa -fsyntax-only -verify +// RUN: %clang_cc1 %s -triple spirv64-amd-amdhsa -fsyntax-only -verify + +// expected-no-diagnostics + +typedef char* va_list; + +void foo(const char* f, ...) { + int r; + va_list args; + __builtin_va_start(args, f); + __builtin_va_end(args); +} \ No newline at end of file