[llvm-commits] [llvm] r87019 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h lib/CodeGen/PseudoSourceValue.cpp

Chris Lattner clattner at apple.com
Thu Nov 12 13:35:26 PST 2009


On Nov 12, 2009, at 12:25 PM, David Greene wrote:

> Author: greened
> Date: Thu Nov 12 14:25:07 2009
> New Revision: 87019
>
> URL: http://llvm.org/viewvc/llvm-project?rev=87019&view=rev
> Log:
>
> Make FixedStackPseudoSourceValue a first-class PseudoSourceValue by
> making it visible to clients and adding LLVM-style cast capability.
> This will be used by AsmPrinter to determine when to emit spill  
> comments
> for an instruction.

Thanks David,

Plaese move the printCustom method out of line, this will remove the  
need for the raw_ostream #include and give the class an out-of-line  
virtual method.  Also, please use () instead of (void).

-Chris

>
> Modified:
>    llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
>    llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
>
> Modified: llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h?rev=87019&r1=87018&r2=87019&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h Thu Nov 12  
> 14:25:07 2009
> @@ -15,6 +15,7 @@
> #define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
>
> #include "llvm/Value.h"
> +#include "llvm/Support/raw_ostream.h"
>
> namespace llvm {
>   class MachineFrameInfo;
> @@ -32,7 +33,7 @@
>     virtual void printCustom(raw_ostream &O) const;
>
>   public:
> -    PseudoSourceValue();
> +    PseudoSourceValue(enum ValueTy Subclass = PseudoSourceValueVal);
>
>     /// isConstant - Test whether the memory pointed to by this
>     /// PseudoSourceValue has a constant value.
> @@ -76,6 +77,38 @@
>     /// constant, this doesn't need to identify a specific jump table.
>     static const PseudoSourceValue *getJumpTable();
>   };
> +
> +  /// FixedStackPseudoSourceValue - A specialized PseudoSourceValue
> +  /// for holding FixedStack values, which must include a frame
> +  /// index.
> +  class FixedStackPseudoSourceValue : public PseudoSourceValue {
> +    const int FI;
> +  public:
> +    explicit FixedStackPseudoSourceValue(int fi) :
> +        PseudoSourceValue(FixedStackPseudoSourceValueVal), FI(fi) {}
> +
> +    /// classof - Methods for support type inquiry through isa,  
> cast, and
> +    /// dyn_cast:
> +    ///
> +    static inline bool classof(const FixedStackPseudoSourceValue *) {
> +      return true;
> +    }
> +    static inline bool classof(const Value *V) {
> +      return V->getValueID() == FixedStackPseudoSourceValueVal;
> +    }
> +
> +    virtual bool isConstant(const MachineFrameInfo *MFI) const;
> +
> +    virtual bool isAliased(const MachineFrameInfo *MFI) const;
> +
> +    virtual bool mayAlias(const MachineFrameInfo *) const;
> +
> +    virtual void printCustom(raw_ostream &OS) const {
> +      OS << "FixedStack" << FI;
> +    }
> +
> +    int getFrameIndex(void) const { return FI; }
> +  };
> } // End llvm namespace
>
> #endif
>
> Modified: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp?rev=87019&r1=87018&r2=87019&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp (original)
> +++ llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Thu Nov 12 14:25:07  
> 2009
> @@ -43,35 +43,14 @@
> // Eventually these should be uniqued on LLVMContext rather than in  
> a managed
> // static.  For now, we can safely use the global context for the  
> time being to
> // squeak by.
> -PseudoSourceValue::PseudoSourceValue() :
> +PseudoSourceValue::PseudoSourceValue(enum ValueTy Subclass) :
>   Value(Type::getInt8PtrTy(getGlobalContext()),
> -        PseudoSourceValueVal) {}
> +        Subclass) {}
>
> void PseudoSourceValue::printCustom(raw_ostream &O) const {
>   O << PSVNames[this - *PSVs];
> }
>
> -namespace {
> -  /// FixedStackPseudoSourceValue - A specialized PseudoSourceValue
> -  /// for holding FixedStack values, which must include a frame
> -  /// index.
> -  class FixedStackPseudoSourceValue : public PseudoSourceValue {
> -    const int FI;
> -  public:
> -    explicit FixedStackPseudoSourceValue(int fi) : FI(fi) {}
> -
> -    virtual bool isConstant(const MachineFrameInfo *MFI) const;
> -
> -    virtual bool isAliased(const MachineFrameInfo *MFI) const;
> -
> -    virtual bool mayAlias(const MachineFrameInfo *) const;
> -
> -    virtual void printCustom(raw_ostream &OS) const {
> -      OS << "FixedStack" << FI;
> -    }
> -  };
> -}
> -
> static ManagedStatic<std::map<int, const PseudoSourceValue *> >  
> FSValues;
>
> const PseudoSourceValue *PseudoSourceValue::getFixedStack(int FI) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list