add a method to compute a commonly used mapping.
[oota-llvm.git] / lib / Transforms / TransformInternals.h
index 8cab4293496012515215a87b7dd62e13645ce985..9b90fcc112d6c8aeb5644dad878d89428a0a5249 100644 (file)
@@ -1,4 +1,11 @@
-//===-- TransformInternals.h - Shared functions for Transforms ---*- C++ -*--=//
+//===-- TransformInternals.h - Shared functions for Transforms --*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 //  This header file declares shared functions used by the different components
 //  of the Transforms library.
 #include <map>
 #include <set>
 
+namespace llvm {
+
 static inline int64_t getConstantValue(const ConstantInt *CPI) {
-  if (const ConstantSInt *CSI = dyn_cast<ConstantSInt>(CPI))
-    return CSI->getValue();
-  return (int64_t)cast<ConstantUInt>(CPI)->getValue();
+  return (int64_t)cast<ConstantInt>(CPI)->getRawValue();
 }
 
 
@@ -52,6 +59,7 @@ const Type *ConvertibleToGEP(const Type *Ty, Value *V,
 // 
 class ValueMapCache;
 class ValueHandle : public Instruction {
+  Use Op;
   ValueMapCache &Cache;
 public:
   ValueHandle(ValueMapCache &VMC, Value *V);
@@ -83,7 +91,8 @@ public:
 
 typedef std::map<const Value*, const Type*> ValueTypeCache;
 
-struct ValueMapCache {
+class ValueMapCache {
+public:
   // Operands mapped - Contains an entry if the first value (the user) has had
   // the second value (the operand) mapped already.
   //
@@ -96,7 +105,7 @@ struct ValueMapCache {
   typedef std::map<const Value *, Value *> ExprMapTy;
 
   // Cast Map - Cast instructions can have their source and destination values
-  // changed independantly for each part.  Because of this, our old naive
+  // changed independently for each part.  Because of this, our old naive
   // implementation would create a TWO new cast instructions, which would cause
   // all kinds of problems.  Here we keep track of the newly allocated casts, so
   // that we only create one for a particular instruction.
@@ -134,4 +143,6 @@ const Type *getStructOffsetType(const Type *Ty, unsigned &Offset,
                                 std::vector<Value*> &Offsets,
                                 const TargetData &TD, bool StopEarly = true);
 
+} // End llvm namespace
+
 #endif