mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-08 01:57:08 +08:00
* stmt.c (expand_asm_operands): Accept =' or
+' at any position.
From-SVN: r23356
This commit is contained in:
parent
386c8529dd
commit
3fbd5c2cfd
@ -1,3 +1,7 @@
|
||||
Mon Oct 26 13:32:31 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* stmt.c (expand_asm_operands): Accept `=' or `+' at any position.
|
||||
|
||||
Mon Oct 26 12:53:14 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* tm.texi (ASM_OUTPUT_MAX_SKIP_ALIGN): Document.
|
||||
|
23
gcc/stmt.c
23
gcc/stmt.c
@ -1230,6 +1230,7 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
|
||||
tree val = TREE_VALUE (tail);
|
||||
tree type = TREE_TYPE (val);
|
||||
char *constraint;
|
||||
char *p;
|
||||
int c_len;
|
||||
int j;
|
||||
int is_inout = 0;
|
||||
@ -1247,13 +1248,31 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
|
||||
c_len = TREE_STRING_LENGTH (TREE_PURPOSE (tail)) - 1;
|
||||
constraint = TREE_STRING_POINTER (TREE_PURPOSE (tail));
|
||||
|
||||
if (c_len == 0
|
||||
|| (constraint[0] != '=' && constraint[0] != '+'))
|
||||
/* Allow the `=' or `+' to not be at the beginning of the string,
|
||||
since it wasn't explicitly documented that way, and there is a
|
||||
large body of code that puts it last. Swap the character to
|
||||
the front, so as not to uglify any place else. */
|
||||
switch (c_len)
|
||||
{
|
||||
default:
|
||||
if ((p = strchr (constraint, '=')) != NULL)
|
||||
break;
|
||||
if ((p = strchr (constraint, '+')) != NULL)
|
||||
break;
|
||||
case 0:
|
||||
error ("output operand constraint lacks `='");
|
||||
return;
|
||||
}
|
||||
|
||||
if (p != constraint)
|
||||
{
|
||||
j = *p;
|
||||
bcopy (constraint, constraint+1, p-constraint);
|
||||
*constraint = j;
|
||||
|
||||
warning ("output constraint `%c' for operand %d is not at the beginning", j, i);
|
||||
}
|
||||
|
||||
is_inout = constraint[0] == '+';
|
||||
/* Replace '+' with '='. */
|
||||
constraint[0] = '=';
|
||||
|
Loading…
Reference in New Issue
Block a user