[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