[LLVMdev] annotations preventing optimizations/cleanup?
ret val
retval386 at gmail.com
Wed Nov 2 06:17:11 PDT 2011
I'm more curious about the stuff before the annotations. In the code I
got from modifying the AST it doesn't look like the function is
getting params like normal, and its not even annotated.
int somefunc(int (*ptr)(int)) {
if(ptr == NULL)
return 1;
global = ptr;
return 0;
}
becomes
%ptr.addr = alloca i32 (i32)*, align 8
store i32 (i32)* %ptr, i32 (i32)** %ptr.addr, align 8, !tbaa !0
%ptr.addr1 = bitcast i32 (i32)** %ptr.addr to i8*
Thanks
On Wed, Nov 2, 2011 at 4:47 AM, Duncan Sands <baldrick at free.fr> wrote:
>> I created a plugin to add simple Annotations to VarDecls and
>> FieldDecls, and write this modified AST out to a file. I notice that
>> when I use clang to compile this file I get different code then when I
>> use the source directly. In both cases I'm compiling with -O4. Can
>> anyone explain this?
>
> This is how clang implements annotations on local variables, that's all.
>
> Ciao, Duncan.
>
>>
>> Thanks
>>
>> define i32 @somefunc(i32 (i32)* %ptr) nounwind uwtable {
>> entry:
>> %ptr.addr = alloca i32 (i32)*, align 8
>> store i32 (i32)* %ptr, i32 (i32)** %ptr.addr, align 8, !tbaa !0
>> %ptr.addr1 = bitcast i32 (i32)** %ptr.addr to i8*
>> call void @llvm.var.annotation(i8* %ptr.addr1, i8* getelementptr
>> inbounds ([11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds
>> ([51 x i8]* @.str1, i64 0, i64 0), i32 13)
>> %0 = load i32 (i32)** %ptr.addr, align 8, !tbaa !0
>> %cmp = icmp eq i32 (i32)* %0, null
>> ...
>>
>> VS
>>
>> define i32 @somefunc(i32 (i32)* %ptr) nounwind uwtable ssp {
>> entry:
>> %cmp = icmp eq i32 (i32)* %ptr, null
>> ...
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list