Go to file
Andrew MacLeod a13d4ebfc3 alias.c (get_addr): Externalize.
2001-04-09  Andrew MacLeod  <amacleod@redhat.com>
	    Jeff Law  <law@cygnus.com>

	* alias.c (get_addr): Externalize.
	(canon_true_dependence): New function. Behaves like true_dependance
	except it already assumes a MEM has been canonicalized.
	* flags.h (flag_gcse_lm, flag_gcse_sm): New optimization flags.
	* gcse.c (struct ls_expr): Add load/store expressions structure.
	(modify_mem_list, canon_modify_mem_list): New variable.
	(gcse_main): Initialize & finalize alias analysis. Use enhanced
	load motion and store motion if requested.
	(alloc_gcse_mem): Allocate space for modify_mem_list array.
	(free_gcse_mem): Free the modify_mem_list array.
	(oprs_unchanged_p): Use load_killed_in_block_p.
	(gcse_mems_conflict_p, gcse_mem_operand): New variables.
	(mems_conflict_for_gcse_p): New function.  Don't kill loads
	with stores to themselves if its in the load/store expression list.
	(load_killed_in_block_p): New function.
	(canon_list_insert): New Function.
	(record_last_mem_set_info): Keep a list of all instructions which
	can modify memory for each basic block.
	(compute_hash_table, reset_opr_set_tables): Clear modify_mem_list.
	(oprs_not_set_p): Use load_killed_in_block_p.
	(mark_call, mark_set, mark_clobber): Use record_last_mem_set_info.
	(expr_killed_p): Use load_killed_in_block_p.
	(compute_transp): Do not pessimize memory references.
	(pre_edge_insert): Update stores for a load motion expression.
	(one_pre_gcse_pass): Check loads/stores for extra load motion.
	(ldst_entry): Find or create a ldst_expr structure.
	(free_ldst_entry): Free memory for an individual item.
	(free_ldst_mems): Free entire load/store expression list.
	(print_ldst_list): Print debug info.
	(find_rtx_in_ldst): Try to find an rtx expression in the ldst list.
	(enumerate_ldsts): Assign integer values to each entry in list.
	(first_ls_expr): First expression in the list.
	(next_ls_expr): Next expression in the list.
	(simple_mem): Check if expression qualifies for ld/st expression list.
	(invalidate_any_buried_refs): Remove from expression list if its
	used in some other way we dont understand.
	(compute_ld_motion_mems): Find all potential enhanced load motion
	expression.
	(trim_ld_motion_mems): Remove any expressions which are invalid.
	(update_ld_motion_stores): Copy store values to registers for loads
	which have been moved.
	(regvec, st_antloc, num_store): New global statics.
	(reg_set_info): Marks registers as set.
	(store_ops_ok): Verfies registers expressions are valid in a block.
	(find_moveable_store): Look for moveable stores in a pattern.
	(compute_store_table): Find stores in a function worth moving, maybe.
	(load_kills_store): Check dependance of a load and store.
	(find_loads): Find any loads in a pattern.
	(store_killed_in_insn): Check if a store is killed in an insn.
	(store_killed_after): Check is store killed after an insn in a block.
	(store_killed_before): Check is store killed before an insn in a block.
	(build_store_vectors): Generate the antic and avail vectors.
	(insert_insn_start_bb): Insert at the start of a BB, update BLOCK_HEAD.
	(insert_store): Add a store to an edge.
	(replace_store_insn): Replace a store with a SET insn.
	(delete_store): Delete a store insn.
	(free_store_memory): Free memory.
	(store_motion): Perform store motion.
	* invoke.texi: Add documentation for -fcse-lm and -fgcse-sm.
	* rtl.h (get_addr, canon_true_dependence): Add prototypes.
	* toplev.c (flag_gcse_lm, flag_gcse_sm): New Variables.
	(f_options): Add gcse-lm and gcse-sm.

Co-Authored-By: Jeff Law <law@redhat.com>

From-SVN: r41207
2001-04-09 14:27:05 +00:00
boehm-gc misc.c: Back out buggy changes to stack clearing code. 2001-04-06 17:11:43 -07:00
config
contrib
fastjar
gcc alias.c (get_addr): Externalize. 2001-04-09 14:27:05 +00:00
include ansidecl.h: All logic from gcc/gansidecl.h moved here. 2001-04-04 00:46:27 +00:00
INSTALL
libchill
libf2c Daily bump. 2001-04-09 07:16:39 +00:00
libffi configure.in: Use different syntax for subdirectory creation. 2001-03-29 01:03:27 +01:00
libiberty ansidecl.h: All logic from gcc/gansidecl.h moved here. 2001-04-04 00:46:27 +00:00
libjava testsuite: libjava: remove some xfail markers. 2001-04-07 20:00:50 +00:00
libobjc
libstdc++-v3 std_valarray.h (valarray<>::operator[]): Make inline. 2001-04-08 16:20:49 +00:00
maintainer-scripts
zlib
.cvsignore
ChangeLog * MAINTAINERS: Add self and RTH as C front end maintainers. 2001-04-06 18:14:46 +01:00
config-ml.in
config.guess
config.if
config.sub config.sub: Make sure to match an already-canonicalized machine name (eg. 2001-04-06 07:06:32 +00:00
configure
configure.in Makefile.in (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, [...]): New macros. 2001-04-02 01:26:14 +00:00
COPYING
COPYING.LIB
install-sh
libtool.m4 ltconfig, [...]: Upgraded to libtool 1.4a 1.641.2.198. 2001-03-22 06:48:32 +00:00
ltcf-c.sh ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP. 2001-03-22 18:13:39 +00:00
ltcf-cxx.sh ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP. 2001-03-22 18:13:39 +00:00
ltcf-gcj.sh ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP. 2001-03-22 18:13:39 +00:00
ltconfig ltconfig, [...]: Upgraded to libtool 1.4a 1.641.2.198. 2001-03-22 06:48:32 +00:00
ltmain.sh ltconfig, [...]: Upgraded to libtool 1.4a 1.641.2.198. 2001-03-22 06:48:32 +00:00
MAINTAINERS * MAINTAINERS: Add self and RTH as C front end maintainers. 2001-04-06 18:14:46 +01:00
Makefile.in Makefile.in (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, [...]): New macros. 2001-04-02 01:26:14 +00:00
missing
mkdep
mkinstalldirs
move-if-change
README
symlink-tree
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.


Check the INSTALL directory for detailed configuration and installation
instructions.


Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.