[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