浏览代码

HLMatrixSubscript lowering: support lowering directly to array

Tex Riddell 5 年之前
父节点
当前提交
8a54ceba7c
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      lib/HLSL/HLMatrixSubscriptUseReplacer.cpp

+ 4 - 1
lib/HLSL/HLMatrixSubscriptUseReplacer.cpp

@@ -237,7 +237,10 @@ Value *HLMatrixSubscriptUseReplacer::loadVector(IRBuilder<> &Builder) {
   }
 
   // Otherwise load elements one by one
-  Type* ElemTy = LoweredPtr->getType()->getPointerElementType()->getScalarType();
+  // Lowered form may be array when AllowLoweredPtrGEPs == true.
+  Type* LoweredTy = LoweredPtr->getType()->getPointerElementType();
+  Type* ElemTy = LoweredTy->isVectorTy() ? LoweredTy->getScalarType() :
+              cast<ArrayType>(LoweredTy)->getArrayElementType();
   VectorType *VecTy = VectorType::get(ElemTy, static_cast<unsigned>(ElemIndices.size()));
   Value *Result = UndefValue::get(VecTy);
   for (unsigned SubIdx = 0; SubIdx < ElemIndices.size(); ++SubIdx) {