stmt.c (check_unique_operand_names): Expect operand names to be strings rather than identifiers.
* stmt.c (check_unique_operand_names): Expect operand names to be strings rather than identifiers. Use simple_cst_equal to compare them. (resolve_operand_name_1): Make same identifier to string change here. * c-parse.in (asm_operand): Convert a named operand into a string. * cp/parse.y (asm_operand): Likewise. From-SVN: r52269
This commit is contained in:
parent
c882522104
commit
fc55285160
@ -1,3 +1,12 @@
|
||||
2002-04-13 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* stmt.c (check_unique_operand_names): Expect operand names to
|
||||
be strings rather than identifiers. Use simple_cst_equal to
|
||||
compare them.
|
||||
(resolve_operand_name_1): Make same identifier to string change here.
|
||||
* c-parse.in (asm_operand): Convert a named operand into a string.
|
||||
* cp/parse.y (asm_operand): Likewise.
|
||||
|
||||
2002-04-13 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* config/ia64/ia64.h (CPP_SPEC): Include %(cpp_cpu).
|
||||
|
@ -2467,7 +2467,9 @@ asm_operand:
|
||||
STRING '(' expr ')'
|
||||
{ $$ = build_tree_list (build_tree_list (NULL_TREE, $1), $3); }
|
||||
| '[' identifier ']' STRING '(' expr ')'
|
||||
{ $$ = build_tree_list (build_tree_list ($2, $4), $6); }
|
||||
{ $2 = build_string (IDENTIFIER_LENGTH ($2),
|
||||
IDENTIFIER_POINTER ($2));
|
||||
$$ = build_tree_list (build_tree_list ($2, $4), $6); }
|
||||
;
|
||||
|
||||
asm_clobbers:
|
||||
|
@ -3637,7 +3637,9 @@ asm_operand:
|
||||
STRING '(' expr ')'
|
||||
{ $$ = build_tree_list (build_tree_list (NULL_TREE, $1), $3); }
|
||||
| '[' identifier ']' STRING '(' expr ')'
|
||||
{ $$ = build_tree_list (build_tree_list ($2, $4), $6); }
|
||||
{ $2 = build_string (IDENTIFIER_LENGTH ($2),
|
||||
IDENTIFIER_POINTER ($2));
|
||||
$$ = build_tree_list (build_tree_list ($2, $4), $6); }
|
||||
;
|
||||
|
||||
asm_clobbers:
|
||||
|
20
gcc/stmt.c
20
gcc/stmt.c
@ -2034,7 +2034,7 @@ check_unique_operand_names (outputs, inputs)
|
||||
continue;
|
||||
|
||||
for (j = TREE_CHAIN (i); j ; j = TREE_CHAIN (j))
|
||||
if (i_name == TREE_PURPOSE (TREE_PURPOSE (j)))
|
||||
if (simple_cst_equal (i_name, TREE_PURPOSE (TREE_PURPOSE (j))))
|
||||
goto failure;
|
||||
}
|
||||
|
||||
@ -2045,10 +2045,10 @@ check_unique_operand_names (outputs, inputs)
|
||||
continue;
|
||||
|
||||
for (j = TREE_CHAIN (i); j ; j = TREE_CHAIN (j))
|
||||
if (i_name == TREE_PURPOSE (TREE_PURPOSE (j)))
|
||||
if (simple_cst_equal (i_name, TREE_PURPOSE (TREE_PURPOSE (j))))
|
||||
goto failure;
|
||||
for (j = outputs; j ; j = TREE_CHAIN (j))
|
||||
if (i_name == TREE_PURPOSE (TREE_PURPOSE (j)))
|
||||
if (simple_cst_equal (i_name, TREE_PURPOSE (TREE_PURPOSE (j))))
|
||||
goto failure;
|
||||
}
|
||||
|
||||
@ -2056,7 +2056,7 @@ check_unique_operand_names (outputs, inputs)
|
||||
|
||||
failure:
|
||||
error ("duplicate asm operand name '%s'",
|
||||
IDENTIFIER_POINTER (TREE_PURPOSE (TREE_PURPOSE (i))));
|
||||
TREE_STRING_POINTER (TREE_PURPOSE (TREE_PURPOSE (i))));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2150,20 +2150,20 @@ resolve_operand_name_1 (p, outputs, inputs)
|
||||
/* Resolve the name to a number. */
|
||||
for (op = 0, t = outputs; t ; t = TREE_CHAIN (t), op++)
|
||||
{
|
||||
tree id = TREE_PURPOSE (TREE_PURPOSE (t));
|
||||
if (id)
|
||||
tree name = TREE_PURPOSE (TREE_PURPOSE (t));
|
||||
if (name)
|
||||
{
|
||||
const char *c = IDENTIFIER_POINTER (id);
|
||||
const char *c = TREE_STRING_POINTER (name);
|
||||
if (strncmp (c, p + 1, len) == 0 && c[len] == '\0')
|
||||
goto found;
|
||||
}
|
||||
}
|
||||
for (t = inputs; t ; t = TREE_CHAIN (t), op++)
|
||||
{
|
||||
tree id = TREE_PURPOSE (TREE_PURPOSE (t));
|
||||
if (id)
|
||||
tree name = TREE_PURPOSE (TREE_PURPOSE (t));
|
||||
if (name)
|
||||
{
|
||||
const char *c = IDENTIFIER_POINTER (id);
|
||||
const char *c = TREE_STRING_POINTER (name);
|
||||
if (strncmp (c, p + 1, len) == 0 && c[len] == '\0')
|
||||
goto found;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user