Mercurial > hg > CbC > CbC_gcc
diff gcc/resource.c @ 132:d34655255c78
update gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 10:21:07 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/resource.c Thu Oct 25 08:08:40 2018 +0900 +++ b/gcc/resource.c Thu Oct 25 10:21:07 2018 +0900 @@ -1,5 +1,5 @@ /* Definitions for computing resource usage of specific insns. - Copyright (C) 1999-2017 Free Software Foundation, Inc. + Copyright (C) 1999-2018 Free Software Foundation, Inc. This file is part of GCC. @@ -108,6 +108,11 @@ if (GET_CODE (x) == CLOBBER) for (i = first_regno; i < last_regno; i++) CLEAR_HARD_REG_BIT (current_live_regs, i); + else if (GET_CODE (x) == CLOBBER_HIGH) + /* No current target supports both branch delay slots and CLOBBER_HIGH. + We'd need more elaborate liveness tracking to handle that + combination. */ + gcc_unreachable (); else for (i = first_regno; i < last_regno; i++) { @@ -212,6 +217,7 @@ case PC: case SYMBOL_REF: case LABEL_REF: + case DEBUG_INSN: return; case SUBREG: @@ -292,6 +298,7 @@ return; case CLOBBER: + case CLOBBER_HIGH: return; case CALL_INSN: @@ -451,6 +458,7 @@ case BARRIER: case NOTE: + case DEBUG_INSN: continue; case INSN: @@ -639,6 +647,7 @@ case SYMBOL_REF: case CONST: case PC: + case DEBUG_INSN: /* These don't set any resources. */ return; @@ -665,9 +674,15 @@ for (link = CALL_INSN_FUNCTION_USAGE (call_insn); link; link = XEXP (link, 1)) - if (GET_CODE (XEXP (link, 0)) == CLOBBER) - mark_set_resources (SET_DEST (XEXP (link, 0)), res, 1, - MARK_SRC_DEST); + { + /* We could support CLOBBER_HIGH and treat it in the same way as + HARD_REGNO_CALL_PART_CLOBBERED, but no port needs that + yet. */ + gcc_assert (GET_CODE (XEXP (link, 0)) != CLOBBER_HIGH); + if (GET_CODE (XEXP (link, 0)) == CLOBBER) + mark_set_resources (SET_DEST (XEXP (link, 0)), res, 1, + MARK_SRC_DEST); + } /* Check for a REG_SETJMP. If it exists, then we must assume that this call can clobber any register. */ @@ -710,6 +725,12 @@ mark_set_resources (XEXP (x, 0), res, 1, MARK_SRC_DEST); return; + case CLOBBER_HIGH: + /* No current target supports both branch delay slots and CLOBBER_HIGH. + We'd need more elaborate liveness tracking to handle that + combination. */ + gcc_unreachable (); + case SEQUENCE: { rtx_sequence *seq = as_a <rtx_sequence *> (x);