123456789101112131415161718192021222324252627282930313233343536373839 |
- Date: Tue, 13 Feb 2001 13:29:52 -0600 (CST)
- From: Chris Lattner <sabre@nondot.org>
- To: Vikram S. Adve <vadve@cs.uiuc.edu>
- Subject: LLVM Concerns...
- I've updated the documentation to include load store and allocation
- instructions (please take a look and let me know if I'm on the right
- track):
- file:/home/vadve/lattner/llvm/docs/LangRef.html#memoryops
- I have a couple of concerns I would like to bring up:
- 1. Reference types
- Right now, I've spec'd out the language to have a pointer type, which
- works fine for lots of stuff... except that Java really has
- references: constrained pointers that cannot be manipulated: added and
- subtracted, moved, etc... Do we want to have a type like this? It
- could be very nice for analysis (pointer always points to the start of
- an object, etc...) and more closely matches Java semantics. The
- pointer type would be kept for C++ like semantics. Through analysis,
- C++ pointers could be promoted to references in the LLVM
- representation.
- 2. Our "implicit" memory references in assembly language:
- After thinking about it, this model has two problems:
- A. If you do pointer analysis and realize that two stores are
- independent and can share the same memory source object, there is
- no way to represent this in either the bytecode or assembly.
- B. When parsing assembly/bytecode, we effectively have to do a full
- SSA generation/PHI node insertion pass to build the dependencies
- when we don't want the "pinned" representation. This is not
- cool.
- I'm tempted to make memory references explicit in both the assembly and
- bytecode to get around this... what do you think?
- -Chris
|