diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/asm-wide-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/asm-wide-1.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/asm-wide-1.c b/gcc/testsuite/gcc.dg/asm-wide-1.c new file mode 100644 index 00000000000..82cf368f4f8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/asm-wide-1.c @@ -0,0 +1,35 @@ +/* Wide string literals should not be allowed in asm. */ +/* Origin: Joseph Myers <joseph@codesourcery.com> */ +/* { dg-do compile } */ +/* { dg-options "" } */ + +int foo asm (L"bar"); /* { dg-error "error: wide string literal in 'asm'" } */ + +asm (L"foo"); /* { dg-error "error: wide string literal in 'asm'" } */ + +void +f (void) +{ + int x = 1; + asm (L"foo"); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : + L"=g" (x)); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : [x] + L"=g" (x)); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : [x] "=g" (x), + L"=g" (x)); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : : + L"g" (x)); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : : : + L"memory"); /* { dg-error "error: wide string literal in 'asm'" } */ + asm ("foo" : : : "memory", + L"memory"); /* { dg-error "error: wide string literal in 'asm'" } */ +} + +/* Extra errors from the substitution of "" for wide strings: */ +/* { dg-error "output" "output" { target *-*-* } 16 } */ +/* { dg-error "output" "output" { target *-*-* } 18 } */ +/* { dg-error "output" "output" { target *-*-* } 20 } */ +/* { dg-warning "match" "match" { target *-*-* } 21 } */ +/* { dg-error "register" "register" { target *-*-* } 23 } */ +/* { dg-error "register" "register" { target *-*-* } 25 } */ |