diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2008-03-26 15:18:42 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@codesourcery.com> | 2008-03-26 15:18:42 +0000 |
commit | 99bfa74a539321b7c476a33880f9afa04d69894a (patch) | |
tree | 6a74cffee87464b27d9789210e2230dbd105b56e /gas/config | |
parent | 5e2b427df30d4c07ffe08dca54c26f2569b1630f (diff) | |
download | gdb-99bfa74a539321b7c476a33880f9afa04d69894a.zip gdb-99bfa74a539321b7c476a33880f9afa04d69894a.tar.gz gdb-99bfa74a539321b7c476a33880f9afa04d69894a.tar.bz2 |
gas/
From Jie Zhang <jie.zhang@analog.com>
* config/bfin-parse.y (asm_1): Check AREGS in comparison
instructions. And call yyerror () when comparing PREG with
DREG.
gas/testsuite/:
* gas/bfin/expected_comparison_errors.l: New test.
* gas/bfin/expected_comparison_errors.s: New test.
* gas/bfin/bfin.exp: Add expected_comparison_errors.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/bfin-parse.y | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y index df1b6f8..b320c72 100644 --- a/gas/config/bfin-parse.y +++ b/gas/config/bfin-parse.y @@ -1554,23 +1554,23 @@ asm_1: } | CCREG ASSIGN REG_A _ASSIGN_ASSIGN REG_A { - if (!REG_SAME ($3, $5)) + if ($3.regno == REG_A0 && $5.regno == REG_A1) { notethat ("CCflag: CC = A0 == A1\n"); $$ = CCFLAG (0, 0, 5, 0, 0); } else - return yyerror ("CC register expected"); + return yyerror ("AREGs are in bad order or same"); } | CCREG ASSIGN REG_A LESS_THAN REG_A { - if (!REG_SAME ($3, $5)) + if ($3.regno == REG_A0 && $5.regno == REG_A1) { notethat ("CCflag: CC = A0 < A1\n"); $$ = CCFLAG (0, 0, 6, 0, 0); } else - return yyerror ("Register mismatch"); + return yyerror ("AREGs are in bad order or same"); } | CCREG ASSIGN REG LESS_THAN REG iu_or_nothing { @@ -1599,7 +1599,9 @@ asm_1: { notethat ("CCflag: CC = dpregs == dpregs\n"); $$ = CCFLAG (&$3, $5.regno & CODE_MASK, 0, 0, IS_PREG ($3) ? 1 : 0); - } + } + else + return yyerror ("Compare only of same register class"); } | CCREG ASSIGN REG _ASSIGN_ASSIGN expr { @@ -1613,13 +1615,13 @@ asm_1: } | CCREG ASSIGN REG_A _LESS_THAN_ASSIGN REG_A { - if (!REG_SAME ($3, $5)) + if ($3.regno == REG_A0 && $5.regno == REG_A1) { notethat ("CCflag: CC = A0 <= A1\n"); $$ = CCFLAG (0, 0, 7, 0, 0); } else - return yyerror ("CC register expected"); + return yyerror ("AREGs are in bad order or same"); } | CCREG ASSIGN REG _LESS_THAN_ASSIGN REG iu_or_nothing { |