[LLVMdev] (no subject)

Duncan Sands baldrick at free.fr
Thu Feb 2 00:49:37 PST 2012


Hi Umesh,

> Again ,I'm newbie to LLVM  and please pardon me ..if you guys  feel that ,the
> below question is very basic :)
>
> Here i go ,compiled the below sample with clang i.e *clang enum.c -S -emit-llvm*
> and there respective file are
>
> $ cat enum.c
> int main()
> {
>   enum type{one=1,two,three} s;
>   s = one;
>   return s;
> }
>
> $ cat enum.s
> ; ModuleID = 'enum.c'
> target datalayout =
> "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32"
> target triple = "i386-pc-cygwin"
>
> define i32 @main() nounwind {
>    %1 = alloca i32, align 4
>    %s = alloca i32, align 4
>    store i32 0, i32* %1
>    store i32 1, i32* %s, align 4
>    %2 = load i32* %s, align 4
>    ret i32 %2
> }
>
> *Question :* Why there is  extra 4 bytes on stack i.e *"%1 = alloca i32, align
> 4"*  ???

I think this would normally be used for storing the return value in more
complicated cases.  If you compile with optimization it will go away.

Ciao, Duncan.



More information about the llvm-dev mailing list