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