This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
spec2000 regression
- To: jason_merrill at redhat dot com, gcc at gcc dot gnu dot org
- Subject: spec2000 regression
- From: Jan Hubicka <jh at suse dot cz>
- Date: Wed, 15 Aug 2001 12:37:30 +0200
Hi,
if you take look at Andreas automated tester (http://www.suse.de/~aj/SPEC) you
will see considerable performance regression at 10th. Take a look at for
instance VPR benchmark. The ChangeLog of day regression came is attached.
Looking at the patches, only following appears to be relevant:
+ Wed Aug 8 21:08:14 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * sibcall.c (return_value_pseudo): New static variable.
+ (skip_copy_to_return_value): Handle return_value_pseudo.
+ (call_ends_block_p): Ensure that return_value_pseudo is set.
+ (optimize_sibling_and_tail_recursive_call): Discover the
+ load of pseudo return value in alternate exit block.
+
+ Wed Aug 8 18:44:37 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * predict.def: Set hitrates according our experimental run.
+
+ Wed Aug 8 18:01:58 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (HARD_REGNO_RENAME_OK): New macro.
+ 2001-08-08 Jason Merrill <jason_merrill@redhat.com>
+
+ * alias.c (get_alias_set): Return a previously calculated
+ alias set for a VAR_DECL.
+ * function.c (gen_mem_addressof): Calculate the alias set before
+ touching the RTL.
Other appears that they should not affect i386 C code quality considerably.
Andreas kindly tested reverting my patches to sibcall.c and i386.h and
got no improvements in the performance (and few regressions).
Predict.def patch should be no-op also, as the regression appears even in
the profile driven tests.
So remaining patch I can't analyze completely is yours to alias.c
I've failed to find the corresponding email at gcc-patches mailing list
(even when I believe I've went across it in the pass), so please can
you double-check the patch and try to explain me what exactly it is
shooting for?
I am not claiming that it must be the problematic ones, but I don't have
time currently to investigate too much more and the regression is considerable.
The Andrea's benchmarks for reverted patch has been a bit strange, so
it is still possible that sibcall patch cause it - in case we generate
considerably worse code when sibcall optimization suceeds. This is weird
too.
Thanks a lot!
Honza
Index: gcc/ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ChangeLog,v
retrieving revision 1.10938
retrieving revision 1.10961
diff -c -p -r1.10938 -r1.10961
*** ChangeLog 2001/08/07 20:37:26 1.10938
--- ChangeLog 2001/08/08 23:33:49 1.10961
***************
*** 1,3 ****
--- 1,204 ----
+ 2001-08-08 Anthony Green <green@redhat.com>
+
+ * java/class.c (emit_register_classes): Use assemble_jcr if
+ possible. Keep the original mechanism as a fallback.
+ * defaults.h (JCR_SECTION_NAME): Define if we have named section
+ and weak symbol support.
+ * crtstuff.c (__JCR_LIST__): Define.
+ (__JCR_END__): Define.
+ (_Jv_RegiserClasses): Define weak symbol if possible.
+ (__do_global_ctors_aux): Register classes for ELF targets with
+ weak symbol support.
+
+ 2001-08-08 Kazu Hirata <kazu@hxi.com>
+
+ * dbxout.c: Fix comment formatting.
+ * dependence.c: Likewise.
+ * df.c: Likewise.
+ * diagnostic.c: Likewise.
+ * dominance.c: Likewise.
+ * doprint.c: Likewise.
+ * dwarf2out.c: Likewise.
+ * dwarfout.c: Likewise.
+ * emit-rtl.c: Likewise.
+ * except.c: Likewise.
+ * explow.c: Likewise.
+ * expmed.c: Likewise.
+ * expr.c: Likewise.
+ * flow.c: Likewise.
+ * fold-const.c: Likewise.
+ * function.c: Likewise.
+
+ 2001-08-08 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * global.c (retry_global_alloc): Avoid shadowing allocno.
+
+ 2001-08-08 Mark Mitchell <mark@codesourcery.com>
+
+ * except.c (remove_fixup_regions): Fix typo.
+
+ 2001-08-08 Jan van Male <jan.vanmale@fenk.wau.nl>
+
+ * emit-rtl.c (adjust_address, adjust_address_nv): Cast offset to
+ unsigned HOST_WIDE_INT to avoid warning.
+ * final.c (final): Cast INSN_UID to unsigned to avoid warning.
+ * flow.c (set_block_for_new_insns): Likewise.
+
+ Wed Aug 8 21:08:14 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * sibcall.c (return_value_pseudo): New static variable.
+ (skip_copy_to_return_value): Handle return_value_pseudo.
+ (call_ends_block_p): Ensure that return_value_pseudo is set.
+ (optimize_sibling_and_tail_recursive_call): Discover the
+ load of pseudo return value in alternate exit block.
+
+ Wed Aug 8 21:06:43 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * calls.c (ECF_ALWAYS_RETURN): New constant.
+ (emit_call_1): Add REG_ALWAYS_RETURN note if needed.
+ (expand_call): Use LCF_ALWAYS_RETURN for __bb_fork_func.
+ (emit_library_call_value_1): Handle LCT_ALWAYS_RETRUN.
+ * flow.c (need_fake_edge_p): Handle REG_ALWAYS_RETURN.
+ * rtl.c (reg_note_name): New name.
+ * rtl.h (enum reg_note): Add REG_ALWAYS_RETURN.
+
+ 2001-08-07 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/mips/mips.c (mips_legitimate_address_p): Limit "la" addresses.
+
+ 2001-08-08 Jason Merrill <jason_merrill@redhat.com>
+
+ * alias.c (get_alias_set): Return a previously calculated
+ alias set for a VAR_DECL.
+ * function.c (gen_mem_addressof): Calculate the alias set before
+ touching the RTL.
+
+ Wed Aug 8 18:44:37 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * predict.def: Set hitrates according our experimental run.
+
+ Wed Aug 8 18:01:58 CEST 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (HARD_REGNO_RENAME_OK): New macro.