[llvm-commits] [llvm] r159876 - in /llvm/trunk: lib/Transforms/InstCombine/InstructionCombining.cpp test/Transforms/InstCombine/badmalloc.ll test/Transforms/InstCombine/invoke.ll test/Transforms/InstCombine/malloc-free-delete.ll test/Transforms/InstCom
Chris Lattner
clattner at apple.com
Mon Jul 9 09:20:16 PDT 2012
On Jul 9, 2012, at 9:00 AM, Duncan Sands wrote:
> Hi Nuno,
>
> On 08/07/12 22:01, Nuno Lopes wrote:
>>>> --- llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp (original)
>>>> +++ llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp Fri Jul 6
>>>> 18:09:25 2012
>>>> @@ -1137,12 +1137,29 @@
>>>> }
>>>> }
>>>> if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(U)) {
>>>> - if (II->getIntrinsicID() == Intrinsic::lifetime_start ||
>>>> - II->getIntrinsicID() == Intrinsic::lifetime_end) {
>>>> + switch (II->getIntrinsicID()) {
>>>> + default: return false;
>>>> + case Intrinsic::memmove:
>>>> + case Intrinsic::memcpy:
>>>> + case Intrinsic::memset: {
>>>> + MemIntrinsic *MI = cast<MemIntrinsic>(II);
>>>> + if (MI->isVolatile() || MI->getRawDest() != V)
>>>
>>> why exclude volatile stores? If all that is being done to the allocated memory
>>> is doing a bunch of volatile stores to it, I don't see why you can't discard
>>> them and the allocation too.
>>
>> I thought about that, but.. I guess it's better not to mess around with
>> volatiles. And I don't even think it's legal (C standard wise) to remove it.
>
> we already remove volatile stores to alloca's, so why not to heap allocations
> too?
Where do we do that? I thought we stopped that a long time ago, due to setjmp/longjmp issues.
-Chris
More information about the llvm-commits
mailing list