blob: dce36769370411f5a0034b8b0bb6e176b7681927 [file] [log] [blame]
// { dg-do compile }
module asm1;
void parse1()
{
asm
{
""h; // { dg-error "found 'h' when expecting ':'" }
}
}
void parse2()
{
asm
{
"" : : "g" (1 ? 2 : 3);
"" : : "g" (1 ? 2 : :) 3;
// { dg-error "expression expected, not ':'" "" { target *-*-* } .-1 }
// { dg-error "expected constant string constraint for operand" "" { target *-*-* } .-2 }
}
}
void parse3()
{
asm { "" [; }
// { dg-error "expression expected, not ';'" "" { target *-*-* } .-1 }
// { dg-error "found 'EOF' when expecting ','" "" { target *-*-* } .-2 }
// { dg-error "found 'EOF' when expecting ']'" "" { target *-*-* } .-3 }
// { dg-error "found 'EOF' when expecting ';'" "" { target *-*-* } .-4 }
}
void parse4()
{
int expr;
asm
{
"%name" : [name] string (expr); // { dg-error "expected constant string constraint for operand, not 'string'" }
}
}
void semantic1()
{
{
int one;
L1:
;
}
asm { "" : : : : L1, L2; }
// { dg-error "goto skips declaration of variable asm1.semantic1.one" "" { target *-*-* } .-1 }
// { dg-error "goto skips declaration of variable asm1.semantic1.two" "" { target *-*-* } .-2 }
{
int two;
L2:
;
}
}
void semantic2a(X...)(X expr)
{
alias X[0] var1;
asm { "%0" : "=m" (var1); } // { dg-error "double 'double' is a type, not an lvalue" }
}
void semantic2()
{
semantic2a(3.6); // { dg-error "template instance asm1.semantic2a!double error instantiating" }
}
void semantic3()
{
asm
{
unknown; // { dg-error "undefined identifier" }
}
}
struct S4
{
template opDispatch(string Name, P...)
{
static void opDispatch(P) {}
}
}
void semantic4()
{
asm
{
"%0" : : "m" (S4.foo); // { dg-error "template instance opDispatch!\"foo\" has no value" }
}
}