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