Investigation of g77.f-torture/execute/short.f -Os failure

Billinghurst, David (CRTS) David.Billinghurst@riotinto.com
Tue Sep 12 03:26:00 GMT 2000


I have followed this failure (
http://gcc.gnu.org/ml/gcc-bugs/2000-09/msg00172.html ) a little further. 

CVS version:
  "2000-03-14 18:38 2000 UTC" passes
  "2000-03-14 18:38 2000 UTC" fails
so the problem was probably introduced by


2000-03-14  Bernd Schmidt  <bernds@cygnus.co.uk>

        * cselib.h: New file.
        * alias.c: Include "cselib.h".
        (fixed_scalar_and_varying_struct_p): Accept the addresses of the
        MEMs as two new arguments.
        (get_addr): New static function.
        (find_base_term): Handle VALUEs.
        (memrefs_conflict_p): Likewise.
        (true_dependence): Call get_addr on the addresses.
        Call fixed_scalar_and_varying_struct_p with addresses that have been
        passed through get_addr and canon_rtx.
        (write_dependence_p): Move DIFFERENT_ALIAS_SETS_P test for
consistency
        with true_dependence.
        Call get_addr on the addresses; don't call canon_rtx on the MEMs.
        * loop.c: Include "cselib.h".
        (load_mems): Process extended basic block that enters the loop with
        cselib.  Use that information to change initialization of the shadow
        register so that a constant equivalence is seen by later passes.
        * reload1.c: Include "cselib.h".
        (reload_cse_invalidate_regno): Delete function.
        (reload_cse_mem_conflict_p): Likewise.
        (reload_cse_invalidate_mem): Likewise.
        (reload_cse_invalidate_rtx): Likewise.
        (reload_cse_regno_equal_p): Likewise.
        (reload_cse_check_clobber): Likewise.
        (reload_cse_record_set): Likewise.
        (reg_values): Delete static variable.
        (invalidate_regno_rtx): Likewise.
        (reload_cse_delete_noop_set): New static function.
        (reload_cse_simplify): New static function, broken out of
        reload_cse_regs_1.
        (reload_cse_noop_set_p): Delete unused argument INSN.
        Just call rtx_equal_for_cselib_p on set source and destination.
        (reload_cse_regs_1): Break out some code into reload_cse_simplify
and
        reload_cse_delete_noop_set.  Delete code to keep track of values;
use
        cselib functions instead.  Delete code to push/pop obstacks.
        (reload_cse_simplify_set): Use cselib to find equivalent values.
        Delete code to push/pop obstacks.       
       (reload_cse_simplify_operands): Likewise.
        * rtl.def (VALUE): New rtx code.
        * rtl.h (union rtunion_def): New elt rt_cselib.
        (X0CSELIB, CSELIB_VAL_PTR): New macros.
        * simplify_rtx.c: Include "ggc.h", "obstack.h", "cselib.h".
        (new_elt_list, new_elt_loc_list, unchain_one_value, clear_table,
        unchain_one_elt_list, unchain_one_elt_loc_list,
check_useless_values,
        discard_useless_locs, discard_useless_values, entry_and_rtx_equal_p,
        hash_rtx, new_cselib_val, add_mem_for_addr, get_value_hash,
        cselib_lookup_mem, cselib_subst_to_values, cselib_invalidate_regno,
        cselib_mem_conflict_p, cselib_invalidate_mem, cselib_invalidate_rtx,
        cselib_record_set, cselib_record_sets): New static functions.
        (cselib_lookup, cselib_update_varray_sizes, cselib_init,
        cselib_finish, cselib_process_insn, rtx_equal_for_cselib_p,
        references_value_p): New functions.
        (MAX_USELESS_VALUES, REG_VALUES): New macros.
        (table, cselib_current_insn, next_unknown_value, cselib_nregs,
        n_useless_values, reg_values, callmem, cselib_obstack,
        cselib_startobj, empty_vals, empty_elt_lists, empty_elt_loc_lists):
        New static variables.
        * varray.h (union varray_data_tag): New elt te.
        (VARRAY_ELT_LIST_INIT, VARRAY_ELT_LIST): New macros.
        * Makefile.in (reload1.o, loop.o, simplify-rtx.o, alias.o): Update
        dependencies.

+++++++++++++++++++++++++++++++++++++++++
(Mr) David Billinghurst
Comalco Research Centre
PO Box 316, Thomastown, Vic, Australia, 3074
Phone:	+61 3 9469 0642
FAX:	+61 3 9462 2700
Email:	David.Billinghurst@riotinto.com






More information about the Gcc-bugs mailing list