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