Hi,
With -Os option, open64 does not generate the following code as we wanted,
while gcc does
int x,y,z;
void b(){
y-=2;
}
int a(){
if (z == 1){
x +=y;
return x;
}
if (z == 2){
z ++;
x +=y;
return x;
}
if (z ==3){
b();
x +=y;
return x;
}
}
open64 produces:
.LBB9_a:
movl %ebp,%eax # [0]
movl 0(%esp),%ebp # [0] _temp_gra_spill0
movl 4(%esp),%ebx # [0] _temp_gra_spill1
addl $12,%esp # [1]
ret
# [1]
.LBB2_a:
movl x,%eax # [0] id:20 x+0x0
movl y,%ebp # [0] id:22 y+0x0
addl %eax,%ebp # [3]
movl %ebp,x # [4] id:20 x+0x0
.loc 1 8 0
jmp .LBB9_a # [4]
.LBB4_a:
movl x,%eax # [0] id:20 x+0x0
movl y,%ebp # [0] id:22 y+0x0
leal 1(%edx),%ebx # [0]
movl %ebx,z # [2] id:21 z+0x0
addl %eax,%ebp # [3]
movl %ebp,x # [4] id:20 x+0x0
jmp .LBB9_a # [4]
.LBB6_a:
call b # [0] b
.LBB7_a:
movl x,%eax # [0] id:20 x+0x0
movl y,%ebp # [0] id:22 y+0x0
addl %eax,%ebp # [3]
movl %ebp,x # [4] id:20 x+0x0
jmp .LBB9_a # [4]
.LDWend_a:
while gcc produces:
a:
movl z, %eax
pushl %ebp
movl %esp, %ebp
cmpl $1, %eax
je .L7
.L3:
cmpl $2, %eax
jne .L5
movl $3, z
jmp .L7
.L5:
cmpl $3, %eax
jne .L6
call b
.L7:
movl y, %eax
addl x, %eax
movl %eax, x
jmp .L2
.L6:
.L2:
popl %ebp
ret
Any options or hints?
Thanks
Gang
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel