Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/clang/lib/CIR/Lowering/CIRPasses.cpp
213799 views
1
//===----------------------------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements machinery for any CIR <-> CIR passes used by clang.
10
//
11
//===----------------------------------------------------------------------===//
12
13
// #include "clang/AST/ASTContext.h"
14
#include "mlir/IR/BuiltinOps.h"
15
#include "mlir/Pass/PassManager.h"
16
#include "clang/CIR/Dialect/Passes.h"
17
#include "llvm/Support/TimeProfiler.h"
18
19
namespace cir {
20
mlir::LogicalResult runCIRToCIRPasses(mlir::ModuleOp theModule,
21
mlir::MLIRContext &mlirContext,
22
clang::ASTContext &astContext,
23
bool enableVerifier,
24
bool enableCIRSimplify) {
25
26
llvm::TimeTraceScope scope("CIR To CIR Passes");
27
28
mlir::PassManager pm(&mlirContext);
29
pm.addPass(mlir::createCIRCanonicalizePass());
30
31
if (enableCIRSimplify)
32
pm.addPass(mlir::createCIRSimplifyPass());
33
34
pm.addPass(mlir::createLoweringPreparePass());
35
36
pm.enableVerifier(enableVerifier);
37
(void)mlir::applyPassManagerCLOptions(pm);
38
return pm.run(theModule);
39
}
40
41
} // namespace cir
42
43
namespace mlir {
44
45
void populateCIRPreLoweringPasses(OpPassManager &pm) {
46
pm.addPass(createHoistAllocasPass());
47
pm.addPass(createCIRFlattenCFGPass());
48
}
49
50
} // namespace mlir
51
52