From 60d11e55933d976901b573db7d8cf27d713049a0 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 12 Oct 2005 07:51:08 +0000 Subject: [PATCH] gas/ 2005-10-12 Jan Beulich * config/tc-ia64.c (dot_reg_val): Use expression_and_evaluate. (dot_pred_rel): Likewise. (parse_operand): Likewise. (ia64_unrecognized_line): Likewise. (md_operand): Likewise. gas/testsuite/ 2005-10-12 Jan Beulich * gas/ia64/forward.[sd]: New. * gas/ia64/ia64.exp: Run new test. --- gas/ChangeLog | 12 ++++++++++-- gas/config/tc-ia64.c | 10 +++++----- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/ia64/forward.d | 15 +++++++++++++++ gas/testsuite/gas/ia64/forward.s | 27 +++++++++++++++++++++++++++ gas/testsuite/gas/ia64/ia64.exp | 1 + 6 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 gas/testsuite/gas/ia64/forward.d create mode 100644 gas/testsuite/gas/ia64/forward.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 16d67b59f7..cc84d990eb 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,7 +1,15 @@ +2005-10-12 Jan Beulich + + * config/tc-ia64.c (dot_reg_val): Use expression_and_evaluate. + (dot_pred_rel): Likewise. + (parse_operand): Likewise. + (ia64_unrecognized_line): Likewise. + (md_operand): Likewise. + 2005-10-11 Jan Beulich * expr.h (enum expr_mode): New. - (expression): Pass thrid argument to expr. + (expression): Pass third argument to expr. (expression_and_evaluate): New. (deferred_expression): New. (expr): Add third parameter. @@ -23,7 +31,7 @@ deferred_expression. Pass mode argument to itself and md_parse_name. Check mode before trying to evaluate symbol. Call symbol_clone_if_forward_ref for both operands. - (expr): Add thrid parameter. Pass mode to operand and itself. + (expr): Add third parameter. Pass mode to operand and itself. Optionally call resolve_expression. (resolve_expression): New. (get_single_number): Pass second argument to operand. diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index 334eb3285d..19b57692fb 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -5103,7 +5103,7 @@ dot_reg_val (dummy) { expressionS reg; - expression (®); + expression_and_evaluate (®); if (reg.X_op != O_register) { as_bad (_("Register name expected")); @@ -5275,7 +5275,7 @@ dot_pred_rel (type) int regno; expressionS pr, *pr1, *pr2; - expression (&pr); + expression_and_evaluate (&pr); if (pr.X_op == O_register && pr.X_add_number >= REG_P && pr.X_add_number <= REG_P + 63) @@ -6181,7 +6181,7 @@ parse_operand (e, more) memset (e, 0, sizeof (*e)); e->X_op = O_absent; SKIP_WHITESPACE (); - expression (e); + expression_and_evaluate (e); sep = *input_line_pointer; if (more && (sep == ',' || sep == more)) ++input_line_pointer; @@ -7822,7 +7822,7 @@ ia64_unrecognized_line (ch) switch (ch) { case '(': - expression (&md.qp); + expression_and_evaluate (&md.qp); if (*input_line_pointer++ != ')') { as_bad ("Expected ')'"); @@ -11022,7 +11022,7 @@ md_operand (e) { case '[': ++input_line_pointer; - expression (e); + expression_and_evaluate (e); if (*input_line_pointer != ']') { as_bad ("Closing bracket missing"); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 5ed3d1093a..31f56ddb22 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-12 Jan Beulich + + * gas/ia64/forward.[sd]: New. + * gas/ia64/ia64.exp: Run new test. + 2005-10-11 Jan Beulich * gas/all/cond.s: Add test for resolution of fully resolvable diff --git a/gas/testsuite/gas/ia64/forward.d b/gas/testsuite/gas/ia64/forward.d new file mode 100644 index 0000000000..66aecde6a9 --- /dev/null +++ b/gas/testsuite/gas/ia64/forward.d @@ -0,0 +1,15 @@ +# as: -xexplicit +# objdump: -d +# name ia64 forward references + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+\[MIB\][[:space:]]+alloc r31=ar.pfs,12,6,8 +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+[[:space:]]+dep.z r2=1,5,7 +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+\(p0?6\)[[:space:]]+br.cond.sptk.few 0+ <_start>;; +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+\[MIB\][[:space:]]+alloc r31=ar.pfs,0,0,0 +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+[[:space:]]+dep.z r3=-1,1,1 +[[:space:]]*[[:xdigit:]]*:[[:space:][:xdigit:]]+\(p0?7\)[[:space:]]+br(\.cond)?\.sptk(\.few)? [[:xdigit:]]+0 <.*>;; diff --git a/gas/testsuite/gas/ia64/forward.s b/gas/testsuite/gas/ia64/forward.s new file mode 100644 index 0000000000..fc2590b778 --- /dev/null +++ b/gas/testsuite/gas/ia64/forward.s @@ -0,0 +1,27 @@ +two == 2*one +one = 1 +three == 3*one +four = 4*one + +RA == rA +rA = r2 + +PA == pA +pA = p6 + + .text +_start: + alloc r31 = one + 1, two + 2, three + 3, four + 4 + dep.z RA = one, two + 3, three + 4 +(PA) br.sptk _start + ;; + +one = -1 +rA = r3 +pA = p7 + +.L1: + alloc r31 = one + 1, two + 2, three + 3, four - 4 + dep.z RA = one, two + 3, three + 4 +(PA) br.sptk .L1 + ;; diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp index 5ecdff31dc..a6c86467eb 100644 --- a/gas/testsuite/gas/ia64/ia64.exp +++ b/gas/testsuite/gas/ia64/ia64.exp @@ -78,6 +78,7 @@ if [istarget "ia64-*"] then { run_list_test "alloc" "" run_dump_test "bundling" + run_dump_test "forward" run_list_test "label" "" run_list_test "last" "" run_list_test "no-fit" "" -- 2.34.1