@@ -1626,7 +1626,16 @@ class CIRGetGlobalOpLowering
1626
1626
1627
1627
auto type = getTypeConverter ()->convertType (op.getType ());
1628
1628
auto symbol = op.getName ();
1629
- rewriter.replaceOpWithNewOp <mlir::LLVM::AddressOfOp>(op, type, symbol);
1629
+ mlir::Operation *newop =
1630
+ rewriter.create <mlir::LLVM::AddressOfOp>(op.getLoc (), type, symbol);
1631
+
1632
+ if (op.getTls ()) {
1633
+ // Handle access to TLS via intrinsic.
1634
+ newop = rewriter.create <mlir::LLVM::ThreadlocalAddressOp>(
1635
+ op.getLoc (), type, newop->getResult (0 ));
1636
+ }
1637
+
1638
+ rewriter.replaceOp (op, newop);
1630
1639
return mlir::success ();
1631
1640
}
1632
1641
};
@@ -2291,36 +2300,6 @@ class CIRBitClrsbOpLowering
2291
2300
}
2292
2301
};
2293
2302
2294
- class CIRObjSizeOpLowering
2295
- : public mlir::OpConversionPattern<mlir::cir::ObjSizeOp> {
2296
- public:
2297
- using OpConversionPattern<mlir::cir::ObjSizeOp>::OpConversionPattern;
2298
-
2299
- mlir::LogicalResult
2300
- matchAndRewrite (mlir::cir::ObjSizeOp op, OpAdaptor adaptor,
2301
- mlir::ConversionPatternRewriter &rewriter) const override {
2302
- auto llvmResTy = getTypeConverter ()->convertType (op.getType ());
2303
- auto loc = op->getLoc ();
2304
-
2305
- auto llvmIntrinNameAttr =
2306
- mlir::StringAttr::get (rewriter.getContext (), " llvm.objectsize" );
2307
- mlir::cir::SizeInfoType kindInfo = op.getKind ();
2308
- auto falseValue = rewriter.create <mlir::LLVM::ConstantOp>(
2309
- loc, rewriter.getI1Type (), false );
2310
- auto trueValue = rewriter.create <mlir::LLVM::ConstantOp>(
2311
- loc, rewriter.getI1Type (), true );
2312
-
2313
- rewriter.replaceOpWithNewOp <mlir::LLVM::CallIntrinsicOp>(
2314
- op, llvmResTy, llvmIntrinNameAttr,
2315
- mlir::ValueRange{adaptor.getPtr (),
2316
- kindInfo == mlir::cir::SizeInfoType::max ? falseValue
2317
- : trueValue,
2318
- trueValue, op.getDynamic () ? trueValue : falseValue});
2319
-
2320
- return mlir::LogicalResult::success ();
2321
- }
2322
- };
2323
-
2324
2303
class CIRBitClzOpLowering
2325
2304
: public mlir::OpConversionPattern<mlir::cir::BitClzOp> {
2326
2305
public:
@@ -3083,8 +3062,8 @@ void populateCIRToLLVMConversionPatterns(mlir::RewritePatternSet &patterns,
3083
3062
CIRVectorShuffleVecLowering, CIRStackSaveLowering,
3084
3063
CIRStackRestoreLowering, CIRUnreachableLowering, CIRTrapLowering,
3085
3064
CIRInlineAsmOpLowering, CIRSetBitfieldLowering, CIRGetBitfieldLowering,
3086
- CIRPrefetchLowering, CIRObjSizeOpLowering, CIRIsConstantOpLowering>(
3087
- converter, patterns.getContext ());
3065
+ CIRPrefetchLowering, CIRIsConstantOpLowering>(converter,
3066
+ patterns.getContext ());
3088
3067
}
3089
3068
3090
3069
namespace {
0 commit comments