aboutsummaryrefslogtreecommitdiff
path: root/gcc/genrecog.c
diff options
context:
space:
mode:
authorAlan Hayward <alan.hayward@arm.com>2018-08-06 09:16:24 +0000
committerAlan Hayward <alahay01@gcc.gnu.org>2018-08-06 09:16:24 +0000
commit14196e023fa2a07f86e864a9492e7cf3950d5ce9 (patch)
treef0d8015e011ea09736010143008d034336aed6e5 /gcc/genrecog.c
parent601e86a57f6ec7e9acdfe5767779a3c62735b0e6 (diff)
downloadgcc-14196e023fa2a07f86e864a9492e7cf3950d5ce9.zip
gcc-14196e023fa2a07f86e864a9492e7cf3950d5ce9.tar.gz
gcc-14196e023fa2a07f86e864a9492e7cf3950d5ce9.tar.bz2
Generation support for CLOBBER_HIGH
Ensure clobber high is a register expression. Info is passed through for the error case. gcc/ * emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH. (copy_insn_1): Likewise. (gen_hard_reg_clobber_high): New gen function. * genconfig.c (walk_insn_part): Check for CLOBBER_HIGH. * genemit.c (gen_exp): Likewise. (gen_emit_seq): Pass through info. (gen_insn): Check for CLOBBER_HIGH. (gen_expand): Pass through info. (gen_split): Likewise. (output_add_clobbers): Likewise. * genrecog.c (validate_pattern): Check for CLOBBER_HIGH. (remove_clobbers): Likewise. * rtl.h (gen_hard_reg_clobber_high): New declaration. From-SVN: r263327
Diffstat (limited to 'gcc/genrecog.c')
-rw-r--r--gcc/genrecog.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index 663df8c..629e2dc 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -718,6 +718,7 @@ validate_pattern (rtx pattern, md_rtx_info *info, rtx set, int set_code)
}
case CLOBBER:
+ case CLOBBER_HIGH:
validate_pattern (SET_DEST (pattern), info, pattern, '=');
return;
@@ -5294,7 +5295,7 @@ remove_clobbers (acceptance_type *acceptance_ptr, rtx *pattern_ptr)
for (i = XVECLEN (pattern, 0); i > 0; i--)
{
rtx x = XVECEXP (pattern, 0, i - 1);
- if (GET_CODE (x) != CLOBBER
+ if ((GET_CODE (x) != CLOBBER && GET_CODE (x) != CLOBBER_HIGH)
|| (!REG_P (XEXP (x, 0))
&& GET_CODE (XEXP (x, 0)) != MATCH_SCRATCH))
break;