[llvm] r277067 - maned
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 28 17:42:03 PDT 2016
Sorry for the nonsense in the revision history and for confusion.
On Thu, Jul 28, 2016 at 5:34 PM Vitaly Buka <vitalybuka at google.com> wrote:
> Reverted with r277071.
>
> On Thu, Jul 28, 2016 at 5:19 PM Vitaly Buka <vitalybuka at google.com> wrote:
>
>> No. It was mistake and already reverted. It supposed to be a part of
>> https://reviews.llvm.org/D22842
>>
>> On Thu, Jul 28, 2016 at 5:16 PM David Majnemer <david.majnemer at gmail.com>
>> wrote:
>>
>>> Did you intend to commit with this message?
>>>
>>> On Thu, Jul 28, 2016 at 6:50 PM, Vitaly Buka via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>>> Author: vitalybuka
>>>> Date: Thu Jul 28 17:50:45 2016
>>>> New Revision: 277067
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=277067&view=rev
>>>> Log:
>>>> maned
>>>>
>>>> Added:
>>>> llvm/trunk/test/Transforms/InstCombine/lifetime-asan.ll
>>>> Modified:
>>>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>>>>
>>>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp?rev=277067&r1=277066&r2=277067&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>>>> (original)
>>>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp Thu Jul
>>>> 28 17:50:45 2016
>>>> @@ -1211,10 +1211,6 @@ static bool removeTriviallyEmptyRange(In
>>>> unsigned EndID, InstCombiner
>>>> &IC) {
>>>> assert(I.getIntrinsicID() == StartID &&
>>>> "Start intrinsic does not have expected ID");
>>>> - // Even if the range is empty asan need to poison memory to detect
>>>> invalid
>>>> - // access latter.
>>>> - if (ClUseAfterScope)
>>>> - return false;
>>>> BasicBlock::iterator BI(I), BE(I.getParent()->end());
>>>> for (++BI; BI != BE; ++BI) {
>>>> if (auto *E = dyn_cast<IntrinsicInst>(BI)) {
>>>> @@ -2248,11 +2244,18 @@ Instruction *InstCombiner::visitCallInst
>>>> return eraseInstFromFunction(CI);
>>>> break;
>>>> }
>>>> - case Intrinsic::lifetime_start:
>>>> + case Intrinsic::lifetime_start: {
>>>> + const Function *func = II->getFunction();
>>>> + // Asan needs to poison memory to detect invalid access possible
>>>> even for
>>>> + // empty lifetime range.
>>>> + if (func && func->hasFnAttribute(Attribute::SanitizeAddress))
>>>> + break;
>>>> +
>>>> if (removeTriviallyEmptyRange(*II, Intrinsic::lifetime_start,
>>>> Intrinsic::lifetime_end, *this))
>>>> return nullptr;
>>>> break;
>>>> + }
>>>> case Intrinsic::assume: {
>>>> Value *IIOperand = II->getArgOperand(0);
>>>> // Remove an assume if it is immediately followed by an identical
>>>> assume.
>>>> @@ -2483,7 +2486,6 @@ static IntrinsicInst *findInitTrampoline
>>>>
>>>> /// Improvements for call and invoke instructions.
>>>> Instruction *InstCombiner::visitCallSite(CallSite CS) {
>>>> -
>>>> if (isAllocLikeFn(CS.getInstruction(), TLI))
>>>> return visitAllocSite(*CS.getInstruction());
>>>>
>>>>
>>>> Added: llvm/trunk/test/Transforms/InstCombine/lifetime-asan.ll
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/lifetime-asan.ll?rev=277067&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/test/Transforms/InstCombine/lifetime-asan.ll (added)
>>>> +++ llvm/trunk/test/Transforms/InstCombine/lifetime-asan.ll Thu Jul 28
>>>> 17:50:45 2016
>>>> @@ -0,0 +1,37 @@
>>>> +; RUN: opt < %s -instcombine -S | FileCheck %s
>>>> +
>>>> +declare void @llvm.lifetime.start(i64, i8* nocapture)
>>>> +declare void @llvm.lifetime.end(i64, i8* nocapture)
>>>> +declare void @foo(i8* nocapture)
>>>> +
>>>> +define void @asan() sanitize_address {
>>>> +entry:
>>>> + ; CHECK-LABEL: @asan(
>>>> + %text = alloca [1 x i8], align 1
>>>> + %0 = getelementptr inbounds [1 x i8], [1 x i8]* %text, i64 0, i64 0
>>>> +
>>>> + call void @llvm.lifetime.start(i64 1, i8* %0)
>>>> + call void @llvm.lifetime.end(i64 1, i8* %0)
>>>> + ; CHECK: call void @llvm.lifetime.start
>>>> + ; CHECK-NEXT: call void @llvm.lifetime.end
>>>> +
>>>> + call void @foo(i8* %0) ; Keep alloca alive
>>>> +
>>>> + ret void
>>>> +}
>>>> +
>>>> +
>>>> +define void @no_asan() {
>>>> +entry:
>>>> + ; CHECK-LABEL: @no_asan(
>>>> + %text = alloca [1 x i8], align 1
>>>> + %0 = getelementptr inbounds [1 x i8], [1 x i8]* %text, i64 0, i64 0
>>>> +
>>>> + call void @llvm.lifetime.start(i64 1, i8* %0)
>>>> + call void @llvm.lifetime.end(i64 1, i8* %0)
>>>> + ; CHECK-NO: call void @llvm.lifetime
>>>> +
>>>> + call void @foo(i8* %0) ; Keep alloca alive
>>>> +
>>>> + ret void
>>>> +}
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160729/7a8233cd/attachment.html>
More information about the llvm-commits
mailing list