From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6176 invoked by alias); 28 Jul 2005 17:26:37 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 6067 invoked by uid 22791); 28 Jul 2005 17:26:24 -0000 Received: from wproxy.gmail.com (HELO wproxy.gmail.com) (64.233.184.204) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Thu, 28 Jul 2005 17:26:24 +0000 Received: by wproxy.gmail.com with SMTP id 67so469498wri for ; Thu, 28 Jul 2005 10:26:22 -0700 (PDT) Received: by 10.54.129.7 with SMTP id b7mr882430wrd; Thu, 28 Jul 2005 10:26:22 -0700 (PDT) Received: by 10.54.43.59 with HTTP; Thu, 28 Jul 2005 10:26:22 -0700 (PDT) Message-ID: <19c433eb0507281026355950aa@mail.gmail.com> Date: Thu, 28 Jul 2005 17:26:00 -0000 From: =?ISO-8859-1?Q?Fran=E7ois-Xavier_Coudert?= Reply-To: =?ISO-8859-1?Q?Fran=E7ois-Xavier_Coudert?= To: "fortran@gcc.gnu.org" , gcc@gcc.gnu.org Subject: Middle-end and optimization regressions: what should we do? Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-SW-Source: 2005-07/txt/msg01170.txt.bz2 Hi all, PR 22619 and PR 22509 are two examples of recent 4.1 regressions that showed up in gfortran, due to middle-end or optimization bugs (only happen at -O3). Since these are regressions, they should be treated before a long time passes, but since both source codes are Fortran, I guess people don't (and won't) want to look at them. How can we help here? Is there a way to make gfortran output a complete GIMPLE tree, that could be used for middle-end hackers to determine where the problem is? Or are we doomed to a dichotomy to know which patch caused these regressions? FX PS: PR 22619 appeared somewhere between 20050716 and 20050717, so patches that could possible have messed up are: 005-07-17 Daniel Berlin Fix PR tree-optimization/22531 * tree-ssa-pre.c (do_eustores): Make sure LHS is a decl for the moment. 2005-07-17 Daniel Berlin * tree-promote-statics.c (pass_promote_statics): Change dump file name. 2005-07-17 Daniel Berlin * tree-optimize.c (init_tree_optimization_passes): Add pass_eliminate_useless_stores pass. * tree-pass.h (pass_eliminate_useless_stores): New pass structure. * tree-ssa-pre.c (is_copy_stmt): New function. (follow_copies_till_vuse): Ditto.=20 (do_eustores): Ditto. (gate_eustores): Ditto.=20 =20=20=20=20=20=20=20=20 2005-07-16 Richard Henderson * gcc.c (MFWRAP_SPEC): Don't wrap pthread_join or pthread_exit. 2005-07-16 Danny Berlin Kenneth Zadeck * Makefile.in: Added rules for ipa-pure-const.c, ipa-reference.c, ipa-reference.h, ipa-utils.c, ipa-utils.h, ipa-type-escape.c, ipa-type-escape.h, tree-promote-statics.c * ipa-pure-const.c, ipa-reference.c, ipa-reference.h, ipa-utils.c, ipa-utils.h, ipa-type-escape.c, ipa-type-escape.h,=20 tree-promote-statics.c: new files. * alias.c: (nonlocal_mentioned_p_1, nonlocal_mentioned_p, nonlocal_referenced_p_1, nonlocal_referenced_p, nonlocal_set_p_1, int nonlocal_set_p, mark_constant_function): Deleted. (rest_of_handle_cfg): Removed call to mark_constant_function. (nonoverlapping_component_refs_p): Added calls to support type based aliasing. * tree-ssa-alias.c (may_alias_p, compute_flow_insensitive_aliasing): Ditto. * calls.c (flags_from_decl_or_type): Removed reference to cgraph_rtl_info. * c-typeck.c (convert_arguments): Make builtins tolerant of having too many arguments. This is necessary for Spec 2000. * cgraph.h (const_function, pure_function): Removed. * common.opt: Added "fipa-pure-const", "fipa-reference", "fipa-type-escape", and "ftree-promote-static". * opts.c: Ditto. * passes.c: Added ipa and tree-promote-statics passes. * timevar.def: Added TV_IPA_PURE_CONST, TV_IPA_REFERENCE, TV_IPA_TYPE_ESCAPE, and TV_PROMOTE_STATICS. * tree-dfa.c (referenced_var_lookup_if_exists): New function. * tree-flow.h: Added exposed sra calls and addition of reference_vars_info field for FUNCTION_DECLS. * tree-pass.h: Added passes. * tree-sra.c: (sra_init_cache): New function. (sra_insert_before, sra_insert_after) Made public. (type_can_be_decomposed_p): Renamed from type_can_be_decomposed_p and made public. * tree-ssa-alias.c (dump_alias_stats): Added stats for type based aliasing. (may_alias_p): Added code to use type escape analysis to improve alias sets. * tree-ssa-operands.c (add_call_clobber_ops): Added parameter and code to prune clobbers of static variables based on information produced in ipa-reference pass. Changed call clobbering so that statics are not marked as clobbered if the call does not clobber them. 2005-07-16 Daniel Berlin * tree-ssa-structalias.c (need_to_solve): Need to check for preds, too. 2005-07-16 Eric Botcazou * doc/install.texi (*-*-solaris2*): Document recommended version of GNU binutils and mention GNU linker problem on Solaris 10. 2005-07-16 Joseph S. Myers PR c/22421 * c-decl.c (c_build_bitfield_integer_type): New function. (finish_struct): Call it. * c-pretty-print.c (pp_c_type_specifier): Handle bit-field types. 2005-07-16 Kaveh R. Ghazi * c-typeck.c (digest_init): Call 'convert_for_assignment' before returning. 2005-07-16 Jan Hubicka * cfg.c (update_bb_profile_for_threading): Fix profile updating. (scale_bbs_frequencies_int): Watch roundoff errors. * predict.c (return_prediction): Initialize return_stmt. 2005-07-16 Jan Hubicka * profile.c (rest_of_handle_branch_prob): Fix handling of estimation after RTL profiling. PR 22509 appeared between 20050713 and 20050714, so possible guilty patches= are: 2005-07-14 David Edelsohn * config/rs6000/rs6000.md (UNSPEC_SYNC, UNSPEC_LWSYNC, UNSPEC_ISYNC, UNSPEC_SYNC_OP, UNSPEC_ATOMIC, UNSPEC_CMPXCHG, UNSPEC_XCHG, UNSPEC_AND): New. (UNSPECV_ATOMIC, UNSPECV_SYNC, UNSPECV_SYNC_OP, UNSPECV_CMPXCHG, UNSPECV_LWSYNC, UNSPECV_ISYNC): Delete. * config/rs6000/sync.md (FETCHOP): New code macro. (fetchop_name, fetchop_pred, fetchopsi_constr, fetchopdi_constr): New code attrs. (memory_barrier, sync_internal): Use unspec instead of unspec_volat= ile. (sync_compare_and_swap): Same. (sync_lock_test_and_set): Same. (sync_, sync_nand): Only use rs6000_emit_sync for QImode and HImode, and not PPC405. (sync_old_, sync_old_nand): Same. (sync_new_, sync_new_nand): Same. (sync_{si,di}_internal): New. (sync_nand{si,di}_internal): New. (sync_old_{si,di}_internal): New. (sync_old_nand{si,di}_internal): New (sync_new_{si,di}_internal): New. (sync_new_nand{si,di}_internal): New. (atomic_and{si,di}): New. (sync_new_nand{si,di}_internal): New. (atomic_and{si,di}): New. (sync_add_internal): Delete. (sync_addshort_internal): Use unspec instead of unspec_volatile. (sync_sub_internal): Delte. (sync_subshort_internal): New. (sync_andsi_internal): Use unspec instead of unspec_volatile. (sync_anddi_internal): Delete. (sync_boolsi_internal): Use unspec instead of unspec_volatile. (sync_booldi_internal): Delete. (sync_boolc_internal): Delete. (sync_boolcshort_internal): Use unspec instead of unspec_volatile. (sync_boolc_internal2): Delete. (sync_boolcc_internal): Delete. (isync, lwsync): Use unspec instead of unspec_volatile. * config/rs6000/rs6000.c (rs6000_emit_sync): Implement MINUS. Revert UNSPEC_VOLATILE. (rs6000_split_atomic_op): New. * config/rs6000/rs6000-protos.h (rs6000_split_atomic_op): Declare. 2005-07-14 Eric Christopher * config/mips/mips.c (mips_canonicalize_comparison): Cast argument of trunc_int_for_mode to unsigned HOST_WIDE_INT. 2005-07-14 Eric Christopher * config/s390/t-tpf (SHLIB_MAPFILES): Remove. 2005-07-14 Steven Bosscher PR tree-optimization/22230 * tree-vrp.c (extract_range_from_binary_expr): Fix logics thinko in the computation of the four cross productions for "range op range". 2005-07-14 Alexandre Oliva Ulrich Weigand PR target/20126 * loop.c (loop_givs_rescan): Do not ICE if unable to reduce an IV in some insn. 2005-07-14 Ulrich Weigand * config/s390/s390.h (TARGET_TPF_PROFILING): Add default definition. 2005-07-14 Steve Ellcey * config/ia64/ia64.c (ia64_output_dwarf_dtprel): Support ILP32 mode. 2005-07-14 Richard Guenther PR middle-end/22347 * config/i386/i386-protos.h (ix86_function_value): Change prototype to match new target hook. * config/i386/i386.c (ix86_value_regno): Change prototype to take extra type argument. (TARGET_FUNCTION_VALUE): Define. (ix86_function_ok_for_sibcall): Pass extra argument to ix86_value_regno, check return slot rtx for exact match. (ix86_function_value): Take extra parameter. Dispatch to ix86_value_regno with fndecl/fntype as provided. (ix86_value_regno): Handle extra type argument. * config/i386/i386.h (FUNCTION_VALUE): No longer define. * testsuite/gcc.target/i386/sseregparm-3.c: New testcase. * testsuite/gcc.target/i386/sseregparm-4.c: New testcase. * testsuite/gcc.target/i386/sseregparm-5.c: New testcase. * testsuite/gcc.target/i386/sseregparm-6.c: New testcase. * testsuite/gcc.target/i386/sseregparm-7.c: New testcase. 2005-07-14 Richard Guenther * Makefile.in (explow.o, reg-stack.o): Depend on target.h. * calls.c (expand_call): Pass fntype to hard_function_value. (emit_library_call_value_1): Likewise. * explow.c: Include target.h. (hard_function_value): Take extra argument, the fntype. Use new target hook for function_value. * expr.h (hard_function_value): Change prototype. * function.c (aggregate_value_p): Pass 0 as fntype to hard_function_value. (assign_parms): Use new target hook for function_value. Pass 0 as fntype to hard_function_value. (expand_function_end): Likewise. * reg-stack.c: Include target.h. (stack_result): Use new target hook for function_value. * target-def.h: New target hook function_value. * target.h: Likewise. * targhooks.c (default_function_value): New function. * targhooks.h (default_function_value): Declare. 2005-07-13 Ian Lance Taylor * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Define. 2005-07-14 Jan Hubicka * tree-dfa.c (dump_variable): Use default_def function. * tree-ssa-alias.c (dump_points_to_info): Likewise. * tree-ssa.c (verify_use): Likewise. * tree-ssanames.c (release_ssa_name): Likewise. * tree-tailcall.c (eliminate_tail_call): Likewise. (tree_optimize_tail_calls_1): Likewise. * tree-vrp.c (get_value_range): Likewise. 2005-07-14 Ben Elliston * gcc.c (main): Compare language[0] with '*' when iterating over the infiles. 2005-07-13 Adrian Strae=BDtling * config/s390/s390.c: (s390_cc_modes_compatible): Move before "s390_emit_compare". Add handling of CCZ1mode. (s390_canonicalize_comparison): Simplify cascaded EQ, NE. (390_emit_compare): Use "s390_cc_modes_compatible" for mode checking. (s390_branch_condition_mask): Add CCZ1mode handling. * config/s390/s390.md: ("seq", "*seq"): New pattern. ("sync_compare_and_swap_cc", "*sync_compare_and_swap_cc= "): Use CCZ1mode instead of CCZmode. * config/s390/s390-modes.def: Add CCZ1mode. Comment new mode. 2006-07-13 Adrian Strae=BDtling * config/s390/s390.md: ("cmpstrsi", "*cmpstr"): New pattern. ("strlen", "*strlen"): Use hard reg 0 in SImode. 2005-07-13 Eric Christopher * config/mips/mips.c (mips_canonicalize_comparison): New. (mips_emit_int_relational): Use. 2005-07-13 Eric Christopher * config.gcc (s390x-ibm-tpf*): Add extra_options. Remove static extra parts. * config/s390/s390.md: Include tpf.md. Move tpf specific patterns... * config/s390/tpf.md: To here. * config/s390/s390.opt: Move tpf specific options... * config/s390/tpf.opt: to here. Add mmain option. * config/s390/tpf-unwind.h: Remove unnecessary defines. * config/s390/tpf.h: Rewrite. 2005-07-13 H.J. Lu * doc/tm.texi: Remove @xref{Cross-profiling}. 2005-07-13 Jeff Law * fold-const.c (fold_binary): When comparing two simple ADDR_EXPR expressions, test their _DECL operands for pointer equality rather than using operand_equal_p. 2005-07-13 H.J. Lu * config/alpha/linux.h (TARGET_HAS_F_SETLKW): Renamed to ... (TARGET_POSIX_IO): This. * config/darwin.h: Likewise. * config/freebsd.h: Likewise. * config/linux.h: Likewise. * config/lynx.h: Likewise. * config/netbsd.h: Likewise. * config/rs6000/linux64.h: Likewise. * config/rs6000/linux.h: Likewise. * config/s390/tpf.h: Likewise. * config/sh/embed-elf.h: Likewise. * config/sparc/linux64.h: Likewise. * config/sparc/linux.h: Likewise. * config/svr4.h: Likewise. * gcov-io.h: Likewise. * doc/tm.texi: Updated. * libgcov.c (create_file_directory): Defined only if TARGET_POSIX_IO is defined. (gcov_exit): Call create_file_directory only if TARGET_POSIX_IO is defined. 2005-07-13 Jan Hubicka * tree-ssa-operands.c (get_expr_operands): Fix typo in previous pat= ch. 2005-07-13 David Edelsohn * tree-ssa-dom.c (lookup_avail_expr): Do not pass member in freed structure as argument. 2005-07-13 Paolo Bonzini PR tree-optimization/21921 * tree-iterator.c (tsi_link_before): Support the case when tsi_end_p (tsi) =3D=3D true.