[llvm] r182387 - Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen.

Bill Wendling isanbard at gmail.com
Tue May 21 13:23:44 PDT 2013


Sure. It's applied. Thanks.

-bw


On Tue, May 21, 2013 at 7:50 AM, Justin Holewinski <
justin.holewinski at gmail.com> wrote:

> Hi Bill,
>
> Is it too late to get this in for 3.3?  It fixes a fairly critical bug for
> us.
>
>
>
> On Tue, May 21, 2013 at 10:37 AM, Justin Holewinski <
> jholewinski at nvidia.com> wrote:
>
>> Author: jholewinski
>> Date: Tue May 21 09:37:16 2013
>> New Revision: 182387
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=182387&view=rev
>> Log:
>> Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen.
>>
>> The intrinsic calls are dropped, but the annotated value is propagated.
>>
>> Fixes PR 15253
>>
>> Original patch by Zeng Bin!
>>
>> Added:
>>     llvm/trunk/test/CodeGen/Generic/annotate.ll
>>     llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll
>> Modified:
>>     llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp
>>     llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp?rev=182387&r1=182386&r2=182387&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp Tue May 21 09:37:16 2013
>> @@ -453,6 +453,12 @@ void IntrinsicLowering::LowerIntrinsicCa
>>      CI->replaceAllUsesWith(ConstantInt::get(CI->getType(), 1));
>>      break;
>>
>> +  case Intrinsic::annotation:
>> +  case Intrinsic::ptr_annotation:
>> +    // Just drop the annotation, but forward the value
>> +    CI->replaceAllUsesWith(CI->getOperand(0));
>> +    break;
>> +
>>    case Intrinsic::var_annotation:
>>      break;   // Strip out annotate intrinsic
>>
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=182387&r1=182386&r2=182387&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Tue May
>> 21 09:37:16 2013
>> @@ -5037,6 +5037,11 @@ SelectionDAGBuilder::visitIntrinsicCall(
>>      setValue(&I, Res);
>>      return 0;
>>    }
>> +  case Intrinsic::annotation:
>> +  case Intrinsic::ptr_annotation:
>> +    // Drop the intrinsic, but forward the value
>> +    setValue(&I, getValue(I.getOperand(0)));
>> +    return 0;
>>    case Intrinsic::var_annotation:
>>      // Discard annotate attributes
>>      return 0;
>>
>> Added: llvm/trunk/test/CodeGen/Generic/annotate.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/annotate.ll?rev=182387&view=auto
>>
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/Generic/annotate.ll (added)
>> +++ llvm/trunk/test/CodeGen/Generic/annotate.ll Tue May 21 09:37:16 2013
>> @@ -0,0 +1,15 @@
>> +; RUN: llc < %s
>> +
>> +; PR15253
>> +
>> + at .str = private unnamed_addr constant [4 x i8] c"sth\00", section
>> "llvm.metadata"
>> + at .str1 = private unnamed_addr constant [4 x i8] c"t.c\00", section
>> "llvm.metadata"
>> +
>> +
>> +define i32 @foo(i32 %a) {
>> +entry:
>> +  %0 = call i32 @llvm.annotation.i32(i32 %a, i8* getelementptr inbounds
>> ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]*
>> @.str1, i32 0, i32 0), i32 2)
>> +  ret i32 %0
>> +}
>> +
>> +declare i32 @llvm.annotation.i32(i32, i8*, i8*, i32) #1
>>
>> Added: llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll?rev=182387&view=auto
>>
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll (added)
>> +++ llvm/trunk/test/CodeGen/Generic/ptr-annotate.ll Tue May 21 09:37:16
>> 2013
>> @@ -0,0 +1,18 @@
>> +; RUN: llc < %s
>> +
>> +; PR15253
>> +
>> +%struct.mystruct = type { i32 }
>> +
>> + at .str = private unnamed_addr constant [4 x i8] c"sth\00", section
>> "llvm.metadata"
>> + at .str1 = private unnamed_addr constant [4 x i8] c"t.c\00", section
>> "llvm.metadata"
>> +
>> +define void @foo() {
>> +entry:
>> +  %m = alloca i8, align 4
>> +  %0 = call i8* @llvm.ptr.annotation.p0i8(i8* %m, i8* getelementptr
>> inbounds ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x
>> i8]* @.str1, i32 0, i32 0), i32 2)
>> +  store i8 1, i8* %0, align 4
>> +  ret void
>> +}
>> +
>> +declare i8* @llvm.ptr.annotation.p0i8(i8*, i8*, i8*, i32) #1
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
>
> --
>
> Thanks,
>
> Justin Holewinski
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130521/7a619e75/attachment.html>


More information about the llvm-commits mailing list