First, remember  that getelementptr != array indices.<p>Second, remember that even in C, you can&#x27;t actually dereference things outside of the bounds of an object, even if you can form addresses to it.<p>In any case, the point was more than something like<p><pre><code>  struct foo C;

  char *foo = &amp;C
  foo -= 7;
  char whee = *foo;
</code></pre>
Is legal in llvm, but not in say, C++ (and in fact, in most languages it&#x27;s not legal because it&#x27;s not aligned properly)