[llvm] r277067 - maned

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 28 17:19:48 PDT 2016


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/60c7cb32/attachment.html>


More information about the llvm-commits mailing list