[SPIR-V] Improve portability of the code (#123584)

Adding SPIRV to LLVM_ALL_TARGETS
(https://github.com/llvm/llvm-project/pull/119653) revealed a series of
minor compilation problems and sanitizer complaints. This PR is to
address the problem.
This commit is contained in:
Vyacheslav Levytskyy 2025-01-20 12:05:15 +01:00 committed by GitHub
parent 96c4f978d0
commit fe7cb15606
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 9 deletions

View File

@ -535,15 +535,15 @@ extern Register insertAssignInstr(Register Reg, Type *Ty, SPIRVType *SpirvTy,
static SPIRV::MemorySemantics::MemorySemantics static SPIRV::MemorySemantics::MemorySemantics
getSPIRVMemSemantics(std::memory_order MemOrder) { getSPIRVMemSemantics(std::memory_order MemOrder) {
switch (MemOrder) { switch (MemOrder) {
case std::memory_order::memory_order_relaxed: case std::memory_order_relaxed:
return SPIRV::MemorySemantics::None; return SPIRV::MemorySemantics::None;
case std::memory_order::memory_order_acquire: case std::memory_order_acquire:
return SPIRV::MemorySemantics::Acquire; return SPIRV::MemorySemantics::Acquire;
case std::memory_order::memory_order_release: case std::memory_order_release:
return SPIRV::MemorySemantics::Release; return SPIRV::MemorySemantics::Release;
case std::memory_order::memory_order_acq_rel: case std::memory_order_acq_rel:
return SPIRV::MemorySemantics::AcquireRelease; return SPIRV::MemorySemantics::AcquireRelease;
case std::memory_order::memory_order_seq_cst: case std::memory_order_seq_cst:
return SPIRV::MemorySemantics::SequentiallyConsistent; return SPIRV::MemorySemantics::SequentiallyConsistent;
default: default:
report_fatal_error("Unknown CL memory scope"); report_fatal_error("Unknown CL memory scope");

View File

@ -22,6 +22,7 @@
#include "SPIRVSubtarget.h" #include "SPIRVSubtarget.h"
#include "SPIRVTargetMachine.h" #include "SPIRVTargetMachine.h"
#include "SPIRVUtils.h" #include "SPIRVUtils.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/ValueTracking.h" #include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/IntrinsicLowering.h" #include "llvm/CodeGen/IntrinsicLowering.h"
#include "llvm/IR/IRBuilder.h" #include "llvm/IR/IRBuilder.h"
@ -30,7 +31,6 @@
#include "llvm/IR/IntrinsicsSPIRV.h" #include "llvm/IR/IntrinsicsSPIRV.h"
#include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/LowerMemIntrinsics.h" #include "llvm/Transforms/Utils/LowerMemIntrinsics.h"
#include <charconv>
#include <regex> #include <regex>
using namespace llvm; using namespace llvm;
@ -228,9 +228,7 @@ static SmallVector<Metadata *> parseAnnotation(Value *I,
} else { } else {
MDsItem.push_back(MDString::get(Ctx, Item)); MDsItem.push_back(MDString::get(Ctx, Item));
} }
} else if (int32_t Num; } else if (int32_t Num; llvm::to_integer(StringRef(Item), Num, 10)) {
std::from_chars(Item.data(), Item.data() + Item.size(), Num)
.ec == std::errc{}) {
MDsItem.push_back( MDsItem.push_back(
ConstantAsMetadata::get(ConstantInt::get(Int32Ty, Num))); ConstantAsMetadata::get(ConstantInt::get(Int32Ty, Num)));
} else { } else {

View File

@ -22,6 +22,7 @@
#include "llvm/IR/TypedPointerType.h" #include "llvm/IR/TypedPointerType.h"
#include <queue> #include <queue>
#include <string> #include <string>
#include <unordered_map>
#include <unordered_set> #include <unordered_set>
namespace llvm { namespace llvm {