1 /* $NetBSD: gcc_stmt_asm.c,v 1.5 2023/07/07 19:45:22 rillig Exp $ */ 2 # 3 "gcc_stmt_asm.c" 3 4 /* 5 * Tests for the GCC 'asm' statement. 6 */ 7 8 /* lint1-extra-flags: -X 351 */ 9 10 void 11 function(void) 12 { 13 /* 14 * lint is not really interested in assembly language, therefore it 15 * just skips everything until and including the closing parenthesis. 16 */ 17 asm(any "string" or 12345 || whatever); 18 19 /* 20 * Parentheses are allowed in 'asm' statements, they have to be 21 * properly nested. Brackets and braces don't have to be nested 22 * since they usually not occur in 'asm' statements. 23 */ 24 __asm(^(int = typedef[[[{{{)); 25 26 __asm__(); 27 } 28 29 /* 30 * Even on the top level, 'asm' is allowed. It is interpreted as a 31 * declaration. 32 */ 33 __asm__(); 34 35 void 36 syntax_error(void) 37 { 38 /* expect+1: error: syntax error '__asm__' [249] */ 39 int i = __asm__(); 40 } 41 42 __asm__( 43 /* cover read_until_rparen at EOF */ 44 /* expect+1: error: syntax error '' [249] */ 45