[llvm-commits] CVS: llvm/include/llvm/GlobalAlias.h

Chris Lattner clattner at apple.com
Wed Apr 25 10:31:43 PDT 2007


> + //===______-- llvm/GlobalAlias.h - GlobalAlias class ------------ 
> *- C++ -*-===//

Why the _____?  Please remove :)

> + class GlobalAlias : public GlobalValue {
> +   friend class SymbolTableListTraits<GlobalAlias, Module>;
> +   void operator=(const GlobalAlias &);     // Do not implement
> +   GlobalAlias(const GlobalAlias &);     // Do not implement
> +
> +   void setParent(Module *parent);
> +
> +   GlobalAlias *Prev, *Next;
> +   void setNext(GlobalAlias *N) { Next = N; }
> +   void setPrev(GlobalAlias *N) { Prev = N; }
> +
> +   const GlobalValue* Aliasee;

Aliasee should be stored as a Use instance, so it shows up as  
getOperand(0) on the GlobalAlias.  This will ensure that  
ReplaceAllUsesWith will update aliases that use globals.

> +   std::string Target;

What is this for?

Otherwise, looks great!

-Chris

> + public:
> +   /// GlobalAlias ctor - If a parent module is specified, the  
> alias is
> +   /// automatically inserted into the end of the specified  
> modules alias list.
> +   GlobalAlias(const Type *Ty, LinkageTypes Linkage, const  
> std::string &Name = "",
> +               const GlobalValue* Aliasee = 0, Module *Parent = 0);
> +
> +   /// isDeclaration - Is this global variable lacking an  
> initializer?  If so,
> +   /// the global variable is defined in some other translation  
> unit, and is thus
> +   /// only a declaration here.
> +   virtual bool isDeclaration() const;
> +
> +   /// removeFromParent - This method unlinks 'this' from the  
> containing module,
> +   /// but does not delete it.
> +   ///
> +   virtual void removeFromParent();
> +
> +   /// eraseFromParent - This method unlinks 'this' from the  
> containing module
> +   /// and deletes it.
> +   ///
> +   virtual void eraseFromParent();
> +
> +   virtual void print(std::ostream &OS) const;
> +   void print(std::ostream *OS) const { if (OS) print(*OS); }
> +
> +   void setAliasee(const GlobalValue* GV);
> +   const GlobalValue* getAliasee() const { return Aliasee; }
> +
> +   // Methods for support type inquiry through isa, cast, and  
> dyn_cast:
> +   static inline bool classof(const GlobalAlias *) { return true; }
> +   static inline bool classof(const Value *V) {
> +     return V->getValueID() == Value::GlobalAliasVal;
> +   }
> + private:
> +   // getNext/Prev - Return the next or previous alias in the list.
> +         GlobalAlias *getNext()       { return Next; }
> +   const GlobalAlias *getNext() const { return Next; }
> +         GlobalAlias *getPrev()       { return Prev; }
> +   const GlobalAlias *getPrev() const { return Prev; }
> + };
> +
> + } // End llvm namespace
> +
> + #endif
>
>
>
> _______________________________________________
> 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