diff --git a/mlir/lib/Dialect/SPIRV/SPIRVTypes.cpp b/mlir/lib/Dialect/SPIRV/SPIRVTypes.cpp --- a/mlir/lib/Dialect/SPIRV/SPIRVTypes.cpp +++ b/mlir/lib/Dialect/SPIRV/SPIRVTypes.cpp @@ -335,14 +335,18 @@ SPIRVType::ExtensionArrayRefVector &extensions, Optional storage) { getElementType().cast().getExtensions(extensions, storage); - extensions.push_back(Extension::SPV_NV_cooperative_matrix); + static const Extension exts[] = {Extension::SPV_NV_cooperative_matrix}; + ArrayRef ref(exts, llvm::array_lengthof(exts)); + extensions.push_back(ref); } void CooperativeMatrixNVType::getCapabilities( SPIRVType::CapabilityArrayRefVector &capabilities, Optional storage) { getElementType().cast().getCapabilities(capabilities, storage); - capabilities.push_back(Capability::CooperativeMatrixNV); + static const Capability caps[] = {Capability::CooperativeMatrixNV}; + ArrayRef ref(caps, llvm::array_lengthof(caps)); + capabilities.push_back(ref); } //===----------------------------------------------------------------------===//