@@ -32,7 +32,7 @@ mlir::Value CIRGenBuilderTy::promoteArrayIndex(const clang::TargetInfo &ti,
32
32
mlir::Location loc,
33
33
mlir::Value index) {
34
34
// Get the array index type.
35
- auto arrayIndexWidth = TI .getTypeWidth (clang::TargetInfo::IntType::SignedInt);
35
+ auto arrayIndexWidth = ti .getTypeWidth (clang::TargetInfo::IntType::SignedInt);
36
36
mlir::Type arrayIndexType = getSIntNTy (arrayIndexWidth);
37
37
38
38
// If this is a boolean, zero-extend it to the array index type.
@@ -50,23 +50,23 @@ mlir::Value CIRGenBuilderTy::promoteArrayIndex(const clang::TargetInfo &ti,
50
50
return index;
51
51
}
52
52
53
- mlir::Value CIRGenBuilderTy::getArrayElement (const clang::TargetInfo &TI ,
53
+ mlir::Value CIRGenBuilderTy::getArrayElement (const clang::TargetInfo &ti ,
54
54
mlir::Location arrayLocBegin,
55
55
mlir::Location arrayLocEnd,
56
56
mlir::Value arrayPtr,
57
57
mlir::Type eltTy, mlir::Value idx,
58
58
bool shouldDecay) {
59
+ auto arrayPtrTy = dyn_cast<cir::PointerType>(arrayPtr.getType ());
60
+ assert (arrayPtrTy && " expected pointer type" );
61
+
59
62
// If the array pointer is not decayed, emit a GetElementOp.
60
- if (shouldDecay)
61
- if (auto arrayPtrTy = dyn_cast<cir::PointerType>(arrayPtr.getType ()))
62
- if (auto arrayTy = dyn_cast<cir::ArrayType>(arrayPtrTy.getPointee ()))
63
- if (arrayTy == eltTy) {
64
- auto eltPtrTy =
65
- getPointerTo (arrayTy.getElementType (), arrayPtrTy.getAddrSpace ());
66
- return create<cir::GetElementOp>(
67
- arrayLocEnd, eltPtrTy, arrayPtr,
68
- promoteArrayIndex (TI, arrayLocBegin, idx));
69
- }
63
+ auto arrayTy = dyn_cast<cir::ArrayType>(arrayPtrTy.getPointee ());
64
+ if (shouldDecay && arrayTy && arrayTy == eltTy) {
65
+ auto eltPtrTy =
66
+ getPointerTo (arrayTy.getElementType (), arrayPtrTy.getAddrSpace ());
67
+ return create<cir::GetElementOp>(arrayLocEnd, eltPtrTy, arrayPtr,
68
+ promoteArrayIndex (ti, arrayLocBegin, idx));
69
+ }
70
70
71
71
// If we don't have sufficient type information, emit a PtrStrideOp.
72
72
mlir::Value basePtr = arrayPtr;
0 commit comments