Skip to content

Commit 2f3d4b7

Browse files
committed
[flang] Move FromDefaultKinds from bbc.cpp to Optimizer/Support
This way `FromDefaultKinds` can be re-used by `flang-new`.
1 parent 960a7b9 commit 2f3d4b7

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

flang/include/flang/Optimizer/Support/Utils.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#ifndef FORTRAN_OPTIMIZER_SUPPORT_UTILS_H
1414
#define FORTRAN_OPTIMIZER_SUPPORT_UTILS_H
1515

16+
#include "flang/Common/default-kinds.h"
17+
#include "flang/Optimizer/Dialect/FIRType.h"
1618
#include "mlir/Dialect/StandardOps/IR/Ops.h"
1719
#include "mlir/IR/BuiltinAttributes.h"
1820

@@ -21,6 +23,22 @@ namespace fir {
2123
inline std::int64_t toInt(mlir::ConstantOp cop) {
2224
return cop.getValue().cast<mlir::IntegerAttr>().getValue().getSExtValue();
2325
}
26+
27+
// Translate front-end KINDs for use in the IR and code gen.
28+
inline std::vector<fir::KindTy>
29+
fromDefaultKinds(const Fortran::common::IntrinsicTypeDefaultKinds &defKinds) {
30+
return {static_cast<fir::KindTy>(defKinds.GetDefaultKind(
31+
Fortran::common::TypeCategory::Character)),
32+
static_cast<fir::KindTy>(
33+
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Complex)),
34+
static_cast<fir::KindTy>(defKinds.doublePrecisionKind()),
35+
static_cast<fir::KindTy>(
36+
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Integer)),
37+
static_cast<fir::KindTy>(
38+
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Logical)),
39+
static_cast<fir::KindTy>(
40+
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Real))};
41+
}
2442
} // namespace fir
2543

2644
#endif // FORTRAN_OPTIMIZER_SUPPORT_UTILS_H

flang/tools/bbc/bbc.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "flang/Optimizer/Support/InitFIR.h"
2525
#include "flang/Optimizer/Support/InternalNames.h"
2626
#include "flang/Optimizer/Support/KindMapping.h"
27+
#include "flang/Optimizer/Support/Utils.h"
2728
#include "flang/Optimizer/Transforms/Passes.h"
2829
#include "flang/Parser/characters.h"
2930
#include "flang/Parser/dump-parse-tree.h"
@@ -141,22 +142,6 @@ static void printModule(mlir::ModuleOp mlirModule, llvm::raw_ostream &out) {
141142
out << '\n';
142143
}
143144

144-
// Translate front-end KINDs for use in the IR and code gen.
145-
static std::vector<fir::KindTy>
146-
fromDefaultKinds(const Fortran::common::IntrinsicTypeDefaultKinds &defKinds) {
147-
return {static_cast<fir::KindTy>(defKinds.GetDefaultKind(
148-
Fortran::common::TypeCategory::Character)),
149-
static_cast<fir::KindTy>(
150-
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Complex)),
151-
static_cast<fir::KindTy>(defKinds.doublePrecisionKind()),
152-
static_cast<fir::KindTy>(
153-
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Integer)),
154-
static_cast<fir::KindTy>(
155-
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Logical)),
156-
static_cast<fir::KindTy>(
157-
defKinds.GetDefaultKind(Fortran::common::TypeCategory::Real))};
158-
}
159-
160145
static void registerAllPasses() {
161146
fir::support::registerMLIRPassesForFortranTools();
162147
fir::registerOptTransformPasses();
@@ -241,7 +226,7 @@ static mlir::LogicalResult convertFortranSourceToMLIR(
241226
fir::support::loadNonCodegenDialects(ctx);
242227
auto &defKinds = semanticsContext.defaultKinds();
243228
fir::KindMapping kindMap(
244-
&ctx, llvm::ArrayRef<fir::KindTy>{fromDefaultKinds(defKinds)});
229+
&ctx, llvm::ArrayRef<fir::KindTy>{fir::fromDefaultKinds(defKinds)});
245230
auto burnside = Fortran::lower::LoweringBridge::create(
246231
ctx, defKinds, semanticsContext.intrinsics(), parsing.allCooked(),
247232
targetTriple, kindMap);

0 commit comments

Comments
 (0)