stmt.c (resolve_operand_names): Handle operand modifiers.
* stmt.c (resolve_operand_names): Handle operand modifiers. * gcc.dg/asm-4.c: Test operand modifiers. From-SVN: r48299
This commit is contained in:
parent
6be2e1f88c
commit
7abcb63a42
@ -1,3 +1,7 @@
|
||||
2001-12-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* stmt.c (resolve_operand_names): Handle operand modifiers.
|
||||
|
||||
2001-12-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* stmt.c (parse_input_constraint): Break out from ...
|
||||
|
12
gcc/stmt.c
12
gcc/stmt.c
@ -2080,8 +2080,16 @@ resolve_operand_names (string, outputs, inputs, pconstraints)
|
||||
p = buffer;
|
||||
while ((p = strchr (p, '%')) != NULL)
|
||||
{
|
||||
if (*++p != '[')
|
||||
continue;
|
||||
if (p[1] == '[')
|
||||
p += 1;
|
||||
else if (ISALPHA (p[1]) && p[2] == '[')
|
||||
p += 2;
|
||||
else
|
||||
{
|
||||
p += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
p = resolve_operand_name_1 (p, outputs, inputs);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2001-12-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* gcc.dg/asm-4.c: Test operand modifiers.
|
||||
|
||||
2001-12-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/20011219-1.c (main): Make "i" a long.
|
||||
|
@ -3,12 +3,14 @@
|
||||
|
||||
int main()
|
||||
{
|
||||
int x;
|
||||
int x, y, z;
|
||||
|
||||
asm volatile ("test0 X%0Y%[arg]Z" : [arg] "=g" (x));
|
||||
asm volatile ("test1 X%[out]Y%[in]Z" : [out] "=g" (x) : [in] "0"(x));
|
||||
asm volatile ("test1 X%[out]Y%[in]Z" : [out] "=g" (y) : [in] "0"(y));
|
||||
asm volatile ("test2 X%a0Y%a[arg]Z" : : [arg] "p" (&z));
|
||||
}
|
||||
|
||||
/* ??? Someone explain why the back reference dosn't work. */
|
||||
/* { dontdg-final { scan-assembler "test0 X(.*)Y\1Z" } } */
|
||||
/* { dontdg-final { scan-assembler "test1 X(.*)Y\1Z" } } */
|
||||
/* { dontdg-final { scan-assembler "test2 X(.*)Y\1Z" } } */
|
||||
|
Loading…
Reference in New Issue
Block a user