-extern cselib_val *cselib_lookup PARAMS ((rtx, enum machine_mode, int));
-extern void cselib_update_varray_sizes PARAMS ((void));
-extern void cselib_init PARAMS ((void));
-extern void cselib_finish PARAMS ((void));
-extern void cselib_process_insn PARAMS ((rtx));
-extern int rtx_equal_for_cselib_p PARAMS ((rtx, rtx));
-extern int references_value_p PARAMS ((rtx, int));
-extern rtx cselib_subst_to_values PARAMS ((rtx));
+enum cselib_record_what
+{
+ CSELIB_RECORD_MEMORY = 1,
+ CSELIB_PRESERVE_CONSTANTS = 2
+};
+
+extern void (*cselib_discard_hook) (cselib_val *);
+extern void (*cselib_record_sets_hook) (rtx insn, struct cselib_set *sets,
+ int n_sets);
+
+extern cselib_val *cselib_lookup (rtx, enum machine_mode, int);
+extern cselib_val *cselib_lookup_from_insn (rtx, enum machine_mode, int, rtx);
+extern void cselib_init (int);
+extern void cselib_clear_table (void);
+extern void cselib_finish (void);
+extern void cselib_process_insn (rtx);
+extern enum machine_mode cselib_reg_set_mode (const_rtx);
+extern int rtx_equal_for_cselib_p (rtx, rtx);
+extern int references_value_p (const_rtx, int);
+extern rtx cselib_expand_value_rtx (rtx, bitmap, int);
+typedef rtx (*cselib_expand_callback)(rtx, bitmap, int, void *);
+extern rtx cselib_expand_value_rtx_cb (rtx, bitmap, int,
+ cselib_expand_callback, void *);
+extern bool cselib_dummy_expand_value_rtx_cb (rtx, bitmap, int,
+ cselib_expand_callback, void *);
+extern rtx cselib_subst_to_values (rtx);
+extern void cselib_invalidate_rtx (rtx);
+
+extern void cselib_reset_table (unsigned int);
+extern unsigned int cselib_get_next_uid (void);
+extern void cselib_preserve_value (cselib_val *);
+extern bool cselib_preserved_value_p (cselib_val *);
+extern void cselib_preserve_only_values (void);
+extern void cselib_preserve_cfa_base_value (cselib_val *, unsigned int);
+
+extern void dump_cselib_table (FILE *);