Performance degradation on g++ 4.6
Oleg Smolsky
oleg.smolsky@riverbed.com
Wed Aug 24 22:14:00 GMT 2011
Sure. I've just attached it to the bug.
On 2011/8/24 14:56, Xinliang David Li wrote:
> Thanks.
>
> Can you make the test case a standalone preprocessed file (using -E)?
>
> David
>
> On Wed, Aug 24, 2011 at 2:26 PM, Oleg Smolsky<oleg.smolsky@riverbed.com> wrote:
>> On 2011/8/24 13:02, Xinliang David Li wrote:
>>>> On 2011/8/23 11:38, Xinliang David Li wrote:
>>>>> Partial register stall happens when there is a 32bit register read
>>>>> followed by a partial register write. In your case, the stall probably
>>>>> happens in the next iteration when 'add eax, 0Ah' executes, so your
>>>>> manual patch does not work. Try change
>>>>>
>>>>> add al, [dx] into two instructions (assuming esi is available here)
>>>>>
>>>>> movzx esi, ds:data8[dx]
>>>>> add eax, esi
>>>>>
>>>> I patched the code to use "movzx edi" but the result is a little clumsy
>>>> as
>>>> the loop is based on the virtual address rather than index.
>>> my bad -- I did copy& paste without making it precise.
>> No worries. The fragment did fit into the padding :)
>>
>>>> So, this is one test out of the suite. Many of them degraded... Are you
>>>> guys
>>>> interested in looking at other ones? Or is there something to be fixed in
>>>> the register allocation logic?
>>> File bugs --- the isolated examples like this one would be very helpful in
>>> the bug report.
>> Done:
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50182
>>
>> Regards,
>> Oleg.
>>
More information about the Gcc
mailing list