summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp')
-rw-r--r--llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp b/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp
index 1674cef7cb82..9e4ba2191366 100644
--- a/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp
@@ -243,8 +243,12 @@ static SPIRVType *getArgSPIRVType(const Function &F, unsigned ArgIdx,
continue;
MetadataAsValue *VMD = cast<MetadataAsValue>(II->getOperand(1));
- SPIRVType *ElementType = GR->getOrCreateSPIRVType(
- cast<ConstantAsMetadata>(VMD->getMetadata())->getType(), MIRBuilder);
+ Type *ElementTy = cast<ConstantAsMetadata>(VMD->getMetadata())->getType();
+ if (isUntypedPointerTy(ElementTy))
+ ElementTy =
+ TypedPointerType::get(IntegerType::getInt8Ty(II->getContext()),
+ getPointerAddressSpace(ElementTy));
+ SPIRVType *ElementType = GR->getOrCreateSPIRVType(ElementTy, MIRBuilder);
return GR->getOrCreateSPIRVPointerType(
ElementType, MIRBuilder,
addressSpaceToStorageClass(