The patch adds operations to `BlockAndValueMapping` and renames it to `IRMapping`. When operations are cloned, old operations are mapped to the cloned operations. This allows mapping from an operation to a cloned operation. Example: ``` Operation *opWithRegion = ... Operation *opInsideRegion = &opWithRegion->front().front(); IRMapping map Operation *newOpWithRegion = opWithRegion->clone(map); Operation *newOpInsideRegion = map.lookupOrNull(opInsideRegion); ``` Migration instructions: All includes to `mlir/IR/BlockAndValueMapping.h` should be replaced with `mlir/IR/IRMapping.h`. All uses of `BlockAndValueMapping` need to be renamed to `IRMapping`. Reviewed By: rriddle, mehdi_amini Differential Revision: https://reviews.llvm.org/D139665
26 lines
952 B
C++
26 lines
952 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 "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 *, mlir::Region *, bool,
|
|
mlir::IRMapping &) {
|
|
return aggressivelyInline;
|
|
}
|
|
|
|
bool fir::canLegallyInline(mlir::Operation *, mlir::Operation *, bool) {
|
|
return aggressivelyInline;
|
|
}
|