diff options
author | Alan Hayward <alan.hayward@arm.com> | 2018-08-06 09:16:24 +0000 |
---|---|---|
committer | Alan Hayward <alahay01@gcc.gnu.org> | 2018-08-06 09:16:24 +0000 |
commit | 14196e023fa2a07f86e864a9492e7cf3950d5ce9 (patch) | |
tree | f0d8015e011ea09736010143008d034336aed6e5 /gcc/genrecog.c | |
parent | 601e86a57f6ec7e9acdfe5767779a3c62735b0e6 (diff) | |
download | gcc-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.c | 3 |
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; |