diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2014-10-27 18:42:00 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2014-10-27 18:42:00 +0000 |
commit | 8dc252595b9cd211faca8929ab2149751a8bdfdc (patch) | |
tree | 513741f13d9101c6460926b61d8c629f3a346573 | |
parent | fc1e0c0a9ce41f7574d4e3e287dd27f9d74cb8a5 (diff) | |
download | gcc-8dc252595b9cd211faca8929ab2149751a8bdfdc.zip gcc-8dc252595b9cd211faca8929ab2149751a8bdfdc.tar.gz gcc-8dc252595b9cd211faca8929ab2149751a8bdfdc.tar.bz2 |
i386.c (find_constant_1): Delete.
gcc/
* config/i386/i386.c (find_constant_1): Delete.
(find_constant): Use FOR_EACH_SUBRTX.
From-SVN: r216760
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 71 |
2 files changed, 36 insertions, 40 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0c8dec..aed92bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2014-10-27 Richard Sandiford <richard.sandiford@arm.com> + * config/i386/i386.c (find_constant_1): Delete. + (find_constant): Use FOR_EACH_SUBRTX. + +2014-10-27 Richard Sandiford <richard.sandiford@arm.com> + * config/i386/i386.c (extended_reg_mentioned_1): Delete. (x86_extended_reg_mentioned_p): Use FOR_EACH_SUBRTX. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 408fbd9..7855a4b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -46533,53 +46533,44 @@ allocate_next_window (int window_num) return dispatch_window_list1; } -/* Increment the number of immediate operands of an instruction. */ +/* Compute number of immediate operands of an instruction. */ -static int -find_constant_1 (rtx *in_rtx, imm_info *imm_values) +static void +find_constant (rtx in_rtx, imm_info *imm_values) { - if (*in_rtx == 0) - return 0; - - switch ( GET_CODE (*in_rtx)) - { - case CONST: - case SYMBOL_REF: - case CONST_INT: - (imm_values->imm)++; - if (x86_64_immediate_operand (*in_rtx, SImode)) - (imm_values->imm32)++; - else - (imm_values->imm64)++; - break; - - case CONST_DOUBLE: - (imm_values->imm)++; - (imm_values->imm64)++; - break; - - case CODE_LABEL: - if (LABEL_KIND (*in_rtx) == LABEL_NORMAL) + if (INSN_P (in_rtx)) + in_rtx = PATTERN (in_rtx); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, in_rtx, ALL) + if (const_rtx x = *iter) + switch (GET_CODE (x)) { + case CONST: + case SYMBOL_REF: + case CONST_INT: (imm_values->imm)++; - (imm_values->imm32)++; - } - break; - - default: - break; - } + if (x86_64_immediate_operand (CONST_CAST_RTX (x), SImode)) + (imm_values->imm32)++; + else + (imm_values->imm64)++; + break; - return 0; -} + case CONST_DOUBLE: + (imm_values->imm)++; + (imm_values->imm64)++; + break; -/* Compute number of immediate operands of an instruction. */ + case CODE_LABEL: + if (LABEL_KIND (x) == LABEL_NORMAL) + { + (imm_values->imm)++; + (imm_values->imm32)++; + } + break; -static void -find_constant (rtx in_rtx, imm_info *imm_values) -{ - for_each_rtx (INSN_P (in_rtx) ? &PATTERN (in_rtx) : &in_rtx, - (rtx_function) find_constant_1, (void *) imm_values); + default: + break; + } } /* Return total size of immediate operands of an instruction along with number |