On 9 August 2011 12:12, NAKAMURA Takumi <[email protected]> wrote:
> 2011/8/9 Jay Foad <[email protected]>:
>> On 9 August 2011 11:40, Jay Foad <[email protected]> wrote:
>>> On 9 August 2011 06:58, John McCall <[email protected]> wrote:
>>>> I think your patch to LLVM is a good idea;  replaceAllUsesWith should
>>>> not be assuming a fully-formed AST.  As a slight optimization, I would
>>>> suggest doing this instead:
>>>>  if (Succ->empty()) continue;
>>>> Jay, does that seem reasonable?
>>>
>>> Sure, I'm fine with either your or Takumi's fix. Thanks for taking the
>>> time to investigate.
>>
>> Hang on... if we need to cope with half-baked IR, won't your fix still
>> fall over on a BB that contains some phi nodes but nothing else?
>
> Jay, yeah, I was afraid that case. (it was the reason I proposed
> checking iterator end)

I like your fix, Takumi.

Personally I would write it like this:

    // N.B. Succ might not be a complete BasicBlock, so don't assume
that it ends with a non-phi instruction.
    for (iterator II = Succ->begin(), IE = Succ->end(); II != IE; ++II) {
      PHINode *PN = dyn_cast<PHINode>(II);
      if (!PN)
        break;
      ...
    }

but that's just bike-shedding.

Jay.

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to