I'm using GCC with the `-fomit-frame-pointer` and `-O2` options. When I looked through the assembly code it generated,

```
push %ebp
movl %esp, %ebp

```

at the start and `pop %ebp` at the end is removed. But some redundant subl/addl instructions to esp is left in - `subl $12, %esp` at the start and `addl $12, %esp` at the end.

How will I be able to remove them as some inline assembly will `jmp` to another function before `addl` is excecuted.