[llvm] r277067 - maned
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 28 17:34:49 PDT 2016
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/4cecbf3f/attachment.html>
More information about the llvm-commits
mailing list