This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix combine_givs
- To: Toon Moene <moene at knmi dot nl>
- Subject: Re: [PATCH] Fix combine_givs
- From: Andreas Jaeger <aj at suse dot de>
- Date: Tue, 04 Sep 2001 13:46:58 +0200
- Cc: jakub at redhat dot com, gcc-patches at gcc dot gnu dot org
- References: <3B94BA30.4BE1EF97@knmi.nl>
Toon Moene <moene@knmi.nl> writes:
>> When express_from_1 is called with say:
>> a = (const:SI (plus:SI (symbol_ref:SI ("b")) (const_int 640
>> [0x280])))
>> b = (const:SI (plus:SI (symbol_ref:SI ("b")) (const_int 640
>> [0x280])))
>> mult = (const_int 1 [0x1])
>> (as may happen in some gcc versions on the testcase below),
>> the result is surprisingly not const0_rtx.
>> This causes two different giv registers used for input and output > memory bases ...
>
> Hmm, could it be this patch is responsible for the notable improvements
> in performance on swim, applu, sixtrack and (less so) apsi, of the
> SPECfp2000 runs reported by Andreas Jaeger ?
It seems so - the only patches I see according to the ChangeLog
are:
2001-09-03 Jakub Jelinek <jakub@redhat.com>
* loop.c (express_from_1): Fix CONSTANT_P(a) case.
2001-09-03 Richard Henderson <rth@redhat.com>
* function.h (struct function): Add arg_pointer_save_area_init.
* function.c (expand_function_end): Init arg_pointer_save_area.
(get_arg_pointer_save_area): Do not init arg_pointer_save_area
when called from a nested function.
> See: http://www.suse.de/~aj/SPEC/CFP/d-permanent/index.html
>
> An explanation could be that the conflict you describe above also exists
> for any read/modify/write loop of an array in COMMON (or just statically
> allocated, i.e. with a compile time constant start address) ...
Shouldn't we consider the patch then also for the 3.0 branch?
Thanks Jakub for a small but important patch,
Andreas
P.S. apsi was broken for some days and fixed with Richard's patch.
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.inka.de
http://www.suse.de/~aj