- 论坛徽章:
- 0
|
我也贴段代码,针对楼主的,int i;这个,i在没使用的情况下
- #include <stdio.h>
- int main(int argc, char **argv)
- {
- int x = 100;
- if (x)
- {
- int i;
- int i2;
- }
- return 0;
- }
复制代码
两个编译的结果如下:
- 默认的,没优化的: g++ -S
- .file "test.cpp"
- .text
- .p2align 1,0x90
- .p2align 2,,3
- .globl main
- .type main, @function
- main:
- .LFB3:
- pushl %ebp
- .LCFI0:
- movl %esp, %ebp
- .LCFI1:
- subl $24, %esp
- .LCFI2:
- andl $-16, %esp
- movl $0, %eax
- addl $15, %eax
- addl $15, %eax
- shrl $4, %eax
- sall $4, %eax
- subl %eax, %esp
- movl $100, -4(%ebp)
- movl $0, %eax
- leave
- ret
- .LFE3:
- .size main, .-main
- .ident "GCC: (GNU) 3.4.6 [FreeBSD] 20060305"
复制代码
- 优化后的:g++ -S -O3
- .file "test.cpp"
- .text
- .p2align 1,0x90
- .p2align 2,,3
- .globl main
- .type main, @function
- main:
- .LFB3:
- pushl %ebp
- .LCFI0:
- movl %esp, %ebp
- .LCFI1:
- subl $8, %esp
- .LCFI2:
- andl $-16, %esp
- subl $16, %esp
- xorl %eax, %eax
- leave
- ret
- .LFE3:
- .size main, .-main
- .ident "GCC: (GNU) 3.4.6 [FreeBSD] 20060305"
复制代码
好像if都没啦 |
|