/* Common subexpression elimination for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2003, 2004, 2005 Free Software Foundation, Inc.
+ 1999, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GCC.
{
/* The hash value. */
unsigned int value;
- union cselib_val_u
- {
- /* A VALUE rtx that points back to this structure. */
- rtx GTY ((tag ("1"))) val_rtx;
- /* Used to keep a list of free cselib_val structures. */
- struct cselib_val_struct * GTY ((skip)) next_free;
- } GTY ((desc ("1"))) u;
+
+ /* A VALUE rtx that points back to this structure. */
+ rtx val_rtx;
/* All rtl expressions that hold this value at the current time during a
scan. */
struct elt_loc_list *locs;
+
/* If this value is used as an address, points to a list of values that
use it as an address in a MEM. */
struct elt_list *addr_list;
cselib_val *elt;
};
+extern void (*cselib_discard_hook) (cselib_val *);
+
extern cselib_val *cselib_lookup (rtx, enum machine_mode, int);
extern void cselib_init (bool record_memory);
extern void cselib_clear_table (void);
extern enum machine_mode cselib_reg_set_mode (rtx);
extern int rtx_equal_for_cselib_p (rtx, rtx);
extern int references_value_p (rtx, int);
+extern rtx cselib_expand_value_rtx (rtx, bitmap, int);
extern rtx cselib_subst_to_values (rtx);
extern void cselib_invalidate_rtx (rtx);