Pointer Arithmetic

I've been working on pointer arithmetic. Attached is a patch which
seems to correctly implement (pointer + int), (int + pointer) and
(pointer - int). (pointer - pointer) doesn't seem to be possible
within the infrastructure that exists, though I'd like confirmation of
this. See my comments in the patch.

Obviously, since this is my first effort, I'd like comments on what
I've done well and what I've (inevitably) done poorly. I'm not really
sure of the design or coding conventions of the project.

Also, there's no test-cases. I haven't figured out how they're
supposed to work yet.


PointerMath.diff (5.3 KB)

+ // How does one find the size of a QualType, or the llvm::Type it
+ // corresponds to?


Currently, clang::BuiltinType is the only type that knows it's size (see getSize()).

Eventually, getSize() will be implemented by clang::Type (the root of the type hierarchy).

The main "gotcha" (with implementing it in Type) is struct layout (which is none trivial and target specific).