Extend list of codes accepted by address_operand
Richard Sandiford
richard.sandiford@arm.com
Mon Apr 27 10:07:00 GMT 2015
While testing the patch that I'm about to post, I found that the list
of address_operand codes in gensupport.c was incomplete. This patch
fills in some "obvious" missing entries.
It isn't exactly clear which codes are allowed at the top level of
an address. decompose_address is known to be general enough for all LRA
targets, but it also technically accepts any unary operator as the outer
code, whereas I think only SIGN_EXTEND and ZERO_EXTEND are used at the
top level. The routine accepts ZERO_EXTRACT and SIGN_EXTRACT, but I
think in practice they're only used for index values and not full addresses.
Tested on x86_64-linux-gnu. OK to install?
Thanks,
Richard
gcc/
* gensupport.c (std_preds): Add missing codes to address_operand entry.
Index: gcc/gensupport.c
===================================================================
--- gcc/gensupport.c 2015-04-27 10:38:48.000000000 +0100
+++ gcc/gensupport.c 2015-04-27 10:40:59.044635383 +0100
@@ -2800,7 +2800,8 @@ struct std_pred_table
static const struct std_pred_table std_preds[] = {
{"general_operand", false, true, {SUBREG, REG, MEM}},
- {"address_operand", true, true, {SUBREG, REG, MEM, PLUS, MINUS, MULT}},
+ {"address_operand", true, true, {SUBREG, REG, MEM, PLUS, MINUS, MULT,
+ ZERO_EXTEND, SIGN_EXTEND, AND}},
{"register_operand", false, false, {SUBREG, REG}},
{"pmode_register_operand", true, false, {SUBREG, REG}},
{"scratch_operand", false, false, {SCRATCH, REG}},
More information about the Gcc-patches
mailing list