X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Frtl.h;h=ae31db49be7529d340a25fd41adf472515537e6f;hp=ed9fc875b0a8879b4a7f3a3c05642f3f4e02e2b6;hb=4e4ac74bd1248098e8706ef1d8829fd87a0d4e7b;hpb=66e68a00e5b37d436d85c4a5f2acd1611a3d9bfc diff --git a/gcc/rtl.h b/gcc/rtl.h index ed9fc875b0a..ae31db49be7 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -1,6 +1,6 @@ /* Register Transfer Language (RTL) definitions for GCC Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GCC. @@ -382,8 +382,7 @@ struct rtvec_def GTY(()) { /* 1 if X is a constant value that is an integer. */ #define CONSTANT_P(X) \ - (GET_RTX_CLASS (GET_CODE (X)) == RTX_CONST_OBJ \ - || GET_CODE (X) == CONST_VECTOR) + (GET_RTX_CLASS (GET_CODE (X)) == RTX_CONST_OBJ) /* 1 if X can be used to represent an object. */ #define OBJECT_P(X) \ @@ -967,6 +966,7 @@ enum label_kind not to use an rtx with this cost under any circumstances. */ #define MAX_COST INT_MAX +extern void init_rtlanal (void); extern int rtx_cost (rtx, enum rtx_code); extern int address_cost (rtx, enum machine_mode); extern unsigned int subreg_lsb (rtx); @@ -1375,7 +1375,6 @@ extern rtvec gen_rtvec_v (int, rtx *); extern rtx gen_reg_rtx (enum machine_mode); extern rtx gen_rtx_REG_offset (rtx, enum machine_mode, unsigned int, int); extern rtx gen_label_rtx (void); -extern int subreg_hard_regno (rtx, int); extern rtx gen_lowpart_common (enum machine_mode, rtx); /* In cse.c */ @@ -1384,8 +1383,6 @@ extern rtx gen_lowpart_if_possible (enum machine_mode, rtx); /* In emit-rtl.c */ extern rtx gen_highpart (enum machine_mode, rtx); extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx); -extern rtx gen_realpart (enum machine_mode, rtx); -extern rtx gen_imagpart (enum machine_mode, rtx); extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode); /* In emit-rtl.c */ @@ -1519,8 +1516,12 @@ extern int split_branch_probability; extern rtx split_insns (rtx, rtx); /* In simplify-rtx.c */ +extern rtx simplify_const_unary_operation (enum rtx_code, enum machine_mode, + rtx, enum machine_mode); extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode); +extern rtx simplify_const_binary_operation (enum rtx_code, enum machine_mode, + rtx, rtx); extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx); extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, @@ -1582,7 +1583,6 @@ extern int count_occurrences (rtx, rtx, int); extern int reg_referenced_p (rtx, rtx); extern int reg_used_between_p (rtx, rtx, rtx); extern int reg_set_between_p (rtx, rtx, rtx); -extern int regs_set_between_p (rtx, rtx, rtx); extern int commutative_operand_precedence (rtx); extern int swap_commutative_operands_p (rtx, rtx); extern int modified_between_p (rtx, rtx, rtx); @@ -1912,8 +1912,10 @@ extern int rtx_renumbered_equal_p (rtx, rtx); extern int true_regnum (rtx); extern unsigned int reg_or_subregno (rtx); extern int redirect_jump_1 (rtx, rtx); +extern void redirect_jump_2 (rtx, rtx, rtx, int, int); extern int redirect_jump (rtx, rtx, int); extern void rebuild_jump_labels (rtx); +extern rtx reversed_comparison (rtx, enum machine_mode); extern enum rtx_code reversed_comparison_code (rtx, rtx); extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, rtx, rtx, rtx); @@ -1940,7 +1942,6 @@ extern void init_emit (void); extern void init_emit_once (int); extern void push_topmost_sequence (void); extern void pop_topmost_sequence (void); -extern void reverse_comparison (rtx); extern void set_new_first_and_last_insn (rtx, rtx); extern void unshare_all_rtl (void); extern void unshare_all_rtl_again (rtx); @@ -1954,7 +1955,6 @@ extern void add_insn_before (rtx, rtx); extern void add_insn_after (rtx, rtx); extern void remove_insn (rtx); extern void emit_insn_after_with_line_notes (rtx, rtx, rtx); -extern enum rtx_code classify_insn (rtx); extern rtx emit (rtx); extern void renumber_insns (FILE *); extern void remove_unnecessary_notes (void); @@ -1966,6 +1966,8 @@ extern rtx delete_insn_and_edges (rtx); extern void delete_insn_chain_and_edges (rtx, rtx); extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx); extern rtx gen_const_mem (enum machine_mode, rtx); +extern bool validate_subreg (enum machine_mode, enum machine_mode, + rtx, unsigned int); /* In combine.c */ extern int combine_instructions (rtx, unsigned int); @@ -2022,7 +2024,7 @@ extern rtx move_by_pieces (rtx, rtx, unsigned HOST_WIDE_INT, unsigned int, int); /* In flow.c */ -extern void recompute_reg_usage (rtx, int); +extern void recompute_reg_usage (void); extern int initialize_uninitialized_subregs (void); extern void delete_dead_jumptables (void); extern void print_rtl_with_bb (FILE *, rtx); @@ -2032,8 +2034,6 @@ extern void dump_flow_info (FILE *); extern void init_expmed (void); extern void expand_inc (rtx, rtx); extern void expand_dec (rtx, rtx); -extern rtx expand_mult_highpart (enum machine_mode, rtx, - unsigned HOST_WIDE_INT, rtx, int, int); /* In gcse.c */ extern bool can_copy_p (enum machine_mode); @@ -2062,10 +2062,9 @@ extern void init_reg_modes_once (void); extern void init_regs (void); extern void init_fake_stack_mems (void); extern void init_reg_sets (void); -extern void regset_release_memory (void); extern void regclass_init (void); extern void regclass (rtx, int, FILE *); -extern void reg_scan (rtx, unsigned int, int); +extern void reg_scan (rtx, unsigned int); extern void reg_scan_update (rtx, rtx, unsigned int); extern void fix_register (const char *, int, int); extern void init_subregs_of_mode (void); @@ -2101,8 +2100,7 @@ enum libcall_type LCT_PURE_MAKE_BLOCK = 4, LCT_NORETURN = 5, LCT_THROW = 6, - LCT_ALWAYS_RETURN = 7, - LCT_RETURNS_TWICE = 8 + LCT_RETURNS_TWICE = 7 }; extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, @@ -2110,21 +2108,21 @@ extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, enum machine_mode, int, ...); -/* In unroll.c */ -extern int set_dominates_use (int, int, int, rtx, rtx); - /* In varasm.c */ extern int in_data_section (void); extern void init_varasm_once (void); /* In rtl.c */ -extern void init_rtl (void); extern void traverse_md_constants (int (*) (void **, void *), void *); struct md_constant { char *name, *value; }; /* In read-rtl.c */ extern int read_skip_spaces (FILE *); extern bool read_rtx (FILE *, rtx *, int *); +extern void copy_rtx_ptr_loc (const void *, const void *); +extern void print_rtx_ptr_loc (const void *); +extern const char *join_c_conditions (const char *, const char *); +extern void print_c_condition (const char *); extern const char *read_rtx_filename; extern int read_rtx_lineno; @@ -2192,6 +2190,7 @@ extern void sms_schedule (FILE *); struct rtl_hooks { rtx (*gen_lowpart) (enum machine_mode, rtx); + rtx (*gen_lowpart_no_emit) (enum machine_mode, rtx); rtx (*reg_nonzero_bits) (rtx, enum machine_mode, rtx, enum machine_mode, unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT *); rtx (*reg_num_sign_bit_copies) (rtx, enum machine_mode, rtx, enum machine_mode,