Home | History | Annotate | Line # | Download | only in lint1
      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