[flang-commits] [flang] Revert "[flang] Initial debug info support for local variables. (#909… (PR #92302)
via flang-commits
flang-commits at lists.llvm.org
Wed May 15 11:31:01 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-codegen
Author: Pete Steinfeld (psteinfeld)
<details>
<summary>Changes</summary>
…05)"
This reverts commit 61da6366d043792d7db280ce9edd2db62516e0e8.
Update #<!-- -->90905 was causing many tests to fail.
See comments in #<!-- -->90905.
---
Patch is 31.53 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/92302.diff
14 Files Affected:
- (modified) flang/include/flang/Optimizer/CodeGen/CGOps.td (-34)
- (modified) flang/include/flang/Optimizer/CodeGen/CGPasses.td (-4)
- (modified) flang/include/flang/Optimizer/CodeGen/CodeGen.h (+2-4)
- (modified) flang/include/flang/Tools/CLOptions.inc (+4-7)
- (modified) flang/lib/Optimizer/CodeGen/CGOps.cpp (+1-1)
- (renamed) flang/lib/Optimizer/CodeGen/CGOps.h (-1)
- (modified) flang/lib/Optimizer/CodeGen/CodeGen.cpp (+14-36)
- (modified) flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp (+8-41)
- (modified) flang/lib/Optimizer/Transforms/AddDebugInfo.cpp (+4-52)
- (modified) flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp (+5-5)
- (modified) flang/test/Fir/declare-codegen.fir (+6-16)
- (modified) flang/test/Fir/dummy-scope-codegen.fir (+3-8)
- (removed) flang/test/Transforms/debug-local-var-2.f90 (-91)
- (removed) flang/test/Transforms/debug-local-var.f90 (-54)
``````````diff
diff --git a/flang/include/flang/Optimizer/CodeGen/CGOps.td b/flang/include/flang/Optimizer/CodeGen/CGOps.td
index c375edee1fa77..35e70fa2ffa3f 100644
--- a/flang/include/flang/Optimizer/CodeGen/CGOps.td
+++ b/flang/include/flang/Optimizer/CodeGen/CGOps.td
@@ -16,8 +16,6 @@
include "mlir/IR/SymbolInterfaces.td"
include "flang/Optimizer/Dialect/FIRTypes.td"
-include "flang/Optimizer/Dialect/FIRAttr.td"
-include "mlir/IR/BuiltinAttributes.td"
def fircg_Dialect : Dialect {
let name = "fircg";
@@ -204,36 +202,4 @@ def fircg_XArrayCoorOp : fircg_Op<"ext_array_coor", [AttrSizedOperandSegments]>
}];
}
-// Extended Declare operation.
-def fircg_XDeclareOp : fircg_Op<"ext_declare", [AttrSizedOperandSegments]> {
- let summary = "for internal conversion only";
-
- let description = [{
- Prior to lowering to LLVM IR dialect, a DeclareOp will
- be converted to an extended DeclareOp.
- }];
-
- let arguments = (ins
- AnyRefOrBox:$memref,
- Variadic<AnyIntegerType>:$shape,
- Variadic<AnyIntegerType>:$shift,
- Variadic<AnyIntegerType>:$typeparams,
- Optional<fir_DummyScopeType>:$dummy_scope,
- Builtin_StringAttr:$uniq_name
- );
- let results = (outs AnyRefOrBox);
-
- let assemblyFormat = [{
- $memref (`(` $shape^ `)`)? (`origin` $shift^)? (`typeparams` $typeparams^)?
- (`dummy_scope` $dummy_scope^)?
- attr-dict `:` functional-type(operands, results)
- }];
-
- let extraClassDeclaration = [{
- // Shape is optional, but if it exists, it will be at offset 1.
- unsigned shapeOffset() { return 1; }
- unsigned shiftOffset() { return shapeOffset() + getShape().size(); }
- }];
-}
-
#endif
diff --git a/flang/include/flang/Optimizer/CodeGen/CGPasses.td b/flang/include/flang/Optimizer/CodeGen/CGPasses.td
index 565920e55e6a8..f524fb4237344 100644
--- a/flang/include/flang/Optimizer/CodeGen/CGPasses.td
+++ b/flang/include/flang/Optimizer/CodeGen/CGPasses.td
@@ -47,10 +47,6 @@ def CodeGenRewrite : Pass<"cg-rewrite", "mlir::ModuleOp"> {
let dependentDialects = [
"fir::FIROpsDialect", "fir::FIRCodeGenDialect"
];
- let options = [
- Option<"preserveDeclare", "preserve-declare", "bool", /*default=*/"false",
- "Preserve DeclareOp during pre codegen re-write.">
- ];
let statistics = [
Statistic<"numDCE", "num-dce'd", "Number of operations eliminated">
];
diff --git a/flang/include/flang/Optimizer/CodeGen/CodeGen.h b/flang/include/flang/Optimizer/CodeGen/CodeGen.h
index 4d2b191b46d08..26097dabf56c4 100644
--- a/flang/include/flang/Optimizer/CodeGen/CodeGen.h
+++ b/flang/include/flang/Optimizer/CodeGen/CodeGen.h
@@ -30,8 +30,7 @@ struct NameUniquer;
/// Prerequiste pass for code gen. Perform intermediate rewrites to perform
/// the code gen (to LLVM-IR dialect) conversion.
-std::unique_ptr<mlir::Pass> createFirCodeGenRewritePass(
- CodeGenRewriteOptions Options = CodeGenRewriteOptions{});
+std::unique_ptr<mlir::Pass> createFirCodeGenRewritePass();
/// FirTargetRewritePass options.
struct TargetRewriteOptions {
@@ -89,8 +88,7 @@ void populateFIRToLLVMConversionPatterns(fir::LLVMTypeConverter &converter,
fir::FIRToLLVMPassOptions &options);
/// Populate the pattern set with the PreCGRewrite patterns.
-void populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns,
- bool preserveDeclare);
+void populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns);
// declarative passes
#define GEN_PASS_REGISTRATION
diff --git a/flang/include/flang/Tools/CLOptions.inc b/flang/include/flang/Tools/CLOptions.inc
index 761315e0abc81..cc3431d5b71d2 100644
--- a/flang/include/flang/Tools/CLOptions.inc
+++ b/flang/include/flang/Tools/CLOptions.inc
@@ -169,11 +169,9 @@ inline void addMemoryAllocationOpt(mlir::PassManager &pm) {
}
#if !defined(FLANG_EXCLUDE_CODEGEN)
-inline void addCodeGenRewritePass(mlir::PassManager &pm, bool preserveDeclare) {
- fir::CodeGenRewriteOptions options;
- options.preserveDeclare = preserveDeclare;
- addPassConditionally(pm, disableCodeGenRewrite,
- [&]() { return fir::createFirCodeGenRewritePass(options); });
+inline void addCodeGenRewritePass(mlir::PassManager &pm) {
+ addPassConditionally(
+ pm, disableCodeGenRewrite, fir::createFirCodeGenRewritePass);
}
inline void addTargetRewritePass(mlir::PassManager &pm) {
@@ -355,8 +353,7 @@ inline void createDefaultFIRCodeGenPassPipeline(mlir::PassManager &pm,
MLIRToLLVMPassPipelineConfig config, llvm::StringRef inputFilename = {}) {
fir::addBoxedProcedurePass(pm);
addNestedPassToAllTopLevelOperations(pm, fir::createAbstractResultOpt);
- fir::addCodeGenRewritePass(
- pm, (config.DebugInfo != llvm::codegenoptions::NoDebugInfo));
+ fir::addCodeGenRewritePass(pm);
fir::addTargetRewritePass(pm);
fir::addExternalNameConversionPass(pm, config.Underscoring);
fir::createDebugPasses(pm, config.DebugInfo, config.OptLevel, inputFilename);
diff --git a/flang/lib/Optimizer/CodeGen/CGOps.cpp b/flang/lib/Optimizer/CodeGen/CGOps.cpp
index 6b8ba74525556..44d07d26dd2b6 100644
--- a/flang/lib/Optimizer/CodeGen/CGOps.cpp
+++ b/flang/lib/Optimizer/CodeGen/CGOps.cpp
@@ -10,7 +10,7 @@
//
//===----------------------------------------------------------------------===//
-#include "flang/Optimizer/CodeGen/CGOps.h"
+#include "CGOps.h"
#include "flang/Optimizer/Dialect/FIRDialect.h"
#include "flang/Optimizer/Dialect/FIROps.h"
#include "flang/Optimizer/Dialect/FIRType.h"
diff --git a/flang/include/flang/Optimizer/CodeGen/CGOps.h b/flang/lib/Optimizer/CodeGen/CGOps.h
similarity index 94%
rename from flang/include/flang/Optimizer/CodeGen/CGOps.h
rename to flang/lib/Optimizer/CodeGen/CGOps.h
index df909d9ee81cb..b5a6d5bb9a9e6 100644
--- a/flang/include/flang/Optimizer/CodeGen/CGOps.h
+++ b/flang/lib/Optimizer/CodeGen/CGOps.h
@@ -13,7 +13,6 @@
#ifndef OPTIMIZER_CODEGEN_CGOPS_H
#define OPTIMIZER_CODEGEN_CGOPS_H
-#include "flang/Optimizer/Dialect/FIRAttr.h"
#include "flang/Optimizer/Dialect/FIRType.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
index 72172f63888e1..21154902d23f8 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -12,7 +12,7 @@
#include "flang/Optimizer/CodeGen/CodeGen.h"
-#include "flang/Optimizer/CodeGen/CGOps.h"
+#include "CGOps.h"
#include "flang/Optimizer/CodeGen/CodeGenOpenMP.h"
#include "flang/Optimizer/CodeGen/FIROpPatterns.h"
#include "flang/Optimizer/CodeGen/TypeConverter.h"
@@ -170,28 +170,6 @@ genAllocationScaleSize(OP op, mlir::Type ity,
return nullptr;
}
-namespace {
-struct DeclareOpConversion : public fir::FIROpConversion<fir::cg::XDeclareOp> {
-public:
- using FIROpConversion::FIROpConversion;
- mlir::LogicalResult
- matchAndRewrite(fir::cg::XDeclareOp declareOp, OpAdaptor adaptor,
- mlir::ConversionPatternRewriter &rewriter) const override {
- auto memRef = adaptor.getOperands()[0];
- if (auto fusedLoc = mlir::dyn_cast<mlir::FusedLoc>(declareOp.getLoc())) {
- if (auto varAttr =
- mlir::dyn_cast_or_null<mlir::LLVM::DILocalVariableAttr>(
- fusedLoc.getMetadata())) {
- rewriter.create<mlir::LLVM::DbgDeclareOp>(memRef.getLoc(), memRef,
- varAttr, nullptr);
- }
- }
- rewriter.replaceOp(declareOp, memRef);
- return mlir::success();
- }
-};
-} // namespace
-
namespace {
/// convert to LLVM IR dialect `alloca`
struct AllocaOpConversion : public fir::FIROpConversion<fir::AllocaOp> {
@@ -3736,19 +3714,19 @@ void fir::populateFIRToLLVMConversionPatterns(
BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
- CoordinateOpConversion, DTEntryOpConversion, DeclareOpConversion,
- DivcOpConversion, EmboxOpConversion, EmboxCharOpConversion,
- EmboxProcOpConversion, ExtractValueOpConversion, FieldIndexOpConversion,
- FirEndOpConversion, FreeMemOpConversion, GlobalLenOpConversion,
- GlobalOpConversion, HasValueOpConversion, InsertOnRangeOpConversion,
- InsertValueOpConversion, IsPresentOpConversion, LenParamIndexOpConversion,
- LoadOpConversion, MulcOpConversion, NegcOpConversion,
- NoReassocOpConversion, SelectCaseOpConversion, SelectOpConversion,
- SelectRankOpConversion, SelectTypeOpConversion, ShapeOpConversion,
- ShapeShiftOpConversion, ShiftOpConversion, SliceOpConversion,
- StoreOpConversion, StringLitOpConversion, SubcOpConversion,
- TypeDescOpConversion, TypeInfoOpConversion, UnboxCharOpConversion,
- UnboxProcOpConversion, UndefOpConversion, UnreachableOpConversion,
+ CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion,
+ EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion,
+ ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion,
+ FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion,
+ HasValueOpConversion, InsertOnRangeOpConversion, InsertValueOpConversion,
+ IsPresentOpConversion, LenParamIndexOpConversion, LoadOpConversion,
+ MulcOpConversion, NegcOpConversion, NoReassocOpConversion,
+ SelectCaseOpConversion, SelectOpConversion, SelectRankOpConversion,
+ SelectTypeOpConversion, ShapeOpConversion, ShapeShiftOpConversion,
+ ShiftOpConversion, SliceOpConversion, StoreOpConversion,
+ StringLitOpConversion, SubcOpConversion, TypeDescOpConversion,
+ TypeInfoOpConversion, UnboxCharOpConversion, UnboxProcOpConversion,
+ UndefOpConversion, UnreachableOpConversion,
UnrealizedConversionCastOpConversion, XArrayCoorOpConversion,
XEmboxOpConversion, XReboxOpConversion, ZeroOpConversion>(converter,
options);
diff --git a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
index c54a7457db761..5bd3ec8d18450 100644
--- a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
+++ b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp
@@ -12,8 +12,8 @@
#include "flang/Optimizer/CodeGen/CodeGen.h"
+#include "CGOps.h"
#include "flang/Optimizer/Builder/Todo.h" // remove when TODO's are done
-#include "flang/Optimizer/CodeGen/CGOps.h"
#include "flang/Optimizer/Dialect/FIRDialect.h"
#include "flang/Optimizer/Dialect/FIROps.h"
#include "flang/Optimizer/Dialect/FIRType.h"
@@ -270,43 +270,13 @@ class ArrayCoorConversion : public mlir::OpRewritePattern<fir::ArrayCoorOp> {
};
class DeclareOpConversion : public mlir::OpRewritePattern<fir::DeclareOp> {
- bool preserveDeclare;
-
public:
using OpRewritePattern::OpRewritePattern;
- DeclareOpConversion(mlir::MLIRContext *ctx, bool preserveDecl)
- : OpRewritePattern(ctx), preserveDeclare(preserveDecl) {}
mlir::LogicalResult
matchAndRewrite(fir::DeclareOp declareOp,
mlir::PatternRewriter &rewriter) const override {
- if (!preserveDeclare) {
- rewriter.replaceOp(declareOp, declareOp.getMemref());
- return mlir::success();
- }
- auto loc = declareOp.getLoc();
- llvm::SmallVector<mlir::Value> shapeOpers;
- llvm::SmallVector<mlir::Value> shiftOpers;
- if (auto shapeVal = declareOp.getShape()) {
- if (auto shapeOp = mlir::dyn_cast<fir::ShapeOp>(shapeVal.getDefiningOp()))
- populateShape(shapeOpers, shapeOp);
- else if (auto shiftOp =
- mlir::dyn_cast<fir::ShapeShiftOp>(shapeVal.getDefiningOp()))
- populateShapeAndShift(shapeOpers, shiftOpers, shiftOp);
- else if (auto shiftOp =
- mlir::dyn_cast<fir::ShiftOp>(shapeVal.getDefiningOp()))
- populateShift(shiftOpers, shiftOp);
- else
- return mlir::failure();
- }
- // FIXME: Add FortranAttrs and CudaAttrs
- auto xDeclOp = rewriter.create<fir::cg::XDeclareOp>(
- loc, declareOp.getType(), declareOp.getMemref(), shapeOpers, shiftOpers,
- declareOp.getTypeparams(), declareOp.getDummyScope(),
- declareOp.getUniqName());
- LLVM_DEBUG(llvm::dbgs()
- << "rewriting " << declareOp << " to " << xDeclOp << '\n');
- rewriter.replaceOp(declareOp, xDeclOp.getOperation()->getResults());
+ rewriter.replaceOp(declareOp, declareOp.getMemref());
return mlir::success();
}
};
@@ -327,7 +297,6 @@ class DummyScopeOpConversion
class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> {
public:
- CodeGenRewrite(fir::CodeGenRewriteOptions opts) : Base(opts) {}
void runOnOperation() override final {
mlir::ModuleOp mod = getOperation();
@@ -345,7 +314,7 @@ class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> {
mlir::cast<fir::BaseBoxType>(embox.getType()).getEleTy()));
});
mlir::RewritePatternSet patterns(&context);
- fir::populatePreCGRewritePatterns(patterns, preserveDeclare);
+ fir::populatePreCGRewritePatterns(patterns);
if (mlir::failed(
mlir::applyPartialConversion(mod, target, std::move(patterns)))) {
mlir::emitError(mlir::UnknownLoc::get(&context),
@@ -361,14 +330,12 @@ class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> {
} // namespace
-std::unique_ptr<mlir::Pass>
-fir::createFirCodeGenRewritePass(fir::CodeGenRewriteOptions Options) {
- return std::make_unique<CodeGenRewrite>(Options);
+std::unique_ptr<mlir::Pass> fir::createFirCodeGenRewritePass() {
+ return std::make_unique<CodeGenRewrite>();
}
-void fir::populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns,
- bool preserveDeclare) {
+void fir::populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns) {
patterns.insert<EmboxConversion, ArrayCoorConversion, ReboxConversion,
- DummyScopeOpConversion>(patterns.getContext());
- patterns.add<DeclareOpConversion>(patterns.getContext(), preserveDeclare);
+ DeclareOpConversion, DummyScopeOpConversion>(
+ patterns.getContext());
}
diff --git a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
index cfad366cb5cb5..908c8fc96f633 100644
--- a/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
+++ b/flang/lib/Optimizer/Transforms/AddDebugInfo.cpp
@@ -15,7 +15,6 @@
#include "flang/Common/Version.h"
#include "flang/Optimizer/Builder/FIRBuilder.h"
#include "flang/Optimizer/Builder/Todo.h"
-#include "flang/Optimizer/CodeGen/CGOps.h"
#include "flang/Optimizer/Dialect/FIRDialect.h"
#include "flang/Optimizer/Dialect/FIROps.h"
#include "flang/Optimizer/Dialect/FIRType.h"
@@ -46,59 +45,13 @@ namespace fir {
namespace {
class AddDebugInfoPass : public fir::impl::AddDebugInfoBase<AddDebugInfoPass> {
- void handleDeclareOp(fir::cg::XDeclareOp declOp,
- mlir::LLVM::DIFileAttr fileAttr,
- mlir::LLVM::DIScopeAttr scopeAttr,
- fir::DebugTypeGenerator &typeGen);
-
public:
AddDebugInfoPass(fir::AddDebugInfoOptions options) : Base(options) {}
void runOnOperation() override;
};
-static uint32_t getLineFromLoc(mlir::Location loc) {
- uint32_t line = 1;
- if (auto fileLoc = mlir::dyn_cast<mlir::FileLineColLoc>(loc))
- line = fileLoc.getLine();
- return line;
-}
-
} // namespace
-void AddDebugInfoPass::handleDeclareOp(fir::cg::XDeclareOp declOp,
- mlir::LLVM::DIFileAttr fileAttr,
- mlir::LLVM::DIScopeAttr scopeAttr,
- fir::DebugTypeGenerator &typeGen) {
- mlir::MLIRContext *context = &getContext();
- mlir::OpBuilder builder(context);
- auto result = fir::NameUniquer::deconstruct(declOp.getUniqName());
-
- if (result.first != fir::NameUniquer::NameKind::VARIABLE)
- return;
-
- // Only accept local variables.
- if (result.second.procs.empty())
- return;
-
- // FIXME: There may be cases where an argument is processed a bit before
- // DeclareOp is generated. In that case, DeclareOp may point to an
- // intermediate op and not to BlockArgument. We need to find those cases and
- // walk the chain to get to the actual argument.
-
- unsigned argNo = 0;
- if (auto Arg = llvm::dyn_cast<mlir::BlockArgument>(declOp.getMemref()))
- argNo = Arg.getArgNumber() + 1;
-
- auto tyAttr = typeGen.convertType(fir::unwrapRefType(declOp.getType()),
- fileAttr, scopeAttr, declOp.getLoc());
-
- auto localVarAttr = mlir::LLVM::DILocalVariableAttr::get(
- context, scopeAttr, mlir::StringAttr::get(context, result.second.name),
- fileAttr, getLineFromLoc(declOp.getLoc()), argNo, /* alignInBits*/ 0,
- tyAttr);
- declOp->setLoc(builder.getFusedLoc({declOp->getLoc()}, localVarAttr));
-}
-
void AddDebugInfoPass::runOnOperation() {
mlir::ModuleOp module = getOperation();
mlir::MLIRContext *context = &getContext();
@@ -191,15 +144,14 @@ void AddDebugInfoPass::runOnOperation() {
subprogramFlags =
subprogramFlags | mlir::LLVM::DISubprogramFlags::Definition;
}
- unsigned line = getLineFromLoc(l);
+ unsigned line = 1;
+ if (auto funcLoc = mlir::dyn_cast<mlir::FileLineColLoc>(l))
+ line = funcLoc.getLine();
+
auto spAttr = mlir::LLVM::DISubprogramAttr::get(
context, id, compilationUnit, fileAttr, funcName, fullName,
funcFileAttr, line, line, subprogramFlags, subTypeAttr);
funcOp->setLoc(builder.getFusedLoc({funcOp->getLoc()}, spAttr));
-
- funcOp.walk([&](fir::cg::XDeclareOp declOp) {
- handleDeclareOp(declOp, fileAttr, spAttr, typeGen);
- });
});
}
diff --git a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp
index 64c6547e06e0f..e5b4050dfb242 100644
--- a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp
+++ b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp
@@ -24,6 +24,11 @@ DebugTypeGenerator::DebugTypeGenerator(mlir::ModuleOp m)
LLVM_DEBUG(llvm::dbgs() << "DITypeAttr generator\n");
}
+static mlir::LLVM::DITypeAttr genPlaceholderType(mlir::MLIRContext *context) {
+ return mlir::LLVM::DIBasicTypeAttr::get(
+ context, llvm::dwarf::DW_TAG_base_type, "void", 32, 1);
+}
+
static mlir::LLVM::DITypeAttr genBasicType(mlir::MLIRContext *context,
mlir::StringAttr name,
unsigned bitSize,
@@ -32,11 +37,6 @@ static mlir::LLVM::DITypeAttr genBasicType(mlir::MLIRContext *context,
context, llvm::dwarf::DW_TAG_base_type, name, bitSize, decoding);
}
-static mlir::LLVM::DITypeAttr genPlaceholderType(mlir::MLIRContext *context) {
- return genBasicType(context, mlir::StringAttr::get(context, "integer"), 32,
- llvm::dwarf::DW_ATE_signed);
-}
-
mlir::LLVM::DITypeAttr
DebugTypeGenerator::convertType(mlir::Type Ty, mlir::LLVM::DIFileAttr fileAttr,
mlir::LLVM::DIScopeAttr scope,
diff --git a/flang/test/Fir/declare-codegen.fir b/flang/test/Fir/declare-codegen.fir
index c5879facb1572..9d68d3b2f9d4d 100644
--- a/flang/test/Fir/declare-codegen.fir
+++ b/flang/test/Fir/declare-codegen.fir
@@ -1,7 +1,5 @@
// Test rewrite of fir.declare. The result is replaced by the memref operand.
-// RUN: fir-opt --cg-rewrite="preserve-declare=true" %s -o - | FileCheck %s --check-prefixes DECL
-// RUN: fir-opt --cg-rewrite="preserve-declare=false" %s -o - | FileCheck %s --check-prefixes NODECL
-// RUN: fir-opt --cg-rewrite %s -o - | FileCheck %s --check-prefixes NODECL
+// RUN: fir-opt --cg-rewrite %s -o - | FileCheck %s
func.func @test(%arg0: !fir.ref<!fir.array<12x23xi32>>) {
@@ -17,14 +15,9 @@ func.func @test(%arg0: !fir.ref<!fir.array<12x23xi32>>) {
func.func private @bar(%arg0: !fir.ref<!fir.array<12x23xi32>>)
-// NODECL-LABEL: func.func @test(
-// NODECL-SAME: %[[arg0:.*]]: !fir.ref<!fir.array<12x23xi32>>) {
-// NODECL-NEXT: fir.call @bar(%[[arg0]]) : (!fir.ref<!fir.array<12x23xi32>>) -> ()
-
-// DECL-LABEL: func.func @test(
-// DECL-SAME: %[[arg0:.*]]: !fir.ref<!fir.array<12x23xi32>>) {
-// DECL: fircg.ext_declare
-
+// CHECK-LABEL: func.func @te...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/92302
More information about the flang-commits
mailing list