diff options
author | Jan Hubicka <jh@suse.cz> | 2002-06-02 23:09:54 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-06-02 21:09:54 +0000 |
commit | ba4f7968b5abe75ba6c20eaa0de6fc88806deaef (patch) | |
tree | cefa93bd4b55c17cc93db52e0412035b33082f45 /gcc/rtl.h | |
parent | 537fc532be12254466f5d19fbaf40dc5016d6f81 (diff) | |
download | gcc-ba4f7968b5abe75ba6c20eaa0de6fc88806deaef.zip gcc-ba4f7968b5abe75ba6c20eaa0de6fc88806deaef.tar.gz gcc-ba4f7968b5abe75ba6c20eaa0de6fc88806deaef.tar.bz2 |
loop.c (emit_prefetch_instructions): Properly place the address computation.
* loop.c (emit_prefetch_instructions): Properly place the address computation.
* basic-block.h (basic_block_for_insn, BLOCK_FOR_INSN): Kill.
(set_block_for_insn): Turn into macro.
* cfgbuild.c (find_basic_block): Do not clear basic_block_for_insn.
* cfglayout.c (insn_scopes): Kill.
(scope_to_insns_initialize): Do not use insn_scopes.
(scope_to_insns_finalize): Likewise.
(duplicate_insn_chain): Likewise.
(cfg_layout_initialize, cfg_layout_finalize): Do not turn scopes to notes.
* cfgrtl.c (basic_block_for_insn): Kill.
(delete_insn_and_edges, delete_insn_chain_and_edges): Simplify.
(create_basic_block_structure): Use reorder_insns.
(compute_bb_for_insn): Do not use basic_block_for_insn.
(merge_blocks_nomove): Likewise.
(update_bb_for_insn): Likewise.
(verify_flow_info): Likewise.
(set_block_for_insn): Kill.
* combine.c (try_combine): Update gen_rtx_INSN call.
* emit-rtl.c (gen_label_rtx): Update gen_rtx_CODE_LABEL call.
(mark_insn_raw, make_jump_insn_raw, make_call_insn_raw): Clear
scopes and BBs.
(add_insn_after, add_insn_before, remove_insn, reorder_insns): Simplify.
(emit_note_before, emit_note_after, emit_line_note_after, emit_note):
Clear BB.
(emit_insns_after): Simplify.
(emit_copy_of_insn_after): Copy scope.
* final.c (final_start_function): Lower scopes.
* flow.c (check_function_return_warnings): Do not rely on deleted insn.
* integrate.c (copy_insn_list): Cope scopes.
* jump.c (duplicate_loop_exit_test): LIkewise; simplify.
* loop.c (loop_optimize): Do not care block notes.
* print-rtl.c (print_rtx): Print BB.
* recog.c (apply_change_group): Simplify.
* rtl.c (copy_rtx): Handle 'B'.
* rtl.def (INSN, CALL_INSN, JUMP_INSN, NOTE): Add extra fields.
* rtl.h (Field accessors): Update indexes.
* sched-ebb.c (schedule_ebbs): Do not lower notes.
* sched-rgn.c (schedule_insns): Likewise.
* toplev.c (rest_of_compilation): Lower notes.
* unroll.c (unroll_loop): Do not care scoping notes.
(copy_loop_body): Copy scopes.
From-SVN: r54188
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r-- | gcc/rtl.h | 46 |
1 files changed, 24 insertions, 22 deletions
@@ -506,19 +506,21 @@ do { \ #define PREV_INSN(INSN) XEXP (INSN, 1) #define NEXT_INSN(INSN) XEXP (INSN, 2) +#define BLOCK_FOR_INSN(INSN) XBBDEF (INSN, 3) +#define INSN_SCOPE(INSN) XTREE (INSN, 4) /* The body of an insn. */ -#define PATTERN(INSN) XEXP (INSN, 3) +#define PATTERN(INSN) XEXP (INSN, 5) /* Code number of instruction, from when it was recognized. -1 means this instruction has not been recognized yet. */ -#define INSN_CODE(INSN) XINT (INSN, 4) +#define INSN_CODE(INSN) XINT (INSN, 6) /* Set up in flow.c; empty before then. Holds a chain of INSN_LIST rtx's whose first operands point at previous insns with direct data-flow connections to this one. That means that those insns set variables whose next use is in this insn. They are always in the same basic block as this insn. */ -#define LOG_LINKS(INSN) XEXP(INSN, 5) +#define LOG_LINKS(INSN) XEXP(INSN, 7) #define RTX_INTEGRATED_P(RTX) \ (RTL_FLAG_CHECK8("RTX_INTEGRATED_P", (RTX), INSN, CALL_INSN, \ @@ -570,7 +572,7 @@ do { \ The mode field of the EXPR_LIST contains not a real machine mode but a value from enum reg_note. */ -#define REG_NOTES(INSN) XEXP(INSN, 6) +#define REG_NOTES(INSN) XEXP(INSN, 8) /* Don't forget to change reg_note_name in rtl.c. */ enum reg_note @@ -739,12 +741,12 @@ extern const char * const reg_note_name[]; CLOBBER expressions document the registers explicitly clobbered by this CALL_INSN. Pseudo registers can not be mentioned in this list. */ -#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 7) +#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 9) /* The label-number of a code-label. The assembler label is made from `L' and the label-number printed in decimal. Label numbers are unique in a compilation. */ -#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 5) +#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 6) #define LINE_NUMBER NOTE @@ -755,18 +757,18 @@ extern const char * const reg_note_name[]; The NOTE_INSN_RANGE_{START,END} and NOTE_INSN_LIVE notes record their information as an rtx in the field. */ -#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 3, NOTE) -#define NOTE_BLOCK(INSN) XCTREE (INSN, 3, NOTE) -#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 3, NOTE) -#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 3, NOTE) -#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 3, NOTE) -#define NOTE_PREDICTION(INSN) XCINT (INSN, 3, NOTE) +#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 4, NOTE) +#define NOTE_BLOCK(INSN) XCTREE (INSN, 4, NOTE) +#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 4, NOTE) +#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 4, NOTE) +#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 4, NOTE) +#define NOTE_PREDICTION(INSN) XCINT (INSN, 4, NOTE) /* In a NOTE that is a line number, this is the line number. Other kinds of NOTEs are identified by negative numbers here. */ -#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 4, NOTE) +#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 5, NOTE) /* Nonzero if INSN is a note marking the beginning of a basic block. */ #define NOTE_INSN_BASIC_BLOCK_P(INSN) \ @@ -774,8 +776,8 @@ extern const char * const reg_note_name[]; && NOTE_LINE_NUMBER (INSN) == NOTE_INSN_BASIC_BLOCK) /* Algorithm and flags for prediction. */ -#define NOTE_PREDICTION_ALG(INSN) (XCINT(INSN, 3, NOTE)>>8) -#define NOTE_PREDICTION_FLAGS(INSN) (XCINT(INSN, 3, NOTE)&0xff) +#define NOTE_PREDICTION_ALG(INSN) (XCINT(INSN, 4, NOTE)>>8) +#define NOTE_PREDICTION_FLAGS(INSN) (XCINT(INSN, 4, NOTE)&0xff) #define NOTE_PREDICT(ALG,FLAGS) ((ALG<<8)+(FLAGS)) /* Codes that appear in the NOTE_LINE_NUMBER field @@ -880,14 +882,14 @@ extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; /* The name of a label, in case it corresponds to an explicit label in the input source code. */ -#define LABEL_NAME(RTX) XCSTR (RTX, 6, CODE_LABEL) +#define LABEL_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL) /* In jump.c, each label contains a count of the number of LABEL_REFs that point at it, so unused labels can be deleted. */ -#define LABEL_NUSES(RTX) XCINT (RTX, 3, CODE_LABEL) +#define LABEL_NUSES(RTX) XCINT (RTX, 4, CODE_LABEL) /* Associate a name with a CODE_LABEL. */ -#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL) +#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 8, CODE_LABEL) /* The original regno this ADDRESSOF was built for. */ #define ADDRESSOF_REGNO(RTX) XCUINT (RTX, 1, ADDRESSOF) @@ -898,13 +900,13 @@ extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; /* In jump.c, each JUMP_INSN can point to a label that it can jump to, so that if the JUMP_INSN is deleted, the label's LABEL_NUSES can be decremented and possibly the label can be deleted. */ -#define JUMP_LABEL(INSN) XCEXP (INSN, 7, JUMP_INSN) +#define JUMP_LABEL(INSN) XCEXP (INSN, 9, JUMP_INSN) /* Once basic blocks are found in flow.c, each CODE_LABEL starts a chain that goes through all the LABEL_REFs that jump to that label. The chain eventually winds up at the CODE_LABEL: it is circular. */ -#define LABEL_REFS(LABEL) XCEXP (LABEL, 4, CODE_LABEL) +#define LABEL_REFS(LABEL) XCEXP (LABEL, 5, CODE_LABEL) /* This is the field in the LABEL_REF through which the circular chain of references to a particular label is linked. |