[LLVMdev] PR4174

Eli Friedman eli.friedman at gmail.com
Fri Aug 21 17:02:10 PDT 2009


On Fri, Aug 21, 2009 at 4:53 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>
> On Aug 21, 2009, at 8:46 PM, Eli Friedman wrote:
>
>> On Fri, Aug 21, 2009 at 3:29 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>>>
>>> On Aug 21, 2009, at 7:31 PM, Eli Friedman wrote:
>>>
>>>> On Fri, Aug 21, 2009 at 2:06 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> This patch fixes PR4174. Two test-cases included: original one from
>>>>> bugzilla
>>>>> and a little bit complicated made be myself.
>>>>
>>>> I think you want isSafeToSpeculativelyExecute rather than
>>>> mayHaveSideEffects.  Otherwise, looks fine.
>>>
>>> With isSafeToSpeculativelyExecute "make check" fails on some tests, i.e:
>>> test/Transforms/LoopIndexSplit/SaveLastValue-2007-08-17.ll
>>> because of PHI (isSafeToSpeculativelyExecute == false).
>>
>> isSafeToSpeculativelyExecute returns false for PHI nodes because it
>> isn't really clear what to do in that case... here, it's safe, so
>> isSafeToSpeculativelyExecute || isa<PHINode> is probably best.
>
> Another two "hacks" are needed: for BranchInst and for IntrinsicInst.
>
> Patch attached.

IntrinsicInst isn't necessarily safe...

-Eli




More information about the llvm-dev mailing list