From 05ee4b0f76c769a4a385a5ef636fcca7227d5081 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 2 Feb 2005 07:37:36 +0000 Subject: [PATCH] gas/ 2005-02-02 Jan Beulich * config/tc-ia64.c (dot_pred_rel): Update comment. Handle @-prefixed designators along with quoted ones. Free copy of quoted designator when done. gas/testsuite/ 2005-02-02 Jan Beulich * gas/ia64/pred-rel.s: New. * gas/ia64/ia64.exp: Run new test. --- gas/ChangeLog | 6 ++++ gas/config/tc-ia64.c | 47 ++++++++++++++++++++----------- gas/testsuite/ChangeLog | 5 ++++ gas/testsuite/gas/ia64/ia64.exp | 1 + gas/testsuite/gas/ia64/pred-rel.s | 21 ++++++++++++++ 5 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 gas/testsuite/gas/ia64/pred-rel.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 90c5feb878f..d004819c405 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2005-02-02 Jan Beulich + + * config/tc-ia64.c (dot_pred_rel): Update comment. Handle @-prefixed + designators along with quoted ones. Free copy of quoted designator + when done. + 2005-02-01 Ben Elliston * config/atof-ieee.c, config/obj-coff.c, config/obj-elf.c, diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index 250fa7771cb..48ad67221ed 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -4928,9 +4928,9 @@ print_prmask (mask) } /* - .pred.rel.clear [p1 [,p2 [,...]]] (also .pred.rel "clear") - .pred.rel.imply p1, p2 (also .pred.rel "imply") - .pred.rel.mutex p1, p2 [,...] (also .pred.rel "mutex") + .pred.rel.clear [p1 [,p2 [,...]]] (also .pred.rel "clear" or @clear) + .pred.rel.imply p1, p2 (also .pred.rel "imply" or @imply) + .pred.rel.mutex p1, p2 [,...] (also .pred.rel "mutex" or @mutex) .pred.safe_across_calls p1 [, p2 [,...]] */ @@ -4944,28 +4944,43 @@ dot_pred_rel (type) if (type == 0) { - if (*input_line_pointer != '"') - { - as_bad (_("Missing predicate relation type")); - ignore_rest_of_line (); - return; - } - else + if (*input_line_pointer == '"') { int len; char *form = demand_copy_C_string (&len); + if (strcmp (form, "mutex") == 0) type = 'm'; else if (strcmp (form, "clear") == 0) type = 'c'; else if (strcmp (form, "imply") == 0) type = 'i'; - else - { - as_bad (_("Unrecognized predicate relation type")); - ignore_rest_of_line (); - return; - } + obstack_free (¬es, form); + } + else if (*input_line_pointer == '@') + { + char *form = ++input_line_pointer; + char c = get_symbol_end(); + + if (strcmp (form, "mutex") == 0) + type = 'm'; + else if (strcmp (form, "clear") == 0) + type = 'c'; + else if (strcmp (form, "imply") == 0) + type = 'i'; + *input_line_pointer = c; + } + else + { + as_bad (_("Missing predicate relation type")); + ignore_rest_of_line (); + return; + } + if (type == 0) + { + as_bad (_("Unrecognized predicate relation type")); + ignore_rest_of_line (); + return; } if (*input_line_pointer == ',') ++input_line_pointer; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index a9754d3187f..b72178ad8da 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-02 Jan Beulich + + * gas/ia64/pred-rel.s: New. + * gas/ia64/ia64.exp: Run new test. + 2005-01-31 Daniel Jacobowitz * gas/mips/elf-rel23.d, gas/mips/elf-rel23a.d: Accept little-endian. diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp index 89c5d20aecb..d36f92fb62c 100644 --- a/gas/testsuite/gas/ia64/ia64.exp +++ b/gas/testsuite/gas/ia64/ia64.exp @@ -37,6 +37,7 @@ if [istarget "ia64-*"] then { run_dump_test "dv-branch" run_dump_test "dv-imply" run_dump_test "dv-mutex" + gas_test "pred-rel.s" "" "" ".pred.rel alternative forms" run_dump_test "dv-safe" run_dump_test "dv-srlz" run_dump_test "tls" diff --git a/gas/testsuite/gas/ia64/pred-rel.s b/gas/testsuite/gas/ia64/pred-rel.s new file mode 100644 index 00000000000..1316921a6b8 --- /dev/null +++ b/gas/testsuite/gas/ia64/pred-rel.s @@ -0,0 +1,21 @@ +// Make sure all forms of .pred.rel are accepted +_start: + .pred.rel "mutex", p1, p2 + .pred.rel "imply", p2, p3 + .pred.rel "clear", p1, p2, p3 + + .pred.rel "mutex" p1, p2 + .pred.rel "imply" p2, p3 + .pred.rel "clear" p1, p2, p3 + + .pred.rel.mutex p1, p2 + .pred.rel.imply p2, p3 + .pred.rel.clear p1, p2, p3 + + .pred.rel @mutex, p1, p2 + .pred.rel @imply, p2, p3 + .pred.rel @clear, p1, p2, p3 + + .pred.rel @mutex p1, p2 + .pred.rel @imply p2, p3 + .pred.rel @clear p1, p2, p3 -- 2.30.2