From 9069e21d9a3160488658f3bcc39186b95f2e00a3 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Fri, 20 Oct 2023 14:42:10 -0500 Subject: [PATCH] [Libomptarget][NFC] Remove use of VLA in the AMDGPU plugin Summary: We should not rely on a VLA in C++ for the handling of this string. The size is a true runtime value so we cannot rely on constexpr handling. We simply use a small vector, whose default size is most likely large enough to handle whatever size gets output within the stack, but is safe in cases where it is not. --- openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp b/openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp index 66a25e29d016276..148ca09654092cb 100644 --- a/openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp +++ b/openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp @@ -2869,15 +2869,14 @@ struct AMDGPUPluginTy final : public GenericPluginTy { if (Status != HSA_STATUS_SUCCESS) return Status; - // TODO: This is not allowed by the standard. - char ISAName[Length]; - Status = hsa_isa_get_info_alt(ISA, HSA_ISA_INFO_NAME, ISAName); + llvm::SmallVector ISAName(Length); + Status = hsa_isa_get_info_alt(ISA, HSA_ISA_INFO_NAME, ISAName.begin()); if (Status != HSA_STATUS_SUCCESS) return Status; - llvm::StringRef TripleTarget(ISAName); + llvm::StringRef TripleTarget(ISAName.begin(), Length); if (TripleTarget.consume_front("amdgcn-amd-amdhsa")) - Target = TripleTarget.ltrim('-').str(); + Target = TripleTarget.ltrim('-').rtrim('\0').str(); return HSA_STATUS_SUCCESS; }); if (Err)