comparison gcc/rtl.h @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents b7f97abdc517
children 04ced10e8804
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
1 /* Register Transfer Language (RTL) definitions for GCC 1 /* Register Transfer Language (RTL) definitions for GCC
2 Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2 Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 5
6 This file is part of GCC. 6 This file is part of GCC.
7 7
8 GCC is free software; you can redistribute it and/or modify it under 8 GCC is free software; you can redistribute it and/or modify it under
28 #include "real.h" 28 #include "real.h"
29 #include "vec.h" 29 #include "vec.h"
30 #include "vecir.h" 30 #include "vecir.h"
31 #include "fixed-value.h" 31 #include "fixed-value.h"
32 #include "alias.h" 32 #include "alias.h"
33 #include "hashtab.h"
33 34
34 #undef FFS /* Some systems predefine this symbol; don't let it interfere. */ 35 #undef FFS /* Some systems predefine this symbol; don't let it interfere. */
35 #undef FLOAT /* Likewise. */ 36 #undef FLOAT /* Likewise. */
36 #undef ABS /* Likewise. */ 37 #undef ABS /* Likewise. */
37 #undef PC /* Likewise. */ 38 #undef PC /* Likewise. */
231 }; 232 };
232 233
233 /* RTL expression ("rtx"). */ 234 /* RTL expression ("rtx"). */
234 235
235 struct GTY((chain_next ("RTX_NEXT (&%h)"), 236 struct GTY((chain_next ("RTX_NEXT (&%h)"),
236 chain_prev ("RTX_PREV (&%h)"))) rtx_def { 237 chain_prev ("RTX_PREV (&%h)"), variable_size)) rtx_def {
237 /* The kind of expression this is. */ 238 /* The kind of expression this is. */
238 ENUM_BITFIELD(rtx_code) code: 16; 239 ENUM_BITFIELD(rtx_code) code: 16;
239 240
240 /* The kind of value the expression has. */ 241 /* The kind of value the expression has. */
241 ENUM_BITFIELD(machine_mode) mode : 8; 242 ENUM_BITFIELD(machine_mode) mode : 8;
350 351
351 /* RTL vector. These appear inside RTX's when there is a need 352 /* RTL vector. These appear inside RTX's when there is a need
352 for a variable number of things. The principle use is inside 353 for a variable number of things. The principle use is inside
353 PARALLEL expressions. */ 354 PARALLEL expressions. */
354 355
355 struct GTY(()) rtvec_def { 356 struct GTY((variable_size)) rtvec_def {
356 int num_elem; /* number of elements */ 357 int num_elem; /* number of elements */
357 rtx GTY ((length ("%h.num_elem"))) elem[1]; 358 rtx GTY ((length ("%h.num_elem"))) elem[1];
358 }; 359 };
359 360
360 #define NULL_RTVEC (rtvec) 0 361 #define NULL_RTVEC (rtvec) 0
755 /* Chain insns together in sequence. */ 756 /* Chain insns together in sequence. */
756 #define PREV_INSN(INSN) XEXP (INSN, 1) 757 #define PREV_INSN(INSN) XEXP (INSN, 1)
757 #define NEXT_INSN(INSN) XEXP (INSN, 2) 758 #define NEXT_INSN(INSN) XEXP (INSN, 2)
758 759
759 #define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 3) 760 #define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 3)
760 #define INSN_LOCATOR(INSN) XINT (INSN, 4) 761
762 /* The body of an insn. */
763 #define PATTERN(INSN) XEXP (INSN, 4)
764
765 #define INSN_LOCATOR(INSN) XINT (INSN, 5)
761 /* LOCATION of an RTX if relevant. */ 766 /* LOCATION of an RTX if relevant. */
762 #define RTL_LOCATION(X) (INSN_P (X) ? \ 767 #define RTL_LOCATION(X) (INSN_P (X) ? \
763 locator_location (INSN_LOCATOR (X)) \ 768 locator_location (INSN_LOCATOR (X)) \
764 : UNKNOWN_LOCATION) 769 : UNKNOWN_LOCATION)
765 /* LOCATION of current INSN. */ 770 /* LOCATION of current INSN. */
766 #define CURR_INSN_LOCATION (locator_location (curr_insn_locator ())) 771 #define CURR_INSN_LOCATION (locator_location (curr_insn_locator ()))
767 /* The body of an insn. */
768 #define PATTERN(INSN) XEXP (INSN, 5)
769 772
770 /* Code number of instruction, from when it was recognized. 773 /* Code number of instruction, from when it was recognized.
771 -1 means this instruction has not been recognized yet. */ 774 -1 means this instruction has not been recognized yet. */
772 #define INSN_CODE(INSN) XINT (INSN, 6) 775 #define INSN_CODE(INSN) XINT (INSN, 6)
773 776
928 #define NOTE_DURING_CALL_P(RTX) \ 931 #define NOTE_DURING_CALL_P(RTX) \
929 (RTL_FLAG_CHECK1("NOTE_VAR_LOCATION_DURING_CALL_P", (RTX), NOTE)->call) 932 (RTL_FLAG_CHECK1("NOTE_VAR_LOCATION_DURING_CALL_P", (RTX), NOTE)->call)
930 933
931 /* DEBUG_EXPR_DECL corresponding to a DEBUG_EXPR RTX. */ 934 /* DEBUG_EXPR_DECL corresponding to a DEBUG_EXPR RTX. */
932 #define DEBUG_EXPR_TREE_DECL(RTX) XCTREE (RTX, 0, DEBUG_EXPR) 935 #define DEBUG_EXPR_TREE_DECL(RTX) XCTREE (RTX, 0, DEBUG_EXPR)
936
937 /* VAR_DECL/PARM_DECL DEBUG_IMPLICIT_PTR takes address of. */
938 #define DEBUG_IMPLICIT_PTR_DECL(RTX) XCTREE (RTX, 0, DEBUG_IMPLICIT_PTR)
933 939
934 /* Possible initialization status of a variable. When requested 940 /* Possible initialization status of a variable. When requested
935 by the user, this information is tracked and recorded in the DWARF 941 by the user, this information is tracked and recorded in the DWARF
936 debug information, along with the variable's location. */ 942 debug information, along with the variable's location. */
937 enum var_init_status 943 enum var_init_status
969 in the input source code. */ 975 in the input source code. */
970 #define LABEL_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL) 976 #define LABEL_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL)
971 977
972 /* In jump.c, each label contains a count of the number 978 /* In jump.c, each label contains a count of the number
973 of LABEL_REFs that point at it, so unused labels can be deleted. */ 979 of LABEL_REFs that point at it, so unused labels can be deleted. */
974 #define LABEL_NUSES(RTX) XCINT (RTX, 4, CODE_LABEL) 980 #define LABEL_NUSES(RTX) XCINT (RTX, 5, CODE_LABEL)
975 981
976 /* Labels carry a two-bit field composed of the ->jump and ->call 982 /* Labels carry a two-bit field composed of the ->jump and ->call
977 bits. This field indicates whether the label is an alternate 983 bits. This field indicates whether the label is an alternate
978 entry point, and if so, what kind. */ 984 entry point, and if so, what kind. */
979 enum label_kind 985 enum label_kind
1029 #define JUMP_LABEL(INSN) XCEXP (INSN, 8, JUMP_INSN) 1035 #define JUMP_LABEL(INSN) XCEXP (INSN, 8, JUMP_INSN)
1030 1036
1031 /* Once basic blocks are found, each CODE_LABEL starts a chain that 1037 /* Once basic blocks are found, each CODE_LABEL starts a chain that
1032 goes through all the LABEL_REFs that jump to that label. The chain 1038 goes through all the LABEL_REFs that jump to that label. The chain
1033 eventually winds up at the CODE_LABEL: it is circular. */ 1039 eventually winds up at the CODE_LABEL: it is circular. */
1034 #define LABEL_REFS(LABEL) XCEXP (LABEL, 5, CODE_LABEL) 1040 #define LABEL_REFS(LABEL) XCEXP (LABEL, 4, CODE_LABEL)
1035 1041
1036 /* For a REG rtx, REGNO extracts the register number. REGNO can only 1042 /* For a REG rtx, REGNO extracts the register number. REGNO can only
1037 be used on RHS. Use SET_REGNO to change the value. */ 1043 be used on RHS. Use SET_REGNO to change the value. */
1038 #define REGNO(RTX) (rhs_regno(RTX)) 1044 #define REGNO(RTX) (rhs_regno(RTX))
1039 #define SET_REGNO(RTX,N) (df_ref_change_reg_with_loc (REGNO(RTX), N, RTX), XCUINT (RTX, 0, REG) = N) 1045 #define SET_REGNO(RTX,N) (df_ref_change_reg_with_loc (REGNO(RTX), N, RTX), XCUINT (RTX, 0, REG) = N)
1046 #define SET_REGNO_RAW(RTX,N) (XCUINT (RTX, 0, REG) = N)
1040 1047
1041 /* ORIGINAL_REGNO holds the number the register originally had; for a 1048 /* ORIGINAL_REGNO holds the number the register originally had; for a
1042 pseudo register turned into a hard reg this will hold the old pseudo 1049 pseudo register turned into a hard reg this will hold the old pseudo
1043 register number. */ 1050 register number. */
1044 #define ORIGINAL_REGNO(RTX) X0UINT (RTX, 1) 1051 #define ORIGINAL_REGNO(RTX) X0UINT (RTX, 1)
1047 static inline unsigned int 1054 static inline unsigned int
1048 rhs_regno (const_rtx x) 1055 rhs_regno (const_rtx x)
1049 { 1056 {
1050 return XCUINT (x, 0, REG); 1057 return XCUINT (x, 0, REG);
1051 } 1058 }
1052
1053 1059
1054 1060
1055 /* 1 if RTX is a reg or parallel that is the current function's return 1061 /* 1 if RTX is a reg or parallel that is the current function's return
1056 value. */ 1062 value. */
1057 #define REG_FUNCTION_VALUE_P(RTX) \ 1063 #define REG_FUNCTION_VALUE_P(RTX) \
1116 1122
1117 /* Maximum cost of an rtl expression. This value has the special meaning 1123 /* Maximum cost of an rtl expression. This value has the special meaning
1118 not to use an rtx with this cost under any circumstances. */ 1124 not to use an rtx with this cost under any circumstances. */
1119 #define MAX_COST INT_MAX 1125 #define MAX_COST INT_MAX
1120 1126
1127 /* A structure to hold all available cost information about an rtl
1128 expression. */
1129 struct full_rtx_costs
1130 {
1131 int speed;
1132 int size;
1133 };
1134
1135 /* Initialize a full_rtx_costs structure C to the maximum cost. */
1136 static inline void
1137 init_costs_to_max (struct full_rtx_costs *c)
1138 {
1139 c->speed = MAX_COST;
1140 c->size = MAX_COST;
1141 }
1142
1143 /* Initialize a full_rtx_costs structure C to zero cost. */
1144 static inline void
1145 init_costs_to_zero (struct full_rtx_costs *c)
1146 {
1147 c->speed = 0;
1148 c->size = 0;
1149 }
1150
1151 /* Compare two full_rtx_costs structures A and B, returning true
1152 if A < B when optimizing for speed. */
1153 static inline bool
1154 costs_lt_p (struct full_rtx_costs *a, struct full_rtx_costs *b,
1155 bool speed)
1156 {
1157 if (speed)
1158 return (a->speed < b->speed
1159 || (a->speed == b->speed && a->size < b->size));
1160 else
1161 return (a->size < b->size
1162 || (a->size == b->size && a->speed < b->speed));
1163 }
1164
1165 /* Increase both members of the full_rtx_costs structure C by the
1166 cost of N insns. */
1167 static inline void
1168 costs_add_n_insns (struct full_rtx_costs *c, int n)
1169 {
1170 c->speed += COSTS_N_INSNS (n);
1171 c->size += COSTS_N_INSNS (n);
1172 }
1173
1121 extern void init_rtlanal (void); 1174 extern void init_rtlanal (void);
1122 extern int rtx_cost (rtx, enum rtx_code, bool); 1175 extern int rtx_cost (rtx, enum rtx_code, bool);
1123 extern int address_cost (rtx, enum machine_mode, addr_space_t, bool); 1176 extern int address_cost (rtx, enum machine_mode, addr_space_t, bool);
1177 extern void get_full_rtx_cost (rtx, enum rtx_code, struct full_rtx_costs *);
1124 extern unsigned int subreg_lsb (const_rtx); 1178 extern unsigned int subreg_lsb (const_rtx);
1125 extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode, 1179 extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode,
1126 unsigned int); 1180 unsigned int);
1127 extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, 1181 extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode,
1128 unsigned int, enum machine_mode); 1182 unsigned int, enum machine_mode);
1222 (RTL_FLAG_CHECK1("MEM_SCALAR_P", (RTX), MEM)->return_val) 1276 (RTL_FLAG_CHECK1("MEM_SCALAR_P", (RTX), MEM)->return_val)
1223 1277
1224 /* 1 if RTX is a mem that cannot trap. */ 1278 /* 1 if RTX is a mem that cannot trap. */
1225 #define MEM_NOTRAP_P(RTX) \ 1279 #define MEM_NOTRAP_P(RTX) \
1226 (RTL_FLAG_CHECK1("MEM_NOTRAP_P", (RTX), MEM)->call) 1280 (RTL_FLAG_CHECK1("MEM_NOTRAP_P", (RTX), MEM)->call)
1227
1228 /* If VAL is nonzero, set MEM_IN_STRUCT_P and clear MEM_SCALAR_P in
1229 RTX. Otherwise, vice versa. Use this macro only when you are
1230 *sure* that you know that the MEM is in a structure, or is a
1231 scalar. VAL is evaluated only once. */
1232 #define MEM_SET_IN_STRUCT_P(RTX, VAL) \
1233 do { \
1234 if (VAL) \
1235 { \
1236 MEM_IN_STRUCT_P (RTX) = 1; \
1237 MEM_SCALAR_P (RTX) = 0; \
1238 } \
1239 else \
1240 { \
1241 MEM_IN_STRUCT_P (RTX) = 0; \
1242 MEM_SCALAR_P (RTX) = 1; \
1243 } \
1244 } while (0)
1245 1281
1246 /* The memory attribute block. We provide access macros for each value 1282 /* The memory attribute block. We provide access macros for each value
1247 in the block and provide defaults if none specified. */ 1283 in the block and provide defaults if none specified. */
1248 #define MEM_ATTRS(RTX) X0MEMATTR (RTX, 1) 1284 #define MEM_ATTRS(RTX) X0MEMATTR (RTX, 1)
1249 1285
1546 1582
1547 /* In expmed.c */ 1583 /* In expmed.c */
1548 extern int ceil_log2 (unsigned HOST_WIDE_INT); 1584 extern int ceil_log2 (unsigned HOST_WIDE_INT);
1549 1585
1550 /* In explow.c */ 1586 /* In explow.c */
1551 extern void set_stack_check_libfunc (rtx);
1552 extern HOST_WIDE_INT trunc_int_for_mode (HOST_WIDE_INT, enum machine_mode); 1587 extern HOST_WIDE_INT trunc_int_for_mode (HOST_WIDE_INT, enum machine_mode);
1553 extern rtx plus_constant (rtx, HOST_WIDE_INT); 1588 extern rtx plus_constant (rtx, HOST_WIDE_INT);
1554
1555 /* In emit-rtl.c */
1556 extern rtx gen_blockage (void);
1557 extern rtvec gen_rtvec (int, ...);
1558 extern rtx copy_insn_1 (rtx);
1559 extern rtx copy_insn (rtx);
1560 extern rtx gen_int_mode (HOST_WIDE_INT, enum machine_mode);
1561 extern rtx emit_copy_of_insn_after (rtx, rtx);
1562 extern void set_reg_attrs_from_value (rtx, rtx);
1563 extern void set_reg_attrs_for_parm (rtx, rtx);
1564 extern void set_reg_attrs_for_decl_rtl (tree t, rtx x);
1565 extern void adjust_reg_mode (rtx, enum machine_mode);
1566 extern int mem_expr_equal_p (const_tree, const_tree);
1567 1589
1568 /* In rtl.c */ 1590 /* In rtl.c */
1569 extern rtx rtx_alloc_stat (RTX_CODE MEM_STAT_DECL); 1591 extern rtx rtx_alloc_stat (RTX_CODE MEM_STAT_DECL);
1570 #define rtx_alloc(c) rtx_alloc_stat (c MEM_STAT_INFO) 1592 #define rtx_alloc(c) rtx_alloc_stat (c MEM_STAT_INFO)
1571 1593
1581 /* In rtl.c */ 1603 /* In rtl.c */
1582 extern unsigned int rtx_size (const_rtx); 1604 extern unsigned int rtx_size (const_rtx);
1583 extern rtx shallow_copy_rtx_stat (const_rtx MEM_STAT_DECL); 1605 extern rtx shallow_copy_rtx_stat (const_rtx MEM_STAT_DECL);
1584 #define shallow_copy_rtx(a) shallow_copy_rtx_stat (a MEM_STAT_INFO) 1606 #define shallow_copy_rtx(a) shallow_copy_rtx_stat (a MEM_STAT_INFO)
1585 extern int rtx_equal_p (const_rtx, const_rtx); 1607 extern int rtx_equal_p (const_rtx, const_rtx);
1608 extern hashval_t iterative_hash_rtx (const_rtx, hashval_t);
1586 1609
1587 /* In emit-rtl.c */ 1610 /* In emit-rtl.c */
1588 extern rtvec gen_rtvec_v (int, rtx *); 1611 extern rtvec gen_rtvec_v (int, rtx *);
1589 extern rtx gen_reg_rtx (enum machine_mode); 1612 extern rtx gen_reg_rtx (enum machine_mode);
1590 extern rtx gen_rtx_REG_offset (rtx, enum machine_mode, unsigned int, int); 1613 extern rtx gen_rtx_REG_offset (rtx, enum machine_mode, unsigned int, int);
1612 extern rtx make_safe_from (rtx, rtx); 1635 extern rtx make_safe_from (rtx, rtx);
1613 extern rtx convert_memory_address_addr_space (enum machine_mode, rtx, 1636 extern rtx convert_memory_address_addr_space (enum machine_mode, rtx,
1614 addr_space_t); 1637 addr_space_t);
1615 #define convert_memory_address(to_mode,x) \ 1638 #define convert_memory_address(to_mode,x) \
1616 convert_memory_address_addr_space ((to_mode), (x), ADDR_SPACE_GENERIC) 1639 convert_memory_address_addr_space ((to_mode), (x), ADDR_SPACE_GENERIC)
1617 extern rtx get_insns (void);
1618 extern const char *get_insn_name (int); 1640 extern const char *get_insn_name (int);
1619 extern rtx get_last_insn (void);
1620 extern rtx get_last_insn_anywhere (void); 1641 extern rtx get_last_insn_anywhere (void);
1621 extern rtx get_first_nonnote_insn (void); 1642 extern rtx get_first_nonnote_insn (void);
1622 extern rtx get_last_nonnote_insn (void); 1643 extern rtx get_last_nonnote_insn (void);
1623 extern void start_sequence (void); 1644 extern void start_sequence (void);
1624 extern void push_to_sequence (rtx); 1645 extern void push_to_sequence (rtx);
1644 extern enum machine_mode get_pool_mode (const_rtx); 1665 extern enum machine_mode get_pool_mode (const_rtx);
1645 extern rtx simplify_subtraction (rtx); 1666 extern rtx simplify_subtraction (rtx);
1646 1667
1647 /* In function.c */ 1668 /* In function.c */
1648 extern rtx assign_stack_local (enum machine_mode, HOST_WIDE_INT, int); 1669 extern rtx assign_stack_local (enum machine_mode, HOST_WIDE_INT, int);
1649 extern rtx assign_stack_local_1 (enum machine_mode, HOST_WIDE_INT, int, bool); 1670 #define ASLK_REDUCE_ALIGN 1
1671 #define ASLK_RECORD_PAD 2
1672 extern rtx assign_stack_local_1 (enum machine_mode, HOST_WIDE_INT, int, int);
1650 extern rtx assign_stack_temp (enum machine_mode, HOST_WIDE_INT, int); 1673 extern rtx assign_stack_temp (enum machine_mode, HOST_WIDE_INT, int);
1651 extern rtx assign_stack_temp_for_type (enum machine_mode, 1674 extern rtx assign_stack_temp_for_type (enum machine_mode,
1652 HOST_WIDE_INT, int, tree); 1675 HOST_WIDE_INT, int, tree);
1653 extern rtx assign_temp (tree, int, int, int); 1676 extern rtx assign_temp (tree, int, int, int);
1654 1677
1706 extern rtx prev_nonnote_insn_bb (rtx); 1729 extern rtx prev_nonnote_insn_bb (rtx);
1707 extern rtx next_nonnote_insn (rtx); 1730 extern rtx next_nonnote_insn (rtx);
1708 extern rtx next_nonnote_insn_bb (rtx); 1731 extern rtx next_nonnote_insn_bb (rtx);
1709 extern rtx prev_nondebug_insn (rtx); 1732 extern rtx prev_nondebug_insn (rtx);
1710 extern rtx next_nondebug_insn (rtx); 1733 extern rtx next_nondebug_insn (rtx);
1734 extern rtx prev_nonnote_nondebug_insn (rtx);
1735 extern rtx next_nonnote_nondebug_insn (rtx);
1711 extern rtx prev_real_insn (rtx); 1736 extern rtx prev_real_insn (rtx);
1712 extern rtx next_real_insn (rtx); 1737 extern rtx next_real_insn (rtx);
1713 extern rtx prev_active_insn (rtx); 1738 extern rtx prev_active_insn (rtx);
1714 extern rtx next_active_insn (rtx); 1739 extern rtx next_active_insn (rtx);
1715 extern int active_insn_p (const_rtx); 1740 extern int active_insn_p (const_rtx);
1849 extern int find_regno_fusage (const_rtx, enum rtx_code, unsigned int); 1874 extern int find_regno_fusage (const_rtx, enum rtx_code, unsigned int);
1850 extern rtx alloc_reg_note (enum reg_note, rtx, rtx); 1875 extern rtx alloc_reg_note (enum reg_note, rtx, rtx);
1851 extern void add_reg_note (rtx, enum reg_note, rtx); 1876 extern void add_reg_note (rtx, enum reg_note, rtx);
1852 extern void remove_note (rtx, const_rtx); 1877 extern void remove_note (rtx, const_rtx);
1853 extern void remove_reg_equal_equiv_notes (rtx); 1878 extern void remove_reg_equal_equiv_notes (rtx);
1879 extern void remove_reg_equal_equiv_notes_for_regno (unsigned int);
1854 extern int side_effects_p (const_rtx); 1880 extern int side_effects_p (const_rtx);
1855 extern int volatile_refs_p (const_rtx); 1881 extern int volatile_refs_p (const_rtx);
1856 extern int volatile_insn_p (const_rtx); 1882 extern int volatile_insn_p (const_rtx);
1857 extern int may_trap_p_1 (const_rtx, unsigned); 1883 extern int may_trap_p_1 (const_rtx, unsigned);
1858 extern int may_trap_p (const_rtx); 1884 extern int may_trap_p (const_rtx);
1872 extern int computed_jump_p (const_rtx); 1898 extern int computed_jump_p (const_rtx);
1873 1899
1874 typedef int (*rtx_function) (rtx *, void *); 1900 typedef int (*rtx_function) (rtx *, void *);
1875 extern int for_each_rtx (rtx *, rtx_function, void *); 1901 extern int for_each_rtx (rtx *, rtx_function, void *);
1876 1902
1903 /* Callback for for_each_inc_dec, to process the autoinc operation OP
1904 within MEM that sets DEST to SRC + SRCOFF, or SRC if SRCOFF is
1905 NULL. The callback is passed the same opaque ARG passed to
1906 for_each_inc_dec. Return zero to continue looking for other
1907 autoinc operations, -1 to skip OP's operands, and any other value
1908 to interrupt the traversal and return that value to the caller of
1909 for_each_inc_dec. */
1910 typedef int (*for_each_inc_dec_fn) (rtx mem, rtx op, rtx dest, rtx src,
1911 rtx srcoff, void *arg);
1912 extern int for_each_inc_dec (rtx *, for_each_inc_dec_fn, void *arg);
1913
1877 typedef int (*rtx_equal_p_callback_function) (const_rtx *, const_rtx *, 1914 typedef int (*rtx_equal_p_callback_function) (const_rtx *, const_rtx *,
1878 rtx *, rtx *); 1915 rtx *, rtx *);
1879 extern int rtx_equal_p_cb (const_rtx, const_rtx, 1916 extern int rtx_equal_p_cb (const_rtx, const_rtx,
1880 rtx_equal_p_callback_function); 1917 rtx_equal_p_callback_function);
1881 1918
1985 that cannot be determined until after register allocation. We can assume 2022 that cannot be determined until after register allocation. We can assume
1986 that in this case ELIMINABLE_REGS will be defined, one action of which 2023 that in this case ELIMINABLE_REGS will be defined, one action of which
1987 will be to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM. */ 2024 will be to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM. */
1988 #ifndef HARD_FRAME_POINTER_REGNUM 2025 #ifndef HARD_FRAME_POINTER_REGNUM
1989 #define HARD_FRAME_POINTER_REGNUM FRAME_POINTER_REGNUM 2026 #define HARD_FRAME_POINTER_REGNUM FRAME_POINTER_REGNUM
2027 #endif
2028
2029 #ifndef HARD_FRAME_POINTER_IS_FRAME_POINTER
2030 #define HARD_FRAME_POINTER_IS_FRAME_POINTER \
2031 (HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM)
2032 #endif
2033
2034 #ifndef HARD_FRAME_POINTER_IS_ARG_POINTER
2035 #define HARD_FRAME_POINTER_IS_ARG_POINTER \
2036 (HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM)
1990 #endif 2037 #endif
1991 2038
1992 /* Index labels for global_rtl. */ 2039 /* Index labels for global_rtl. */
1993 enum global_rtl_index 2040 enum global_rtl_index
1994 { 2041 {
2000 frame_pointer_rtx, and arg_pointer_rtx must be the same if they refer to 2047 frame_pointer_rtx, and arg_pointer_rtx must be the same if they refer to
2001 the same register. */ 2048 the same register. */
2002 #if FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM 2049 #if FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM
2003 GR_ARG_POINTER = GR_FRAME_POINTER, 2050 GR_ARG_POINTER = GR_FRAME_POINTER,
2004 #endif 2051 #endif
2005 #if HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM 2052 #if HARD_FRAME_POINTER_IS_FRAME_POINTER
2006 GR_HARD_FRAME_POINTER = GR_FRAME_POINTER, 2053 GR_HARD_FRAME_POINTER = GR_FRAME_POINTER,
2007 #else 2054 #else
2008 GR_HARD_FRAME_POINTER, 2055 GR_HARD_FRAME_POINTER,
2009 #endif 2056 #endif
2010 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM 2057 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
2011 #if HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM 2058 #if HARD_FRAME_POINTER_IS_ARG_POINTER
2012 GR_ARG_POINTER = GR_HARD_FRAME_POINTER, 2059 GR_ARG_POINTER = GR_HARD_FRAME_POINTER,
2013 #else 2060 #else
2014 GR_ARG_POINTER, 2061 GR_ARG_POINTER,
2015 #endif 2062 #endif
2016 #endif 2063 #endif
2017 GR_VIRTUAL_INCOMING_ARGS, 2064 GR_VIRTUAL_INCOMING_ARGS,
2018 GR_VIRTUAL_STACK_ARGS, 2065 GR_VIRTUAL_STACK_ARGS,
2019 GR_VIRTUAL_STACK_DYNAMIC, 2066 GR_VIRTUAL_STACK_DYNAMIC,
2020 GR_VIRTUAL_OUTGOING_ARGS, 2067 GR_VIRTUAL_OUTGOING_ARGS,
2021 GR_VIRTUAL_CFA, 2068 GR_VIRTUAL_CFA,
2069 GR_VIRTUAL_PREFERRED_STACK_BOUNDARY,
2022 2070
2023 GR_MAX 2071 GR_MAX
2024 }; 2072 };
2025 2073
2026 /* Pointers to standard pieces of rtx are stored here. */ 2074 /* Target-dependent globals. */
2027 extern GTY(()) rtx global_rtl[GR_MAX]; 2075 struct GTY(()) target_rtl {
2076 /* All references to the hard registers in global_rtl_index go through
2077 these unique rtl objects. On machines where the frame-pointer and
2078 arg-pointer are the same register, they use the same unique object.
2079
2080 After register allocation, other rtl objects which used to be pseudo-regs
2081 may be clobbered to refer to the frame-pointer register.
2082 But references that were originally to the frame-pointer can be
2083 distinguished from the others because they contain frame_pointer_rtx.
2084
2085 When to use frame_pointer_rtx and hard_frame_pointer_rtx is a little
2086 tricky: until register elimination has taken place hard_frame_pointer_rtx
2087 should be used if it is being set, and frame_pointer_rtx otherwise. After
2088 register elimination hard_frame_pointer_rtx should always be used.
2089 On machines where the two registers are same (most) then these are the
2090 same. */
2091 rtx x_global_rtl[GR_MAX];
2092
2093 /* A unique representation of (REG:Pmode PIC_OFFSET_TABLE_REGNUM). */
2094 rtx x_pic_offset_table_rtx;
2095
2096 /* A unique representation of (REG:Pmode RETURN_ADDRESS_POINTER_REGNUM).
2097 This is used to implement __builtin_return_address for some machines;
2098 see for instance the MIPS port. */
2099 rtx x_return_address_pointer_rtx;
2100
2101 /* Commonly used RTL for hard registers. These objects are not
2102 necessarily unique, so we allocate them separately from global_rtl.
2103 They are initialized once per compilation unit, then copied into
2104 regno_reg_rtx at the beginning of each function. */
2105 rtx x_initial_regno_reg_rtx[FIRST_PSEUDO_REGISTER];
2106
2107 /* A sample (mem:M stack_pointer_rtx) rtx for each mode M. */
2108 rtx x_top_of_stack[MAX_MACHINE_MODE];
2109
2110 /* Static hunks of RTL used by the aliasing code; these are treated
2111 as persistent to avoid unnecessary RTL allocations. */
2112 rtx x_static_reg_base_value[FIRST_PSEUDO_REGISTER];
2113 };
2114
2115 extern GTY(()) struct target_rtl default_target_rtl;
2116 #if SWITCHABLE_TARGET
2117 extern struct target_rtl *this_target_rtl;
2118 #else
2119 #define this_target_rtl (&default_target_rtl)
2120 #endif
2121
2122 #define global_rtl \
2123 (this_target_rtl->x_global_rtl)
2124 #define pic_offset_table_rtx \
2125 (this_target_rtl->x_pic_offset_table_rtx)
2126 #define return_address_pointer_rtx \
2127 (this_target_rtl->x_return_address_pointer_rtx)
2128 #define top_of_stack \
2129 (this_target_rtl->x_top_of_stack)
2028 2130
2029 /* Standard pieces of rtx, to be substituted directly into things. */ 2131 /* Standard pieces of rtx, to be substituted directly into things. */
2030 #define pc_rtx (global_rtl[GR_PC]) 2132 #define pc_rtx (global_rtl[GR_PC])
2031 #define cc0_rtx (global_rtl[GR_CC0]) 2133 #define cc0_rtx (global_rtl[GR_CC0])
2032 2134
2036 #define stack_pointer_rtx (global_rtl[GR_STACK_POINTER]) 2138 #define stack_pointer_rtx (global_rtl[GR_STACK_POINTER])
2037 #define frame_pointer_rtx (global_rtl[GR_FRAME_POINTER]) 2139 #define frame_pointer_rtx (global_rtl[GR_FRAME_POINTER])
2038 #define hard_frame_pointer_rtx (global_rtl[GR_HARD_FRAME_POINTER]) 2140 #define hard_frame_pointer_rtx (global_rtl[GR_HARD_FRAME_POINTER])
2039 #define arg_pointer_rtx (global_rtl[GR_ARG_POINTER]) 2141 #define arg_pointer_rtx (global_rtl[GR_ARG_POINTER])
2040 2142
2041 extern GTY(()) rtx pic_offset_table_rtx;
2042 extern GTY(()) rtx return_address_pointer_rtx;
2043
2044 /* Include the RTL generation functions. */ 2143 /* Include the RTL generation functions. */
2045 2144
2046 #ifndef GENERATOR_FILE 2145 #ifndef GENERATOR_FILE
2047 #include "genrtl.h" 2146 #include "genrtl.h"
2048 #undef gen_rtx_ASM_INPUT 2147 #undef gen_rtx_ASM_INPUT
2113 2212
2114 #define virtual_cfa_rtx (global_rtl[GR_VIRTUAL_CFA]) 2213 #define virtual_cfa_rtx (global_rtl[GR_VIRTUAL_CFA])
2115 2214
2116 #define VIRTUAL_CFA_REGNUM ((FIRST_VIRTUAL_REGISTER) + 4) 2215 #define VIRTUAL_CFA_REGNUM ((FIRST_VIRTUAL_REGISTER) + 4)
2117 2216
2118 #define LAST_VIRTUAL_REGISTER ((FIRST_VIRTUAL_REGISTER) + 4) 2217 #define LAST_VIRTUAL_POINTER_REGISTER ((FIRST_VIRTUAL_REGISTER) + 4)
2218
2219 /* This is replaced by crtl->preferred_stack_boundary / BITS_PER_UNIT
2220 when finalized. */
2221
2222 #define virtual_preferred_stack_boundary_rtx \
2223 (global_rtl[GR_VIRTUAL_PREFERRED_STACK_BOUNDARY])
2224
2225 #define VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM \
2226 ((FIRST_VIRTUAL_REGISTER) + 5)
2227
2228 #define LAST_VIRTUAL_REGISTER ((FIRST_VIRTUAL_REGISTER) + 5)
2119 2229
2120 /* Nonzero if REGNUM is a pointer into the stack frame. */ 2230 /* Nonzero if REGNUM is a pointer into the stack frame. */
2121 #define REGNO_PTR_FRAME_P(REGNUM) \ 2231 #define REGNO_PTR_FRAME_P(REGNUM) \
2122 ((REGNUM) == STACK_POINTER_REGNUM \ 2232 ((REGNUM) == STACK_POINTER_REGNUM \
2123 || (REGNUM) == FRAME_POINTER_REGNUM \ 2233 || (REGNUM) == FRAME_POINTER_REGNUM \
2124 || (REGNUM) == HARD_FRAME_POINTER_REGNUM \ 2234 || (REGNUM) == HARD_FRAME_POINTER_REGNUM \
2125 || (REGNUM) == ARG_POINTER_REGNUM \ 2235 || (REGNUM) == ARG_POINTER_REGNUM \
2126 || ((REGNUM) >= FIRST_VIRTUAL_REGISTER \ 2236 || ((REGNUM) >= FIRST_VIRTUAL_REGISTER \
2127 && (REGNUM) <= LAST_VIRTUAL_REGISTER)) 2237 && (REGNUM) <= LAST_VIRTUAL_POINTER_REGISTER))
2128 2238
2129 /* REGNUM never really appearing in the INSN stream. */ 2239 /* REGNUM never really appearing in the INSN stream. */
2130 #define INVALID_REGNUM (~(unsigned int) 0) 2240 #define INVALID_REGNUM (~(unsigned int) 0)
2131 2241
2132 extern rtx output_constant_def (tree, int); 2242 extern rtx output_constant_def (tree, int);
2173 /* In cse.c */ 2283 /* In cse.c */
2174 extern int delete_trivially_dead_insns (rtx, int); 2284 extern int delete_trivially_dead_insns (rtx, int);
2175 extern int cse_main (rtx, int); 2285 extern int cse_main (rtx, int);
2176 extern int exp_equiv_p (const_rtx, const_rtx, int, bool); 2286 extern int exp_equiv_p (const_rtx, const_rtx, int, bool);
2177 extern unsigned hash_rtx (const_rtx x, enum machine_mode, int *, int *, bool); 2287 extern unsigned hash_rtx (const_rtx x, enum machine_mode, int *, int *, bool);
2288
2289 /* In dse.c */
2290 extern void check_for_inc_dec (rtx insn);
2178 2291
2179 /* In jump.c */ 2292 /* In jump.c */
2180 extern int comparison_dominates_p (enum rtx_code, enum rtx_code); 2293 extern int comparison_dominates_p (enum rtx_code, enum rtx_code);
2181 extern int condjump_p (const_rtx); 2294 extern int condjump_p (const_rtx);
2182 extern int any_condjump_p (const_rtx); 2295 extern int any_condjump_p (const_rtx);
2215 extern void mark_user_reg (rtx); 2328 extern void mark_user_reg (rtx);
2216 extern void reset_used_flags (rtx); 2329 extern void reset_used_flags (rtx);
2217 extern void set_used_flags (rtx); 2330 extern void set_used_flags (rtx);
2218 extern void reorder_insns (rtx, rtx, rtx); 2331 extern void reorder_insns (rtx, rtx, rtx);
2219 extern void reorder_insns_nobb (rtx, rtx, rtx); 2332 extern void reorder_insns_nobb (rtx, rtx, rtx);
2220 extern int get_max_uid (void);
2221 extern int get_max_insn_count (void); 2333 extern int get_max_insn_count (void);
2222 extern int in_sequence_p (void); 2334 extern int in_sequence_p (void);
2223 extern void force_next_line_note (void); 2335 extern void force_next_line_note (void);
2224 extern void init_emit (void); 2336 extern void init_emit (void);
2225 extern void init_emit_regs (void); 2337 extern void init_emit_regs (void);
2229 extern void set_new_first_and_last_insn (rtx, rtx); 2341 extern void set_new_first_and_last_insn (rtx, rtx);
2230 extern unsigned int unshare_all_rtl (void); 2342 extern unsigned int unshare_all_rtl (void);
2231 extern void unshare_all_rtl_again (rtx); 2343 extern void unshare_all_rtl_again (rtx);
2232 extern void unshare_all_rtl_in_chain (rtx); 2344 extern void unshare_all_rtl_in_chain (rtx);
2233 extern void verify_rtl_sharing (void); 2345 extern void verify_rtl_sharing (void);
2234 extern void set_first_insn (rtx);
2235 extern void set_last_insn (rtx);
2236 extern void link_cc0_insns (rtx); 2346 extern void link_cc0_insns (rtx);
2237 extern void add_insn (rtx); 2347 extern void add_insn (rtx);
2238 extern void add_insn_before (rtx, rtx, struct basic_block_def *); 2348 extern void add_insn_before (rtx, rtx, struct basic_block_def *);
2239 extern void add_insn_after (rtx, rtx, struct basic_block_def *); 2349 extern void add_insn_after (rtx, rtx, struct basic_block_def *);
2240 extern void remove_insn (rtx); 2350 extern void remove_insn (rtx);
2273 extern void schedule_insns (void); 2383 extern void schedule_insns (void);
2274 2384
2275 /* In sched-ebb.c. */ 2385 /* In sched-ebb.c. */
2276 extern void schedule_ebbs (void); 2386 extern void schedule_ebbs (void);
2277 2387
2278 /* In haifa-sched.c. */
2279 extern void fix_sched_param (const char *, const char *);
2280
2281 /* In sel-sched-dump.c. */ 2388 /* In sel-sched-dump.c. */
2282 extern void sel_sched_fix_param (const char *param, const char *val); 2389 extern void sel_sched_fix_param (const char *param, const char *val);
2283 2390
2284 /* In print-rtl.c */ 2391 /* In print-rtl.c */
2285 extern const char *print_rtx_head; 2392 extern const char *print_rtx_head;
2297 extern void reposition_prologue_and_epilogue_notes (void); 2404 extern void reposition_prologue_and_epilogue_notes (void);
2298 extern int prologue_epilogue_contains (const_rtx); 2405 extern int prologue_epilogue_contains (const_rtx);
2299 extern int sibcall_epilogue_contains (const_rtx); 2406 extern int sibcall_epilogue_contains (const_rtx);
2300 extern void mark_temp_addr_taken (rtx); 2407 extern void mark_temp_addr_taken (rtx);
2301 extern void update_temp_slot_address (rtx, rtx); 2408 extern void update_temp_slot_address (rtx, rtx);
2302 extern void maybe_copy_epilogue_insn (rtx, rtx); 2409 extern void maybe_copy_prologue_epilogue_insn (rtx, rtx);
2303 2410
2304 /* In stmt.c */ 2411 /* In stmt.c */
2305 extern void expand_null_return (void); 2412 extern void expand_null_return (void);
2306 extern void expand_naked_return (void); 2413 extern void expand_naked_return (void);
2307 extern void emit_jump (rtx); 2414 extern void emit_jump (rtx);
2332 extern HARD_REG_SET eliminable_regset; 2439 extern HARD_REG_SET eliminable_regset;
2333 #endif 2440 #endif
2334 extern void mark_elimination (int, int); 2441 extern void mark_elimination (int, int);
2335 2442
2336 /* In reginfo.c */ 2443 /* In reginfo.c */
2337 extern int reg_classes_intersect_p (enum reg_class, enum reg_class); 2444 extern int reg_classes_intersect_p (reg_class_t, reg_class_t);
2338 extern int reg_class_subset_p (enum reg_class, enum reg_class); 2445 extern int reg_class_subset_p (reg_class_t, reg_class_t);
2339 extern void globalize_reg (int); 2446 extern void globalize_reg (int);
2340 extern void init_reg_modes_target (void); 2447 extern void init_reg_modes_target (void);
2341 extern void init_regs (void); 2448 extern void init_regs (void);
2342 extern void reinit_regs (void); 2449 extern void reinit_regs (void);
2343 extern void init_fake_stack_mems (void); 2450 extern void init_fake_stack_mems (void);
2344 extern void save_register_info (void); 2451 extern void save_register_info (void);
2345 extern void init_reg_sets (void); 2452 extern void init_reg_sets (void);
2346 extern void regclass (rtx, int); 2453 extern void regclass (rtx, int);
2347 extern void reg_scan (rtx, unsigned int); 2454 extern void reg_scan (rtx, unsigned int);
2348 extern void fix_register (const char *, int, int); 2455 extern void fix_register (const char *, int, int);
2349 extern bool invalid_mode_change_p (unsigned int, enum reg_class, 2456 extern bool invalid_mode_change_p (unsigned int, enum reg_class);
2350 enum machine_mode);
2351 2457
2352 /* In reorg.c */ 2458 /* In reorg.c */
2353 extern void dbr_schedule (rtx); 2459 extern void dbr_schedule (rtx);
2354 2460
2355 /* In reload1.c */ 2461 /* In reload1.c */
2371 extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, 2477 extern rtx emit_library_call_value (rtx, rtx, enum libcall_type,
2372 enum machine_mode, int, ...); 2478 enum machine_mode, int, ...);
2373 2479
2374 /* In varasm.c */ 2480 /* In varasm.c */
2375 extern void init_varasm_once (void); 2481 extern void init_varasm_once (void);
2376 extern enum tls_model decl_default_tls_model (const_tree);
2377 2482
2378 extern rtx make_debug_expr_from_rtl (const_rtx); 2483 extern rtx make_debug_expr_from_rtl (const_rtx);
2379 2484
2380 /* In rtl.c */
2381 extern void traverse_md_constants (int (*) (void **, void *), void *);
2382 struct md_constant { char *name, *value; };
2383
2384 /* In read-rtl.c */ 2485 /* In read-rtl.c */
2385 extern int read_skip_spaces (FILE *); 2486 extern bool read_rtx (const char *, rtx *);
2386 extern bool read_rtx (FILE *, rtx *, int *);
2387 extern void copy_rtx_ptr_loc (const void *, const void *);
2388 extern void print_rtx_ptr_loc (const void *);
2389 extern const char *join_c_conditions (const char *, const char *);
2390 extern void print_c_condition (const char *);
2391 extern const char *read_rtx_filename;
2392 extern int read_rtx_lineno;
2393 2487
2394 /* In alias.c */ 2488 /* In alias.c */
2395 extern rtx canon_rtx (rtx); 2489 extern rtx canon_rtx (rtx);
2396 extern int true_dependence (const_rtx, enum machine_mode, const_rtx, bool (*)(const_rtx, bool)); 2490 extern int true_dependence (const_rtx, enum machine_mode, const_rtx, bool (*)(const_rtx, bool));
2397 extern rtx get_addr (rtx); 2491 extern rtx get_addr (rtx);
2398 extern int canon_true_dependence (const_rtx, enum machine_mode, rtx, const_rtx, 2492 extern int canon_true_dependence (const_rtx, enum machine_mode, rtx, const_rtx,
2399 rtx, bool (*)(const_rtx, bool)); 2493 rtx, bool (*)(const_rtx, bool));
2400 extern int read_dependence (const_rtx, const_rtx); 2494 extern int read_dependence (const_rtx, const_rtx);
2401 extern int anti_dependence (const_rtx, const_rtx); 2495 extern int anti_dependence (const_rtx, const_rtx);
2402 extern int output_dependence (const_rtx, const_rtx); 2496 extern int output_dependence (const_rtx, const_rtx);
2497 extern int may_alias_p (const_rtx, const_rtx);
2403 extern void init_alias_target (void); 2498 extern void init_alias_target (void);
2404 extern void init_alias_analysis (void); 2499 extern void init_alias_analysis (void);
2405 extern void end_alias_analysis (void); 2500 extern void end_alias_analysis (void);
2501 extern void vt_equate_reg_base_value (const_rtx, const_rtx);
2406 extern bool memory_modified_in_insn_p (const_rtx, const_rtx); 2502 extern bool memory_modified_in_insn_p (const_rtx, const_rtx);
2407 extern rtx find_base_term (rtx); 2503 extern rtx find_base_term (rtx);
2408 extern rtx gen_hard_reg_clobber (enum machine_mode, unsigned int); 2504 extern rtx gen_hard_reg_clobber (enum machine_mode, unsigned int);
2409 extern rtx get_reg_known_value (unsigned int); 2505 extern rtx get_reg_known_value (unsigned int);
2410 extern bool get_reg_known_equiv_p (unsigned int); 2506 extern bool get_reg_known_equiv_p (unsigned int);
2507 extern rtx get_reg_base_value (unsigned int);
2411 2508
2412 #ifdef STACK_REGS 2509 #ifdef STACK_REGS
2413 extern int stack_regs_mentioned (const_rtx insn); 2510 extern int stack_regs_mentioned (const_rtx insn);
2414 #endif 2511 #endif
2415 2512
2470 extern tree get_curr_insn_block (void); 2567 extern tree get_curr_insn_block (void);
2471 extern int curr_insn_locator (void); 2568 extern int curr_insn_locator (void);
2472 extern bool optimize_insn_for_size_p (void); 2569 extern bool optimize_insn_for_size_p (void);
2473 extern bool optimize_insn_for_speed_p (void); 2570 extern bool optimize_insn_for_speed_p (void);
2474 2571
2572 /* rtl-error.c */
2573 extern void _fatal_insn_not_found (const_rtx, const char *, int, const char *)
2574 ATTRIBUTE_NORETURN;
2575 extern void _fatal_insn (const char *, const_rtx, const char *, int, const char *)
2576 ATTRIBUTE_NORETURN;
2577
2578 #define fatal_insn(msgid, insn) \
2579 _fatal_insn (msgid, insn, __FILE__, __LINE__, __FUNCTION__)
2580 #define fatal_insn_not_found(insn) \
2581 _fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__)
2582
2583
2584
2475 #endif /* ! GCC_RTL_H */ 2585 #endif /* ! GCC_RTL_H */