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