Package: gcc-3.2 Version: 1:3.2.3-0pre6 Severity: normal When I compile certain files (a testcase is attached), gcc fails to compile with the following error: broken-restrict.c:25: invalid use of `restrict' I am sure this is a valid use of restrict because I have seen it used in <http://www.opengroup.org/onlinepubs/007904975/functions/lio_listio.html> (SUSv3), which is aligned with C99. In fact, that page says, in part:
The restrict keyword is added to the lio_listio() prototype for alignment with the ISO/IEC 9899:1999 standard. It also fails to compile with the snapshot (with the same error). You can compile this with: "gcc -std=c99 -c broken-restrict.c" and it will break or you can use "gcc -DRESTRICT_IS_FUCKED -std=c99 -c broken-restrict.c" and it will work. I've pretty much narrowed it down to the restrict in the brackets (if you put them on a new line, you will see that they are the cause of the syntax error). 6ba722aec61848d0b8bad883741f8f7e *broken-restrict.c -- System Information: Debian Release: testing/unstable Architecture: i386 Kernel: Linux stonewall 2.4.20-1-k7 #1 Sat Mar 22 15:17:52 EST 2003 i686 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 Versions of packages gcc-3.2 depends on: ii binutils 2.13.90.0.18-1.3 The GNU assembler, linker and bina ii cpp-3.2 1:3.2.3-0pre6 The GNU C preprocessor ii gcc-3.2-base 1:3.2.3-0pre6 The GNU Compiler Collection (base ii libc6 2.3.1-16 GNU C Library: Shared libraries an ii libgcc1 1:3.2.3-0pre6 GCC support library -- no debconf information -- Brian M. Carlson <[EMAIL PROTECTED]> 0x560553e7 "Let us think the unthinkable, let us do the undoable. Let us prepare to grapple with the ineffable itself, and see if we may not eff it after all." --Douglas Adams
/* vim: set si ai ts=4 sw=4 uc=0 tw=80 noet: */ /* public domain. no warranty. */ /* See * <http://www.opengroup.org/onlinepubs/007904975/functions/lio_listio.html> * for SUSv3's description of lio_listio(). */ /* This is based on lio_listio(). */ struct foo { char *x; }; struct bar { int *x; }; int foo_lio_listio(int mode, #ifdef RESTRICT_IS_FUCKED struct foo *const list[], #else struct foo *restrict const list[restrict], #endif int nent, #ifdef RESTRICT_IS_FUCKED struct bar *sig) #else struct bar *restrict sig) #endif { return 0; }
pgpJCMUj8c4qF.pgp
Description: PGP signature