diff options
author | Jan Beulich <jbeulich@novell.com> | 2005-10-12 07:51:08 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2005-10-12 07:51:08 +0000 |
commit | 60d11e55933d976901b573db7d8cf27d713049a0 (patch) | |
tree | 36be66a7243f6f3aa6659b058bf87a8f1b8c46aa | |
parent | 3d888abf5b9c74d05a6c7280d905d5d60a2d243c (diff) | |
download | gdb-60d11e55933d976901b573db7d8cf27d713049a0.zip gdb-60d11e55933d976901b573db7d8cf27d713049a0.tar.gz gdb-60d11e55933d976901b573db7d8cf27d713049a0.tar.bz2 |
gas/
2005-10-12 Jan Beulich <jbeulich@novell.com>
* 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 <jbeulich@novell.com>
* gas/ia64/forward.[sd]: New.
* gas/ia64/ia64.exp: Run new test.
-rw-r--r-- | gas/ChangeLog | 12 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 10 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/forward.d | 15 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/forward.s | 27 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/ia64.exp | 1 |
6 files changed, 63 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 16d67b5..cc84d99 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,7 +1,15 @@ +2005-10-12 Jan Beulich <jbeulich@novell.com> + + * 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 <jbeulich@novell.com> * 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 334eb32..19b5769 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 5ed3d10..31f56dd 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-12 Jan Beulich <jbeulich@novell.com> + + * gas/ia64/forward.[sd]: New. + * gas/ia64/ia64.exp: Run new test. + 2005-10-11 Jan Beulich <jbeulich@novell.com> * 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 0000000..66aecde --- /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 0000000..fc2590b --- /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 5ecdff3..a6c8646 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" "" |