1/* $NetBSD: gccw.c,v 1.2 2022/10/08 16:12:50 christos Exp $ */ 2 3 /* 4 * This is a regression test for all the things that gcc is meant to warn 5 * about. 6 * 7 * gcc version 3 breaks several tests: 8 * 9 * -W does not report missing return value 10 * 11 * -Wunused does not report unused parameter 12 */ 13 14#include <stdio.h> 15#include <setjmp.h> 16 17jmp_buf jbuf; 18 19 /* -Wmissing-prototypes: no previous prototype for 'test1' */ 20 /* -Wimplicit: return type defaults to `int' */ 21test1(void) 22{ 23 /* -Wunused: unused variable `foo' */ 24 int foo; 25 26 /* -Wparentheses: suggest parentheses around && within || */ 27 printf("%d\n", 1 && 2 || 3 && 4); 28 /* -W: statement with no effect */ 29 0; 30 /* BROKEN in gcc 3 */ 31 /* -W: control reaches end of non-void function */ 32} 33 34 35 /* -W??????: unused parameter `foo' */ 36void test2(int foo) 37{ 38 enum { 39 a = 10, b = 15} moe; 40 int bar; 41 42 /* -Wuninitialized: 'bar' might be used uninitialized in this function */ 43 /* -Wformat: format argument is not a pointer (arg 2) */ 44 printf("%s\n", bar); 45 /* -Wformat: too few arguments for format */ 46 printf("%s%s\n", "bar"); 47 /* -Wformat: too many arguments for format */ 48 printf("%s\n", "bar", "bar"); 49 50 /* -Wswitch: enumeration value `b' not handled in switch */ 51 switch (moe) { 52 case a: 53 return; 54 } 55} 56 57 /* -Wstrict-prototypes: function declaration isn't a prototype */ 58void test3() 59{ 60} 61