Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- SCCP.cpp - Sparse Conditional Constant Propagation -------*- 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
// \file
10
// This file implements sparse conditional constant propagation and merging:
11
//
12
// Specifically, this:
13
//   * Assumes values are constant unless proven otherwise
14
//   * Assumes BasicBlocks are dead unless proven otherwise
15
//   * Proves values to be constant, and replaces them with constants
16
//   * Proves conditional branches to be unconditional
17
//
18
//===----------------------------------------------------------------------===//
19
 
20
#ifndef LLVM_TRANSFORMS_SCALAR_SCCP_H
21
#define LLVM_TRANSFORMS_SCALAR_SCCP_H
22
 
23
#include "llvm/ADT/STLFunctionalExtras.h"
24
#include "llvm/IR/PassManager.h"
25
 
26
#include <functional>
27
 
28
namespace llvm {
29
class AssumptionCache;
30
class DataLayout;
31
class Function;
32
class Module;
33
class TargetLibraryInfo;
34
class TargetTransformInfo;
35
struct AnalysisResultsForFn;
36
 
37
/// This pass performs function-level constant propagation and merging.
38
class SCCPPass : public PassInfoMixin<SCCPPass> {
39
public:
40
  PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
41
};
42
 
43
} // end namespace llvm
44
 
45
#endif // LLVM_TRANSFORMS_SCALAR_SCCP_H