LCOV - code coverage report
Current view: top level - include/llvm/Transforms/Utils - SimplifyIndVar.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 0 1 0.0 %
Date: 2018-10-20 13:21:21 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- llvm/Transforms/Utils/SimplifyIndVar.h - Indvar Utils ---*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : // This file defines in interface for induction variable simplification. It does
      11             : // not define any actual pass or policy, but provides a single function to
      12             : // simplify a loop's induction variables based on ScalarEvolution.
      13             : //
      14             : //===----------------------------------------------------------------------===//
      15             : 
      16             : #ifndef LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H
      17             : #define LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H
      18             : 
      19             : #include "llvm/IR/ValueHandle.h"
      20             : 
      21             : namespace llvm {
      22             : 
      23             : class CastInst;
      24             : class DominatorTree;
      25             : class Loop;
      26             : class LoopInfo;
      27             : class PHINode;
      28             : class ScalarEvolution;
      29             : class SCEVExpander;
      30             : 
      31             : /// Interface for visiting interesting IV users that are recognized but not
      32             : /// simplified by this utility.
      33             : class IVVisitor {
      34             : protected:
      35             :   const DominatorTree *DT = nullptr;
      36             : 
      37             :   virtual void anchor();
      38             : 
      39             : public:
      40             :   IVVisitor() = default;
      41           0 :   virtual ~IVVisitor() = default;
      42             : 
      43             :   const DominatorTree *getDomTree() const { return DT; }
      44             :   virtual void visitCast(CastInst *Cast) = 0;
      45             : };
      46             : 
      47             : /// simplifyUsersOfIV - Simplify instructions that use this induction variable
      48             : /// by using ScalarEvolution to analyze the IV's recurrence.
      49             : bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, DominatorTree *DT,
      50             :                        LoopInfo *LI, SmallVectorImpl<WeakTrackingVH> &Dead,
      51             :                        SCEVExpander &Rewriter, IVVisitor *V = nullptr);
      52             : 
      53             : /// SimplifyLoopIVs - Simplify users of induction variables within this
      54             : /// loop. This does not actually change or add IVs.
      55             : bool simplifyLoopIVs(Loop *L, ScalarEvolution *SE, DominatorTree *DT,
      56             :                      LoopInfo *LI, SmallVectorImpl<WeakTrackingVH> &Dead);
      57             : 
      58             : } // end namespace llvm
      59             : 
      60             : #endif // LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H

Generated by: LCOV version 1.13