diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-10-11 08:36:29 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-10-11 08:36:29 +0000 |
commit | 96709c617191c6d4ea3e084065bc093019aac39a (patch) | |
tree | 7dbdb3a29afb1b58fedf24a24726073a1cdfbebb /gas/config/bfin-parse.y | |
parent | c6fba434d4ee36037082de9ffcb134ed0d9a903e (diff) | |
download | binutils-redhat-96709c617191c6d4ea3e084065bc093019aac39a.tar.gz |
gas: blackfin: support numeric local labels with LOOP_BEGIN/LOOP_END pseudo insns
The current LOOP_BEGIN/LOOP_END pseudo insns hit parser errors when trying
to use numeric local labels. So add support for them.
Signed-off-by: David Gibson <david.gibson@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'gas/config/bfin-parse.y')
-rw-r--r-- | gas/config/bfin-parse.y | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y index 81640aa926..c34e84c210 100644 --- a/gas/config/bfin-parse.y +++ b/gas/config/bfin-parse.y @@ -3573,6 +3573,17 @@ asm_1: } /* LOOP_BEGIN. */ + | LOOP_BEGIN NUMBER + { + Expr_Node_Value val; + val.i_value = $2; + Expr_Node *tmp = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + bfin_loop_attempt_create_label (tmp, 1); + if (!IS_RELOC (tmp)) + return yyerror ("Invalid expression in LOOP_BEGIN statement"); + bfin_loop_beginend (tmp, 1); + $$ = 0; + } | LOOP_BEGIN expr { if (!IS_RELOC ($2)) @@ -3583,6 +3594,17 @@ asm_1: } /* LOOP_END. */ + | LOOP_END NUMBER + { + Expr_Node_Value val; + val.i_value = $2; + Expr_Node *tmp = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + bfin_loop_attempt_create_label (tmp, 1); + if (!IS_RELOC (tmp)) + return yyerror ("Invalid expression in LOOP_END statement"); + bfin_loop_beginend (tmp, 0); + $$ = 0; + } | LOOP_END expr { if (!IS_RELOC ($2)) |