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.
This commit is contained in:
Jan Beulich 2005-10-12 07:51:08 +00:00
parent 3d888abf5b
commit 60d11e5593
6 changed files with 63 additions and 7 deletions

View File

@ -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.

View File

@ -5103,7 +5103,7 @@ dot_reg_val (dummy)
{
expressionS reg;
expression (&reg);
expression_and_evaluate (&reg);
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");

View File

@ -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

View File

@ -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 <.*>;;

View File

@ -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
;;

View File

@ -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" ""