1//===- IndVarSimplify.h - Induction Variable Simplification -----*- C++ -*-===//
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 provides the interface for the Induction Variable
10// Simplification pass.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_TRANSFORMS_SCALAR_INDVARSIMPLIFY_H
15#define LLVM_TRANSFORMS_SCALAR_INDVARSIMPLIFY_H
16
17#include "llvm/Analysis/LoopAnalysisManager.h"
18#include "llvm/IR/PassManager.h"
19
20namespace llvm {
21
22class Loop;
23class LPMUpdater;
24
25class IndVarSimplifyPass : public PassInfoMixin<IndVarSimplifyPass> {
26 /// Perform IV widening during the pass.
27 bool WidenIndVars;
28
29public:
30 IndVarSimplifyPass(bool WidenIndVars = true) : WidenIndVars(WidenIndVars) {}
31 PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
32 LoopStandardAnalysisResults &AR, LPMUpdater &U);
33};
34
35} // end namespace llvm
36
37#endif // LLVM_TRANSFORMS_SCALAR_INDVARSIMPLIFY_H
38

source code of llvm/include/llvm/Transforms/Scalar/IndVarSimplify.h