[lldb-dev] Question about IRForTarget

David Blaikie blaikie at google.com
Mon Mar 16 10:43:05 PDT 2015


On Mon, Mar 16, 2015 at 10:39 AM, Zachary Turner <zturner at google.com> wrote:

> Hi Sean,
>
> A change went in over the weekend to change the
> way GetElementPtrInst::Create works.  Now, for pointer types, you need to
> manually specify the type of the pointee, as pointerType->getType() won't
> work anymore.  This broke the build, so a workaround was employed to simply
> pass nullptr for this argument.  But this is likely to be incorrect, and
> instead we need the actual llvm::Type for the pointee.  I've looked over
> the code, and I *think* that on line 2209 we can replace the nullptr with
> old_constant->getType(), and on line 2396 we can place the nullptr with
> value->getType().
>
> What are your thoughts here?
>
> Secondly, the change to nullptr does not seem to have caused any test
> failures.
>

This is expected - for now, nullptr is an acceptable value. The assertion I
have in GetElementPtrInst's ctor is:

assert(!PointeeType || PointeeType == getSourceElementType());

Eventually I'll need to remove the nullptr case once I believe I've flushed
out all the callers - this will verify that the callers are passing the
type that matches the pointee type of the pointer operand. (at this point
the current lldb code will assert-fail, if it is tested) You can try
removing the first part of that assert locally to see if the LLDB code path
is tested currently.

Once similar changes have been applied to all pointer-element-type-aware
uses of pointers in LLVM IR, I'll start trying to remove the ability to
query a pointer type for its element type.


> Is there any way we can add some tests for this?  If this is not something
> that is testable through the public interface, I recently added gtest unit
> tests to the build.  It's not enabled in the Xcode build (but will be
> soon), but if you tell me how to set up a test, call the right function,
> and what outputs to expect, I can write it.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20150316/7a7b1f44/attachment.html>


More information about the lldb-dev mailing list