[llvm-commits] CVS: llvm/include/llvm/GlobalAlias.h
Reid Spencer
rspencer at reidspencer.com
Wed Apr 25 11:25:57 PDT 2007
Anton,
Some comments ...
On Wed, 25 Apr 2007 11:42:57 -0500
Anton Korobeynikov <asl at math.spbu.ru> wrote:
>
>
> Changes in directory llvm/include/llvm:
>
> GlobalAlias.h added (r1.1)
> ---
> Log message:
>
> Add missed file
>
>
> ---
> Diffs of the changes: (+83 -0)
>
> GlobalAlias.h | 83
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 83 insertions(+)
>
>
> Index: llvm/include/llvm/GlobalAlias.h
> diff -c /dev/null llvm/include/llvm/GlobalAlias.h:1.1
> *** /dev/null Wed Apr 25 11:42:49 2007
> --- llvm/include/llvm/GlobalAlias.h Wed Apr 25 11:42:39
>2007
> ***************
> *** 0 ****
> --- 1,83 ----
> + //===______-- llvm/GlobalAlias.h - GlobalAlias class
>------------*- C++ -*-===//
> + //
> + // The LLVM Compiler
>Infrastructure
> + //
> + // This file was developed by Anton Korobeynikov and
>is distributed under
> + // the University of Illinois Open Source License. See
>LICENSE.TXT for details.
> + //
> +
>//===----------------------------------------------------------------------===//
> + //
> + // This file contains the declaration of the
>GlobalAlias class, which
> + // represents a single function or variable alias in
>the VM.
in the VM?
That might be too specific. How about "in the IR" ?
> + //
> +
>//===----------------------------------------------------------------------===//
> +
> + #ifndef LLVM_GLOBAL_ALIAS_H
> + #define LLVM_GLOBAL_ALIAS_H
> +
> + #include "llvm/GlobalValue.h"
> +
> + namespace llvm {
> +
> + class Module;
> + class Constant;
> + class PointerType;
> + template<typename ValueSubClass, typename
>ItemParentClass>
> + class SymbolTableListTraits;
> +
You are missing some significant documentation for the
GlobalAlias class here. Please add doxygen comments with
an @brief section and perhaps @see sections for
GlobalValue, Function and GlobalVariable. Your
documentation needs to discuss what the GlobalAlias is,
how its used, why we need it, etc.
> + 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;
Most other LLVM classes put the data members at either the
top or the bottom of the class declaration. Putting them
in the middle makes them hard to find.
> + void setNext(GlobalAlias *N) { Next = N; }
> + void setPrev(GlobalAlias *N) { Prev = N; }
> +
> + const GlobalValue* Aliasee;
> + std::string Target;
> + public:
> + /// GlobalAlias ctor - If a parent module is
>specified, the alias is
> + /// automatically inserted into the end of the
>specified modules alias list.
modules -> Module's
> + 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:
If you're going to have a private section down here, why
not put all the private stuff down here? Its more friendly
to readers of the .h file to list public things first and
then protected/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