diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-10-26 10:40:37 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-10-26 10:40:37 +0000 |
commit | be83dbcd32cfc4c170ec0911ebb15a5b549f34cb (patch) | |
tree | b1fb348a8c2b73cd94c6fcff4500faa29e75abed /gcc/config/mep/mep.c | |
parent | cd2faba827aa65884074fddd5ec26f97fc7c5c27 (diff) | |
download | gcc-be83dbcd32cfc4c170ec0911ebb15a5b549f34cb.tar.gz |
gcc/
* config/mep/mep.c: Include rtl-iter.h.
(global_reg_mentioned_p_1): Take a const_rtx and return a bool.
(xtensa_tls_referenced_p): Return a bool. Use FOR_EACH_SUBRTX.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216704 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/mep/mep.c')
-rw-r--r-- | gcc/config/mep/mep.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/gcc/config/mep/mep.c b/gcc/config/mep/mep.c index 26d3ff90dac..a99f37e762e 100644 --- a/gcc/config/mep/mep.c +++ b/gcc/config/mep/mep.c @@ -69,6 +69,7 @@ along with GCC; see the file COPYING3. If not see #include "opts.h" #include "dumpfile.h" #include "builtins.h" +#include "rtl-iter.h" /* Structure of this file: @@ -6367,14 +6368,10 @@ mep_vector_mode_supported_p (enum machine_mode mode ATTRIBUTE_UNUSED) /* A subroutine of global_reg_mentioned_p, returns 1 if *LOC mentions a global register. */ -static int -global_reg_mentioned_p_1 (rtx *loc, void *data ATTRIBUTE_UNUSED) +static bool +global_reg_mentioned_p_1 (const_rtx x) { int regno; - rtx x = *loc; - - if (! x) - return 0; switch (GET_CODE (x)) { @@ -6383,40 +6380,31 @@ global_reg_mentioned_p_1 (rtx *loc, void *data ATTRIBUTE_UNUSED) { if (REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER && global_regs[subreg_regno (x)]) - return 1; - return 0; + return true; + return false; } break; case REG: regno = REGNO (x); if (regno < FIRST_PSEUDO_REGISTER && global_regs[regno]) - return 1; - return 0; - - case SCRATCH: - case PC: - case CC0: - case CONST_INT: - case CONST_DOUBLE: - case CONST: - case LABEL_REF: - return 0; + return true; + return false; case CALL: /* A non-constant call might use a global register. */ - return 1; + return true; default: break; } - return 0; + return false; } /* Returns nonzero if X mentions a global register. */ -static int +static bool global_reg_mentioned_p (rtx x) { if (INSN_P (x)) @@ -6424,16 +6412,20 @@ global_reg_mentioned_p (rtx x) if (CALL_P (x)) { if (! RTL_CONST_OR_PURE_CALL_P (x)) - return 1; + return true; x = CALL_INSN_FUNCTION_USAGE (x); if (x == 0) - return 0; + return false; } else x = PATTERN (x); } - return for_each_rtx (&x, global_reg_mentioned_p_1, NULL); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, x, NONCONST) + if (global_reg_mentioned_p_1 (*iter)) + return true; + return false; } /* Scheduling hooks for VLIW mode. |