Files
clang-p2996/flang/lib/Optimizer/Transforms/Inliner.cpp
Eric Schweitz 5c02a2421b [flang] Add inliner pass.
This adds a minimalist inliner implementation. Along with the inliner, a
minimum number of support files are also included. These will pave the
way for future diffs to add more transformation passes to flang. A
future diff will add the inline test, which cannot be run successfully
quite yet as some components have not yet been upstreamed.

Differential revision:
2020-07-02 06:10:54 -07:00

25 lines
987 B
C++

//===-- Inliner.cpp -------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "flang/Optimizer/Dialect/FIRDialect.h"
#include "flang/Optimizer/Dialect/FIROps.h"
#include "flang/Optimizer/Transforms/Passes.h"
#include "mlir/Transforms/Passes.h"
#include "llvm/Support/CommandLine.h"
static llvm::cl::opt<bool>
aggressivelyInline("inline-all",
llvm::cl::desc("aggressively inline everything"),
llvm::cl::init(false));
/// Should we inline the callable `op` into region `reg`?
bool fir::canLegallyInline(mlir::Operation *op, mlir::Region *reg,
mlir::BlockAndValueMapping &map) {
return aggressivelyInline;
}