Functions are completely the same. What is the reason for such compilere behaviour?
Just lack of code in the compiler to do better, see http://gcc.gnu.org/ml/gcc-patches/2002-08/msg00354.html for some of the details and starting point, should you want to develop the code further.... With that compiler, one can get:
__ZN4testC2Ev:
LFB4:
b __ZN4testC4Ev
LFE4:
.align 2
.globl __ZN4testC1Ev
.section __TEXT,__text,regular,pure_instructions
.align 2
__ZN4testC1Ev:
LFB6:
b __ZN4testC4Ev
LFE6:
.align 2
.globl __ZN4testC4Ev
.section __TEXT,__text,regular,pure_instructions
.align 2
__ZN4testC4Ev:
LFB7:
blr
LFE7:While this case doesn't show it, imagine if the code were long to very long, the savings increase.
