Deleted Added
full compact
28a29
> #include "hard-reg-set.h"
36c37
< #define INIT_REG_SET(HEAD) bitmap_initialize (HEAD)
---
> #define INIT_REG_SET(HEAD) bitmap_initialize (HEAD, 1)
102c103
< #define INITIALIZE_REG_SET(HEAD) bitmap_initialize (&HEAD)
---
> #define INITIALIZE_REG_SET(HEAD) bitmap_initialize (&HEAD, 1)
138,143c139,148
< #define EDGE_FALLTHRU 1
< #define EDGE_ABNORMAL 2
< #define EDGE_ABNORMAL_CALL 4
< #define EDGE_EH 8
< #define EDGE_FAKE 16
< #define EDGE_DFS_BACK 32
---
> #define EDGE_FALLTHRU 1 /* 'Straight line' flow */
> #define EDGE_ABNORMAL 2 /* Strange flow, like computed
> label, or eh */
> #define EDGE_ABNORMAL_CALL 4 /* Call with abnormal exit
> like an exception, or sibcall */
> #define EDGE_EH 8 /* Exception throw */
> #define EDGE_FAKE 16 /* Not a real edge (profile.c) */
> #define EDGE_DFS_BACK 32 /* A backwards edge */
> #define EDGE_CAN_FALLTHRU 64 /* Candidate for straight line
> flow. */
207a213,215
> /* Previous and next blocks in the chain. */
> struct basic_block_def *prev_bb, *next_bb;
>
210a219,221
> /* Outermost loop containing the block. */
> struct loop *loop_father;
>
224c235,238
< #define BB_REACHABLE 1
---
> #define BB_DIRTY 1
> #define BB_NEW 2
> #define BB_REACHABLE 4
> #define BB_VISITED 8
229a244,247
> /* First free basic block number. */
>
> extern int last_basic_block;
>
239a258,273
> /* For iterating over basic blocks. */
> #define FOR_BB_BETWEEN(BB, FROM, TO, DIR) \
> for (BB = FROM; BB != TO; BB = BB->DIR)
>
> #define FOR_EACH_BB(BB) \
> FOR_BB_BETWEEN (BB, ENTRY_BLOCK_PTR->next_bb, EXIT_BLOCK_PTR, next_bb)
>
> #define FOR_EACH_BB_REVERSE(BB) \
> FOR_BB_BETWEEN (BB, EXIT_BLOCK_PTR->prev_bb, ENTRY_BLOCK_PTR, prev_bb)
>
> /* Cycles through _all_ basic blocks, even the fake ones (entry and
> exit block). */
>
> #define FOR_ALL_BB(BB) \
> for (BB = ENTRY_BLOCK_PTR; BB; BB = BB->next_bb)
>
246c280,281
< extern rtx label_value_list, tail_recursion_label_list;
---
> extern GTY(()) rtx label_value_list;
> extern GTY(()) rtx tail_recursion_label_list;
282,283d316
< extern varray_type basic_block_for_insn;
< #define BLOCK_FOR_INSN(INSN) VARRAY_BB (basic_block_for_insn, INSN_UID (INSN))
284a318
> #define set_block_for_insn(INSN, BB) (BLOCK_FOR_INSN (INSN) = BB)
286c320
< extern void compute_bb_for_insn PARAMS ((int));
---
> extern void compute_bb_for_insn PARAMS ((void));
289d322
< extern void set_block_for_insn PARAMS ((rtx, basic_block));
295a329
>
296a331,332
> extern void commit_edge_insertions_watch_calls PARAMS ((void));
>
302a339,340
> extern edge unchecked_make_edge PARAMS ((basic_block,
> basic_block, int));
311,312c349,350
< extern basic_block create_basic_block_structure PARAMS ((int, rtx, rtx, rtx));
< extern basic_block create_basic_block PARAMS ((int, rtx, rtx));
---
> extern basic_block create_basic_block_structure PARAMS ((rtx, rtx, rtx, basic_block));
> extern basic_block create_basic_block PARAMS ((rtx, rtx, basic_block));
314a353
> extern void clear_bb_flags PARAMS ((void));
326a366,369
> /* Dominator information for basic blocks. */
>
> typedef struct dominance_info *dominance_info;
>
381a425,427
> /* Superloops of the loop. */
> struct loop **pred;
>
395,398c441
< /* Non-zero if the loop shares a header with another loop. */
< int shared;
<
< /* Non-zero if the loop is invalid (e.g., contains setjmp.). */
---
> /* Nonzero if the loop is invalid (e.g., contains setjmp.). */
407c450
< /* Non-zero if the loop has a NOTE_INSN_LOOP_VTOP. */
---
> /* Nonzero if the loop has a NOTE_INSN_LOOP_VTOP. */
410c453
< /* Non-zero if the loop has a NOTE_INSN_LOOP_CONT.
---
> /* Nonzero if the loop has a NOTE_INSN_LOOP_CONT.
414,416d456
< /* The dominator of cont. */
< rtx cont_dominator;
<
462a503,507
> /* The above array is unused in new loop infrastructure and is kept only for
> purposes of the old loop optimizer. Instead we store just pointers to
> loops here. */
> struct loop **parray;
>
470c515
< sbitmap *dom;
---
> dominance_info dom;
483a529,555
> /* Structure to group all of the information to process IF-THEN and
> IF-THEN-ELSE blocks for the conditional execution support. This
> needs to be in a public file in case the IFCVT macros call
> functions passing the ce_if_block data structure. */
>
> typedef struct ce_if_block
> {
> basic_block test_bb; /* First test block. */
> basic_block then_bb; /* THEN block. */
> basic_block else_bb; /* ELSE block or NULL. */
> basic_block join_bb; /* Join THEN/ELSE blocks. */
> basic_block last_test_bb; /* Last bb to hold && or || tests. */
> int num_multiple_test_blocks; /* # of && and || basic blocks. */
> int num_and_and_blocks; /* # of && blocks. */
> int num_or_or_blocks; /* # of || blocks. */
> int num_multiple_test_insns; /* # of insns in && and || blocks. */
> int and_and_p; /* Complex test is &&. */
> int num_then_insns; /* # of insns in THEN block. */
> int num_else_insns; /* # of insns in ELSE block. */
> int pass; /* Pass number. */
>
> #ifdef IFCVT_EXTRA_FIELDS
> IFCVT_EXTRA_FIELDS /* Any machine dependent fields. */
> #endif
>
> } ce_if_block_t;
>
493a566,567
> extern void flow_loop_tree_node_add PARAMS ((struct loop *, struct loop *));
> extern void flow_loop_tree_node_remove PARAMS ((struct loop *));
565c639,644
< #define PROP_FINAL 127 /* All of the above. */
---
> #define PROP_SCAN_DEAD_STORES 256 /* Scan for dead code. */
> #define PROP_FINAL (PROP_DEATH_NOTES | PROP_LOG_LINKS \
> | PROP_REG_INFO | PROP_KILL_DEAD_CODE \
> | PROP_SCAN_DEAD_CODE | PROP_AUTOINC \
> | PROP_ALLOW_CFG_CHANGES \
> | PROP_SCAN_DEAD_STORES)
577a657,658
> #define CLEANUP_NO_INSN_DEL 128 /* Do not try to delete trivially dead
> insns. */
585,586c666
< #define LOOP_EXITS_DOMS 16 /* Find nodes that dom. all exits. */
< #define LOOP_ALL 31 /* All of the above */
---
> #define LOOP_ALL 15 /* All of the above */
589c669
< extern void update_life_info PARAMS ((sbitmap, enum update_life_extent,
---
> extern int update_life_info PARAMS ((sbitmap, enum update_life_extent,
590a671,672
> extern int update_life_info_in_dirty_blocks PARAMS ((enum update_life_extent,
> int));
619a702
> extern void note_prediction_to_br_prob PARAMS ((void));
620a704,707
> extern void note_prediction_to_br_prob PARAMS ((void));
> extern bool maybe_hot_bb_p PARAMS ((basic_block));
> extern bool probably_cold_bb_p PARAMS ((basic_block));
> extern bool probably_never_executed_bb_p PARAMS ((basic_block));
633c720,722
< extern void expunge_block_nocompact PARAMS ((basic_block));
---
> extern void link_block PARAMS ((basic_block, basic_block));
> extern void unlink_block PARAMS ((basic_block));
> extern void compact_blocks PARAMS ((void));
636c725
< extern void delete_noop_moves PARAMS ((rtx));
---
> extern int delete_noop_moves PARAMS ((rtx));
664c753,761
< extern int flow_loop_outside_edge_p PARAMS ((const struct loop *, edge));
---
> extern bool flow_loop_outside_edge_p PARAMS ((const struct loop *, edge));
> extern bool flow_loop_nested_p PARAMS ((const struct loop *,
> const struct loop *));
> extern bool flow_bb_inside_loop_p PARAMS ((const struct loop *,
> const basic_block));
> extern basic_block *get_loop_body PARAMS ((const struct loop *));
> extern int dfs_enumerate_from PARAMS ((basic_block, int,
> bool (*)(basic_block, void *),
> basic_block *, int, void *));
665a763,773
> extern edge loop_preheader_edge PARAMS ((struct loop *));
> extern edge loop_latch_edge PARAMS ((struct loop *));
>
> extern void add_bb_to_loop PARAMS ((basic_block, struct loop *));
> extern void remove_bb_from_loops PARAMS ((basic_block));
> extern struct loop * find_common_loop PARAMS ((struct loop *, struct loop *));
>
> extern void verify_loop_structure PARAMS ((struct loops *, int));
> #define VLS_EXPECT_PREHEADERS 1
> #define VLS_EXPECT_SIMPLE_LATCHES 2
>
670c778
< enumeration is to continue, non-zero to halt enumeration. */
---
> enumeration is to continue, nonzero to halt enumeration. */
692a801
> extern void set_edge_can_fallthru_flag PARAMS ((void));
694a804,806
> extern bool can_hoist_insn_p PARAMS ((rtx, rtx, regset));
> extern rtx hoist_insn_after PARAMS ((rtx, rtx, rtx, rtx));
> extern rtx hoist_insn_to_edge PARAMS ((rtx, edge, rtx, rtx));
705,707c817,833
< extern void calculate_dominance_info PARAMS ((int *, sbitmap *,
< enum cdi_direction));
<
---
> extern dominance_info calculate_dominance_info PARAMS ((enum cdi_direction));
> extern void free_dominance_info PARAMS ((dominance_info));
> extern basic_block nearest_common_dominator PARAMS ((dominance_info,
> basic_block, basic_block));
> extern void set_immediate_dominator PARAMS ((dominance_info,
> basic_block, basic_block));
> extern basic_block get_immediate_dominator PARAMS ((dominance_info,
> basic_block));
> extern bool dominated_by_p PARAMS ((dominance_info, basic_block, basic_block));
> extern int get_dominated_by PARAMS ((dominance_info, basic_block, basic_block **));
> extern void add_to_dominance_info PARAMS ((dominance_info, basic_block));
> extern void delete_from_dominance_info PARAMS ((dominance_info, basic_block));
> basic_block recount_dominator PARAMS ((dominance_info, basic_block));
> extern void redirect_immediate_dominators PARAMS ((dominance_info, basic_block,
> basic_block));
> void iterate_fix_dominators PARAMS ((dominance_info, basic_block *, int));
> extern void verify_dominators PARAMS ((dominance_info));