Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  46.