Skip to content

Commit 00d1e25

Browse files
xlaukoIanWood1
authored andcommitted
[CIR] Infer MLIR context in type builders when possible (llvm#136362)
This mirrors incubator changes from llvm/clangir#1570
1 parent e62c3ea commit 00d1e25

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

clang/include/clang/CIR/Dialect/IR/CIRTypes.td

+8
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,14 @@ def CIR_ArrayType : CIR_Type<"Array", "array",
294294

295295
let parameters = (ins "mlir::Type":$eltType, "uint64_t":$size);
296296

297+
let builders = [
298+
TypeBuilderWithInferredContext<(ins
299+
"mlir::Type":$eltType, "uint64_t":$size
300+
), [{
301+
return $_get(eltType.getContext(), eltType, size);
302+
}]>,
303+
];
304+
297305
let assemblyFormat = [{
298306
`<` $eltType `x` $size `>`
299307
}];

clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,7 @@ emitArrayConstant(CIRGenModule &cgm, mlir::Type desiredType,
206206
eles.push_back(element);
207207

208208
return cir::ConstArrayAttr::get(
209-
cir::ArrayType::get(builder.getContext(), commonElementType,
210-
arrayBound),
209+
cir::ArrayType::get(commonElementType, arrayBound),
211210
mlir::ArrayAttr::get(builder.getContext(), eles));
212211
}
213212

clang/lib/CIR/CodeGen/CIRGenRecordLayoutBuilder.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ struct CIRRecordLowering final {
102102
mlir::Type type = getCharType();
103103
return numberOfChars == CharUnits::One()
104104
? type
105-
: cir::ArrayType::get(type.getContext(), type,
106-
numberOfChars.getQuantity());
105+
: cir::ArrayType::get(type, numberOfChars.getQuantity());
107106
}
108107

109108
mlir::Type getStorageType(const FieldDecl *fieldDecl) {

clang/lib/CIR/CodeGen/CIRGenTypes.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,7 @@ mlir::Type CIRGenTypes::convertType(QualType type) {
395395
case Type::ConstantArray: {
396396
const ConstantArrayType *arrTy = cast<ConstantArrayType>(ty);
397397
mlir::Type elemTy = convertTypeForMem(arrTy->getElementType());
398-
resultType = cir::ArrayType::get(builder.getContext(), elemTy,
399-
arrTy->getSize().getZExtValue());
398+
resultType = cir::ArrayType::get(elemTy, arrTy->getSize().getZExtValue());
400399
break;
401400
}
402401

0 commit comments

Comments
 (0)