class Operator;
class SCEVUnknown;
class SCEV;
- template<> class FoldingSetTrait<SCEV>;
+ template<> struct FoldingSetTrait<SCEV>;
/// SCEV - This class represents an analyzed expression in the program. These
/// are opaque objects that the client is not allowed to do much with
/// directly.
///
class SCEV : public FoldingSetNode {
- friend class FoldingSetTrait<SCEV>;
+ friend struct FoldingSetTrait<SCEV>;
/// FastID - A reference to an Interned FoldingSetNodeID for this node.
/// The ScalarEvolution's BumpPtrAllocator holds the data.
/// counts and things.
SCEVCouldNotCompute CouldNotCompute;
- /// Scalars - This is a cache of the scalars we have analyzed so far.
+ /// ValueExprMapType - The typedef for ValueExprMap.
///
- std::map<SCEVCallbackVH, const SCEV *> Scalars;
+ typedef DenseMap<SCEVCallbackVH, const SCEV *, DenseMapInfo<Value *> >
+ ValueExprMapType;
+
+ /// ValueExprMap - This is a cache of the values we have analyzed so far.
+ ///
+ ValueExprMapType ValueExprMap;
/// BackedgeTakenInfo - Information about the backedge-taken count
/// of a loop. This currently includes an exact count and a maximum count.
/// ForgetSymbolicValue - This looks up computed SCEV values for all
/// instructions that depend on the given instruction and removes them from
- /// the Scalars map if they reference SymName. This is used during PHI
+ /// the ValueExprMap map if they reference SymName. This is used during PHI
/// resolution.
void ForgetSymbolicName(Instruction *I, const SCEV *SymName);