This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PowerPC : GCC2 optimises better than GCC4???


On Mon, Jan 4, 2010 at 12:02 PM, Andrew Haley <aph@redhat.com> wrote:
> On 01/04/2010 10:51 AM, Mark Colby wrote:
>> This sounds like a dumb question I know. However the following code
>> snippet results in many more machine instructions under 4.4.2 than under
>> 2.9.5 (I am running a cygwin->PowerPC cross):
>>
>> ? typedef unsigned int U32;
>> ? typedef union
>> ? {
>> ? ? U32 R;
>> ? ? struct
>> ? ? {
>> ? ? ? U32 BF1:2;
>> ? ? ? U32 :8;
>> ? ? ? U32 BF2:2;
>> ? ? ? U32 BF3:2;
>> ? ? ? U32 :18;
>> ? ? } B;
>> ? } TEST_t;
>> ? U32 testFunc(void)
>> ? {
>> ? ? TEST_t t;
>> ? ? t.R=0;
>> ? ? t.B.BF1=2;
>> ? ? t.B.BF2=3;
>> ? ? t.B.BF3=1;
>> ? ? return t.R;
>> ? }
>>
>> Output under 4.4.2 (powerpc-eabi-gcc-4-4-2 -O3 -S gcc-test.cpp -o
>> gcc-test-442.s):
>>
>> ? li 0,2
>> ? li 3,0
>> ? rlwimi 3,0,30,0,1
>> ? li 0,3
>> ? rlwimi 3,0,20,10,11
>> ? li 0,1
>> ? rlwimi 3,0,18,12,13
>> ? blr
>>
>> Output under 2.9.5 (powerpc-eabi-gcc-2-9-5 -O3 -S gcc-test.cpp -o
>> gcc-test-295.s):
>>
>> ? lis 3,0x8034
>> ? blr
>>
>> Is there any way to improve this behaviour? I have been using 2.9.5 very
>> successfully for years and am now looking at 4.4.2, but have many such
>> examples in my code (for clarity of commenting and maintainability).
>
> This is very strange. ?On x86_64, gcc 4.4.1 generates
>
> ? ? ? ?movl ? ?$7170, %eax
> ? ? ? ?ret
>
> This optimization is done by the first RTL cse pass. ?I can't understand
> why it's not being done for your target. ?I guess this will need a
> powerpc expert.

Known bug, see http://gcc.gnu.org/PR22141

I hope Jakub will finish this work for gcc 4.5.

Ciao!
Steven


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]