A variety of options prepare some additional space on the stack. It isn't
optimized when stack isn't used. Those options are:

version  options
 3.3     -fpic -fPIC -mabi=altivec
 4.1.2   -fpic -fPIC -fpie -fPIE -maltivec
 4.2.0   -fpic -fPIC -fpie -fPIE -maltivec
4.3-pre  -fpic -fPIC -fpie -fPIE

problem with -maltivec has been partially fixed in 4.3 (see bug 32401)



$ gcc-3.3 --version
gcc-3.3 (GCC) 3.3.6 (Debian 1:3.3.6-15)

$ gcc-3.3 -S -O2 empty.c && grep -A3 "empty:" empty.s
empty:
        blr
        .size   empty, .-empty
        .section        .note.GNU-stack,"",@progbits
$ gcc-3.3 -S -O2 -fpic empty.c && grep -A3 "empty:" empty.s
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-3.3 -S -O2 -fPIC empty.c && grep -A3 "empty:" empty.s
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-3.3 -S -O2 -maltivec empty.c && grep -A3 "empty:" empty.s
empty:
        blr
        .size   empty, .-empty
        .section        .note.GNU-stack,"",@progbits
$ gcc-3.3 -S -O2 -maltivec -mabi=altivec empty.c && grep -A3 "empty:" empty.s
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc-3.3 -S -O2 -fpic -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-3.3 -S -O2 -fPIC -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr



$ gcc --version
gcc (GCC) 4.1.2 (PLD-Linux)

$ gcc -S -O2 empty.c && grep -A3 "empty:" empty.s 
empty:
        blr
        .size   empty, .-empty
        .ident  "GCC: (GNU) 4.1.2 (PLD-Linux)"
$ gcc -S -O2 -fpic empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -fPIC empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -fpie empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -fPIE empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -maltivec empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -maltivec -mabi=altivec empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc -S -O2 -fpic -maltivec -mabi=altivec empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc -S -O2 -fpie -maltivec -mabi=altivec empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr



$ gcc-4.3 --version
gcc-4.3 (GCC) 4.3.0 20070615 (experimental)

$ gcc-4.3 -S -O2 empty.c && grep -A3 "empty:" empty.s 
empty:
        blr
        .size   empty, .-empty
        .ident  "GCC: (GNU) 4.3.0 20070615 (experimental)"
$ gcc-4.3 -S -O2 -fpic empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc-4.3 -S -O2 -fPIC empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc-4.3 -S -O2 -fpie empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc-4.3 -S -O2 -fPIE empty.c && grep -A3 "empty:" empty.s 
empty:
        stwu 1,-16(1)
        addi 1,1,16
        blr
$ gcc-4.3 -S -O2 -maltivec empty.c && grep -A3 "empty:" empty.s 
empty:
        blr
        .size   empty, .-empty
        .ident  "GCC: (GNU) 4.3.0 20070615 (experimental)"
$ gcc-4.3 -S -O2 -maltivec -mabi=altivec empty.c && grep -A3 "empty:" empty.s 
empty:
        blr
        .size   empty, .-empty
        .ident  "GCC: (GNU) 4.3.0 20070615 (experimental)"
$ gcc-4.3 -S -O2 -fpic -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-4.3 -S -O2 -fPIC -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-4.3 -S -O2 -fpie -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr
$ gcc-4.3 -S -O2 -fPIE -maltivec -mabi=altivec empty.c && grep -A3 "empty:"
empty.s 
empty:
        stwu 1,-32(1)
        addi 1,1,32
        blr


-- 
           Summary: [PPC, missing optimization] stack space not optimized
                    when stack not used
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sparky at pld-linux dot org
GCC target triplet: powerpc-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32429

Reply via email to