[LLVMdev] A newbie question about the class hierarchy
reid at x10sys.com
Fri Apr 14 07:02:59 PDT 2006
The hierarchy is like this:
GlobalVariable : GlobalValue: Constant: User: Value
So, GlobalVariable is a Constant indirectly through GlobalValue. This
change was made sometime after LLVM 1.5 and reflects the fact that all
GlobalValue's are, essentially, a constant address. Only after
derefercing with getelementptr is something obtained that is
(poentially) variable. Note that "Function" is a GlobalValue as well,
but you can't dereference it or modify what it points to. So, the
notion of a GlobalVariable being constant makes sense if you look at it
as a constant memory address. This hierarchy reduced a bunch of time-
consuming checks in LLVM passes, etc.
As for the documentation, I'll take a look. If its erroneous, it'll get
fixed with the 1.7 release.
Thanks for pointing it out.
On Fri, 2006-04-14 at 18:19 +0800, Nai Xia wrote:
> I apologize if it is a rather stupid question, I am a newbie to LLVM.
> I notice a inconsistency between the current llvm1.6 doc and its source code.
> The doc states that the superclasses of GlobalVariable are GlobalValue, User, Value,
> however in the source code GlobalVariable has Constant as its super.
> I am just curious that why "variable" should be a subclass of "constant"?
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 189 bytes
Desc: This is a digitally signed message part
More information about the llvm-dev