This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: long long move bug?
- To: Dale Johannesen <dalej at apple dot com>
- Subject: Re: long long move bug?
- From: Dale Johannesen <dalej at apple dot com>
- Date: Wed, 6 Jun 2001 10:34:19 -0700
- Cc: Becky Gill <bgill at ibmoto dot com>, gcc at gcc dot gnu dot org
On Tuesday, June 5, 2001, at 07:06 PM, Dale Johannesen wrote:
> On Monday, June 4, 2001, at 01:24 PM, Becky Gill wrote:
>
>> All,
>>
>> I ran into a problem this week when running code with lots of long long
>> variables (which eventually start causing spills). Whenever gcc
>> spills a long
>> long, reloads it, and then copies it to another pair of registers, it
>> seems to
>> be confused about which registers to use for the copy.
By rewriting this program as t1+=t1 (etc.) I got the gcc3 compiler to
produce generally similar code, with addc/adde and unnecessary register
copies. However, I could not get it to allocate an overlapping register
pair, so I think the bug is really fixed.
(Of course, there's the matter of the unnecessary register copies. One
approach to this problem, which seems to happen a lot with gcc, is to
have a pass at the end that
goes through and removes unnecessary register copies. This can be
folded into the scheduler; the scheduler dependency graph probably
already contains most of the right information.)