[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