[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