// { 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 'End of File' when expecting ','" "" { target *-*-* } .-2 } // { dg-error "found 'End of File' when expecting ']'" "" { target *-*-* } .-3 } // { dg-error "found 'End of File' 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' is a 'double' definition and cannot be modified" } } void semantic2() { semantic2a(3.6); // { dg-error "template instance 'asm1.semantic2a!double' error instantiating" } } void semantic3() { asm { unknown; // { dg-error "undefined identifier 'unknown'" } } } 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" } } }