Mercurial > hg > CbC > CbC_gcc
comparison gcc/sched-rgn.c @ 132:d34655255c78
update gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 10:21:07 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
130:e108057fa461 | 132:d34655255c78 |
---|---|
1 /* Instruction scheduling pass. | 1 /* Instruction scheduling pass. |
2 Copyright (C) 1992-2017 Free Software Foundation, Inc. | 2 Copyright (C) 1992-2018 Free Software Foundation, Inc. |
3 Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, | 3 Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, |
4 and currently maintained by, Jim Wilson (wilson@cygnus.com) | 4 and currently maintained by, Jim Wilson (wilson@cygnus.com) |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
2495 do | 2495 do |
2496 insn = PREV_INSN (insn); | 2496 insn = PREV_INSN (insn); |
2497 while (insn != head && DEBUG_INSN_P (insn)); | 2497 while (insn != head && DEBUG_INSN_P (insn)); |
2498 } | 2498 } |
2499 | 2499 |
2500 /* Selective scheduling handles control dependencies by itself, and | |
2501 CANT_MOVE flags ensure that other insns will be kept in place. */ | |
2502 if (sel_sched_p ()) | |
2503 return; | |
2504 | |
2500 /* Make sure these insns are scheduled last in their block. */ | 2505 /* Make sure these insns are scheduled last in their block. */ |
2501 insn = last; | 2506 insn = last; |
2502 if (insn != 0) | 2507 if (insn != 0) |
2503 while (insn != head) | 2508 while (insn != head) |
2504 { | 2509 { |
2723 gcc_assert (EBB_FIRST_BB (bb) == EBB_LAST_BB (bb)); | 2728 gcc_assert (EBB_FIRST_BB (bb) == EBB_LAST_BB (bb)); |
2724 get_ebb_head_tail (EBB_FIRST_BB (bb), EBB_LAST_BB (bb), &head, &tail); | 2729 get_ebb_head_tail (EBB_FIRST_BB (bb), EBB_LAST_BB (bb), &head, &tail); |
2725 | 2730 |
2726 sched_analyze (&tmp_deps, head, tail); | 2731 sched_analyze (&tmp_deps, head, tail); |
2727 | 2732 |
2728 /* Selective scheduling handles control dependencies by itself. */ | 2733 add_branch_dependences (head, tail); |
2729 if (!sel_sched_p ()) | |
2730 add_branch_dependences (head, tail); | |
2731 | 2734 |
2732 if (current_nr_blocks > 1) | 2735 if (current_nr_blocks > 1) |
2733 propagate_deps (bb, &tmp_deps); | 2736 propagate_deps (bb, &tmp_deps); |
2734 | 2737 |
2735 /* Free up the INSN_LISTs. */ | 2738 /* Free up the INSN_LISTs. */ |
3256 to using the cfg code. */ | 3259 to using the cfg code. */ |
3257 if (!sel_sched_p ()) | 3260 if (!sel_sched_p ()) |
3258 free_dominance_info (CDI_DOMINATORS); | 3261 free_dominance_info (CDI_DOMINATORS); |
3259 } | 3262 } |
3260 | 3263 |
3261 gcc_assert (0 < nr_regions && nr_regions <= n_basic_blocks_for_fn (cfun)); | 3264 gcc_assert (nr_regions > 0 && nr_regions <= n_basic_blocks_for_fn (cfun)); |
3262 | 3265 |
3263 RGN_BLOCKS (nr_regions) = (RGN_BLOCKS (nr_regions - 1) + | 3266 RGN_BLOCKS (nr_regions) = (RGN_BLOCKS (nr_regions - 1) |
3264 RGN_NR_BLOCKS (nr_regions - 1)); | 3267 + RGN_NR_BLOCKS (nr_regions - 1)); |
3265 nr_regions_initial = nr_regions; | 3268 nr_regions_initial = nr_regions; |
3266 } | 3269 } |
3267 | 3270 |
3268 /* Free data structures for region scheduling. */ | 3271 /* Free data structures for region scheduling. */ |
3269 void | 3272 void |