https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/73887
>From e369b5d62094c9b48f3c33075d764c115a208a74 Mon Sep 17 00:00:00 2001 From: Wenju He <wenju...@intel.com> Date: Thu, 30 Nov 2023 09:57:06 +0800 Subject: [PATCH] [IR] Disallow ZeroInit for spirv.Image According to spirv spec, OpConstantNull's result type can't be image type. So we can't generate zeroinitializer for spirv.Image. --- llvm/lib/IR/Type.cpp | 2 ++ llvm/unittests/Transforms/Utils/ValueMapperTest.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/IR/Type.cpp b/llvm/lib/IR/Type.cpp index 3d2e203a20dac7..e3a09018ad8b98 100644 --- a/llvm/lib/IR/Type.cpp +++ b/llvm/lib/IR/Type.cpp @@ -841,6 +841,8 @@ struct TargetTypeInfo { static TargetTypeInfo getTargetTypeInfo(const TargetExtType *Ty) { LLVMContext &C = Ty->getContext(); StringRef Name = Ty->getName(); + if (Name.equals("spirv.Image")) + return TargetTypeInfo(PointerType::get(C, 0), TargetExtType::CanBeGlobal); if (Name.startswith("spirv.")) return TargetTypeInfo(PointerType::get(C, 0), TargetExtType::HasZeroInit, TargetExtType::CanBeGlobal); diff --git a/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp b/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp index 17083b3846430d..c0c9d383ac1816 100644 --- a/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp +++ b/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp @@ -423,7 +423,7 @@ TEST(ValueMapperTest, mapValuePoisonWithTypeRemap) { TEST(ValueMapperTest, mapValueConstantTargetNoneToLayoutTypeNullValue) { LLVMContext C; - auto *OldTy = TargetExtType::get(C, "spirv.Image"); + auto *OldTy = TargetExtType::get(C, "spirv.Event"); Type *NewTy = OldTy->getLayoutType(); TestTypeRemapper TM(NewTy); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits