From: Chris Lattner Date: Sun, 5 Oct 2003 00:13:28 +0000 (+0000) Subject: Add some new methods to forward to X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5133a5cf2ee42b5a4d4c7af2d90b41af769cc307;p=oota-llvm.git Add some new methods to forward to git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8852 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index c885c619192..bf88ef78f8a 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -17,6 +17,9 @@ class PointerType; template struct ConstantCreator; +template +struct ConvertConstantType; + //===--------------------------------------------------------------------------- /// ConstantIntegral - Shared superclass of boolean and integer constants. @@ -482,6 +485,7 @@ class ConstantExpr : public Constant { unsigned iType; // Operation type (an Instruction opcode) friend struct ConstantCreator > >; + friend struct ConvertConstantType; protected: // Cast creation ctor @@ -491,6 +495,15 @@ protected: // GEP instruction creation ctor ConstantExpr(Constant *C, const std::vector &IdxList, const Type *DestTy); + + // These private methods are used by the type resolution code to create + // ConstantExprs in intermediate forms. + static Constant *getTy(const Type *Ty, unsigned Opcode, + Constant *C1, Constant *C2); + static Constant *getShiftTy(const Type *Ty, + unsigned Opcode, Constant *C1, Constant *C2); + static Constant *getGetElementPtrTy(const Type *Ty, Constant *C, + const std::vector &IdxList); public: // Static methods to construct a ConstantExpr of different kinds. Note that @@ -499,15 +512,23 @@ public: // expression into something simpler if possible. /// Cast constant expr + /// static Constant *getCast(Constant *C, const Type *Ty); /// Binary constant expr - Use with binary operators... - static Constant *get(unsigned Opcode, Constant *C1, Constant *C2); + /// + static Constant *get(unsigned Opcode, Constant *C1, Constant *C2) { + return getTy(C1->getType(), Opcode, C1, C2); + } /// getShift - Return a shift left or shift right constant expr - static Constant *getShift(unsigned Opcode, Constant *C1, Constant *C2); + /// + static Constant *getShift(unsigned Opcode, Constant *C1, Constant *C2) { + return getShiftTy(C1->getType(), Opcode, C1, C2); + } /// Getelementptr form... + /// static Constant *getGetElementPtr(Constant *C, const std::vector &IdxList);