Mercurial > hg > CbC > CbC_gcc
diff gcc/ira-build.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/ira-build.c Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/ira-build.c Thu Oct 25 07:37:49 2018 +0900 @@ -1,5 +1,5 @@ /* Building internal representation for IRA. - Copyright (C) 2006-2017 Free Software Foundation, Inc. + Copyright (C) 2006-2018 Free Software Foundation, Inc. Contributed by Vladimir Makarov <vmakarov@redhat.com>. This file is part of GCC. @@ -566,7 +566,7 @@ int n = ira_reg_class_max_nregs[aclass][mode]; int i; - if (GET_MODE_SIZE (mode) != 2 * UNITS_PER_WORD || n != 2) + if (n != 2 || maybe_ne (GET_MODE_SIZE (mode), n * UNITS_PER_WORD)) n = 1; ALLOCNO_NUM_OBJECTS (a) = n; @@ -1876,6 +1876,11 @@ create_insn_allocnos (XEXP (x, 0), NULL, true); return; } + else if (code == CLOBBER_HIGH) + { + gcc_assert (REG_P (XEXP (x, 0)) && HARD_REGISTER_P (XEXP (x, 0))); + return; + } else if (code == MEM) { create_insn_allocnos (XEXP (x, 0), NULL, false); @@ -2202,7 +2207,8 @@ return -1; if (! l1->to_remove_p && l2->to_remove_p) return 1; - if ((diff = l1->loop->header->frequency - l2->loop->header->frequency) != 0) + if ((diff = l1->loop->header->count.to_frequency (cfun) + - l2->loop->header->count.to_frequency (cfun)) != 0) return diff; if ((diff = (int) loop_depth (l1->loop) - (int) loop_depth (l2->loop)) != 0) return diff; @@ -2260,7 +2266,7 @@ (ira_dump_file, " Mark loop %d (header %d, freq %d, depth %d) for removal (%s)\n", sorted_loops[i]->loop_num, sorted_loops[i]->loop->header->index, - sorted_loops[i]->loop->header->frequency, + sorted_loops[i]->loop->header->count.to_frequency (cfun), loop_depth (sorted_loops[i]->loop), low_pressure_loop_node_p (sorted_loops[i]->parent) && low_pressure_loop_node_p (sorted_loops[i]) @@ -2293,7 +2299,7 @@ " Mark loop %d (header %d, freq %d, depth %d) for removal\n", ira_loop_nodes[i].loop_num, ira_loop_nodes[i].loop->header->index, - ira_loop_nodes[i].loop->header->frequency, + ira_loop_nodes[i].loop->header->count.to_frequency (cfun), loop_depth (ira_loop_nodes[i].loop)); } } @@ -2727,7 +2733,13 @@ ira_object_t parent_obj; if (OBJECT_MAX (obj) < 0) - continue; + { + /* The object is not used and hence does not live. */ + ira_assert (OBJECT_LIVE_RANGES (obj) == NULL); + OBJECT_MAX (obj) = 0; + OBJECT_MIN (obj) = 1; + continue; + } ira_assert (ALLOCNO_CAP_MEMBER (a) == NULL); /* Accumulation of range info. */ if (ALLOCNO_CAP (a) != NULL) @@ -2755,8 +2767,8 @@ #ifdef ENABLE_IRA_CHECKING FOR_EACH_OBJECT (obj, oi) { - if ((0 <= OBJECT_MIN (obj) && OBJECT_MIN (obj) <= ira_max_point) - && (0 <= OBJECT_MAX (obj) && OBJECT_MAX (obj) <= ira_max_point)) + if ((OBJECT_MIN (obj) >= 0 && OBJECT_MIN (obj) <= ira_max_point) + && (OBJECT_MAX (obj) >= 0 && OBJECT_MAX (obj) <= ira_max_point)) continue; gcc_unreachable (); }