[cfe-dev] Why extra 4 bytes on stack ???

Umesh Kalappa umesh.kalappa0 at gmail.com
Thu Feb 2 03:48:55 PST 2012


Hi There ,

I'm new  to Clang   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  respective files 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"*  ???

Note : Please note that the  LLVM transformation will free away those extra
space ,But still like to know why Clang at first shot introduces those
extra spaces ??

Thanks
~Umesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120202/11025a3e/attachment.html>


More information about the cfe-dev mailing list