[LLVMdev] Why extra 4 bytes on stack ???

James Molloy james.molloy at arm.com
Thu Feb 2 00:45:59 PST 2012


Hi,

The extra bytes are there because you didn't compile with any optimisation.
Clang defaults to -O0, so give it -O1 or -O2 to remove those dead stack
slots.

Cheers,

James

-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Alexander Potapenko
Sent: 02 February 2012 08:36
To: Umesh Kalappa
Cc: llvmdev
Subject: Re: [LLVMdev] Why extra 4 bytes on stack ???

On Thu, Feb 2, 2012 at 12:25 PM, Umesh Kalappa <umesh.kalappa0 at gmail.com>
wrote:
> Hi There ,
>
> 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:6
4-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"  ???
>
> Thanks
> Umesh
>
For some reason even the simplest "int main() { return 0; }" program
allocates those four bytes:

; ModuleID = '/tmp/webcompile/_29079_0.bc'
target datalayout =
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:6
4-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define i32 @main() nounwind uwtable {
  %1 = alloca i32, align 4
  store i32 0, i32* %1
  ret i32 0
}

_______________________________________________
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