|
12 | 12 |
|
13 | 13 | #include "flang/Optimizer/CodeGen/CodeGen.h"
|
14 | 14 |
|
15 |
| -#include "CGOps.h" |
| 15 | +#include "flang/Optimizer/CodeGen/CGOps.h" |
16 | 16 | #include "flang/Optimizer/CodeGen/CodeGenOpenMP.h"
|
17 | 17 | #include "flang/Optimizer/CodeGen/FIROpPatterns.h"
|
18 | 18 | #include "flang/Optimizer/CodeGen/TypeConverter.h"
|
@@ -170,6 +170,28 @@ genAllocationScaleSize(OP op, mlir::Type ity,
|
170 | 170 | return nullptr;
|
171 | 171 | }
|
172 | 172 |
|
| 173 | +namespace { |
| 174 | +struct DeclareOpConversion : public fir::FIROpConversion<fir::cg::XDeclareOp> { |
| 175 | +public: |
| 176 | + using FIROpConversion::FIROpConversion; |
| 177 | + mlir::LogicalResult |
| 178 | + matchAndRewrite(fir::cg::XDeclareOp declareOp, OpAdaptor adaptor, |
| 179 | + mlir::ConversionPatternRewriter &rewriter) const override { |
| 180 | + auto memRef = adaptor.getOperands()[0]; |
| 181 | + if (auto fusedLoc = mlir::dyn_cast<mlir::FusedLoc>(declareOp.getLoc())) { |
| 182 | + if (auto varAttr = |
| 183 | + mlir::dyn_cast_or_null<mlir::LLVM::DILocalVariableAttr>( |
| 184 | + fusedLoc.getMetadata())) { |
| 185 | + rewriter.create<mlir::LLVM::DbgDeclareOp>(memRef.getLoc(), memRef, |
| 186 | + varAttr, nullptr); |
| 187 | + } |
| 188 | + } |
| 189 | + rewriter.replaceOp(declareOp, memRef); |
| 190 | + return mlir::success(); |
| 191 | + } |
| 192 | +}; |
| 193 | +} // namespace |
| 194 | + |
173 | 195 | namespace {
|
174 | 196 | /// convert to LLVM IR dialect `alloca`
|
175 | 197 | struct AllocaOpConversion : public fir::FIROpConversion<fir::AllocaOp> {
|
@@ -3714,19 +3736,19 @@ void fir::populateFIRToLLVMConversionPatterns(
|
3714 | 3736 | BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
|
3715 | 3737 | BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
|
3716 | 3738 | CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
|
3717 |
| - CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion, |
3718 |
| - EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion, |
3719 |
| - ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion, |
3720 |
| - FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion, |
3721 |
| - HasValueOpConversion, InsertOnRangeOpConversion, InsertValueOpConversion, |
3722 |
| - IsPresentOpConversion, LenParamIndexOpConversion, LoadOpConversion, |
3723 |
| - MulcOpConversion, NegcOpConversion, NoReassocOpConversion, |
3724 |
| - SelectCaseOpConversion, SelectOpConversion, SelectRankOpConversion, |
3725 |
| - SelectTypeOpConversion, ShapeOpConversion, ShapeShiftOpConversion, |
3726 |
| - ShiftOpConversion, SliceOpConversion, StoreOpConversion, |
3727 |
| - StringLitOpConversion, SubcOpConversion, TypeDescOpConversion, |
3728 |
| - TypeInfoOpConversion, UnboxCharOpConversion, UnboxProcOpConversion, |
3729 |
| - UndefOpConversion, UnreachableOpConversion, |
| 3739 | + CoordinateOpConversion, DTEntryOpConversion, DeclareOpConversion, |
| 3740 | + DivcOpConversion, EmboxOpConversion, EmboxCharOpConversion, |
| 3741 | + EmboxProcOpConversion, ExtractValueOpConversion, FieldIndexOpConversion, |
| 3742 | + FirEndOpConversion, FreeMemOpConversion, GlobalLenOpConversion, |
| 3743 | + GlobalOpConversion, HasValueOpConversion, InsertOnRangeOpConversion, |
| 3744 | + InsertValueOpConversion, IsPresentOpConversion, LenParamIndexOpConversion, |
| 3745 | + LoadOpConversion, MulcOpConversion, NegcOpConversion, |
| 3746 | + NoReassocOpConversion, SelectCaseOpConversion, SelectOpConversion, |
| 3747 | + SelectRankOpConversion, SelectTypeOpConversion, ShapeOpConversion, |
| 3748 | + ShapeShiftOpConversion, ShiftOpConversion, SliceOpConversion, |
| 3749 | + StoreOpConversion, StringLitOpConversion, SubcOpConversion, |
| 3750 | + TypeDescOpConversion, TypeInfoOpConversion, UnboxCharOpConversion, |
| 3751 | + UnboxProcOpConversion, UndefOpConversion, UnreachableOpConversion, |
3730 | 3752 | UnrealizedConversionCastOpConversion, XArrayCoorOpConversion,
|
3731 | 3753 | XEmboxOpConversion, XReboxOpConversion, ZeroOpConversion>(converter,
|
3732 | 3754 | options);
|
|
0 commit comments