/* * This is a regression test for all the things that gcc is meant to warn * about. * * gcc version 3 breaks several tests: * * -W does not report missing return value * * -Wunused does not report unused parameter */ #include #include jmp_buf jbuf; /* -Wmissing-prototypes: no previous prototype for 'test1' */ /* -Wimplicit: return type defaults to `int' */ test1(void) { /* -Wunused: unused variable `foo' */ int foo; /* -Wparentheses: suggest parentheses around && within || */ printf("%d\n", 1 && 2 || 3 && 4); /* -W: statement with no effect */ 0; /* BROKEN in gcc 3 */ /* -W: control reaches end of non-void function */ } /* -W??????: unused parameter `foo' */ void test2(int foo) { enum { a = 10, b = 15} moe; int bar; /* -Wuninitialized: 'bar' might be used uninitialized in this function */ /* -Wformat: format argument is not a pointer (arg 2) */ printf("%s\n", bar); /* -Wformat: too few arguments for format */ printf("%s%s\n", "bar"); /* -Wformat: too many arguments for format */ printf("%s\n", "bar", "bar"); /* -Wswitch: enumeration value `b' not handled in switch */ switch (moe) { case a: return; } } /* -Wstrict-prototypes: function declaration isn't a prototype */ void test3() { }