From owner-freebsd-bugs Thu Mar 13 07:10:08 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id HAA01571 for bugs-outgoing; Thu, 13 Mar 1997 07:10:08 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id HAA01565; Thu, 13 Mar 1997 07:10:03 -0800 (PST) Resent-Date: Thu, 13 Mar 1997 07:10:03 -0800 (PST) Resent-Message-Id: <199703131510.HAA01565@freefall.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@freefall.FreeBSD.org, hans@brandinnovators.com Received: from news.IAEhv.nl (root@news.IAEhv.nl [194.151.64.4]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id HAA01389 for ; Thu, 13 Mar 1997 07:07:23 -0800 (PST) Received: from truk.brandinnovators.com (uucp@localhost) by news.IAEhv.nl (8.6.13/1.63) with IAEhv.nl; pid 15342 on Thu, 13 Mar 1997 16:07:16 +0100; id QAA15342 efrom: hans@truk.brandinnovators.com; eto: FreeBSD-gnats-submit@freebsd.org Received: by truk.brandinnovators.com (8.7.5/BI96070101) for <> id PAA01226; Thu, 13 Mar 1997 15:39:28 +0100 (MET) Message-Id: <199703131439.PAA01226@truk.brandinnovators.com> Date: Thu, 13 Mar 1997 15:39:28 +0100 (MET) From: hans@brandinnovators.com (Hans Zuidam) Reply-To: hans@brandinnovators.com To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: bin/2979: Make gcc shut up about extensions when compiling `-pedantic -ansi' Sender: owner-bugs@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >Number: 2979 >Category: bin >Synopsis: GCC complains about stmt. expr. when compiling machine/endian.h with -pedantic -ansi >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Mar 13 07:10:01 PST 1997 >Last-Modified: >Originator: Hans Zuidam >Organization: Brand Innovators B.V. P-Mail: P.O. Box 1377 de Pinckart 54 5602 BJ Eindhoven, The Netherlands 5674 CC Nuenen Tel. +31 40 2631134, Fax. +31 40 2831138 >Release: 2.1.5-RELEASE >Environment: gcc version 2.6.3 >Description: When compiling something which uses statement expressions (e.g machine/endian.h to get at ntohl()), gcc complains that braces are not allowed by ANSI C. >How-To-Repeat: Compile something which uses statement expressions. >Fix: Below is a diff. for the relevant files. Insert `__extension__' before the expression. *** /usr/include/machine/endian.h.orig Sun Feb 12 09:31:31 1995 --- /usr/include/machine/endian.h Thu Mar 13 15:20:31 1997 *************** *** 58,90 **** #endif #define __word_swap_long(x) \ ! ({ register u_long __X = (x); \ __asm ("rorl $16, %1" \ : "=r" (__X) \ : "0" (__X)); \ __X; }) #if __GNUC__ >= 2 #define __byte_swap_long(x) \ ! ({ register u_long __X = (x); \ __asm ("xchgb %h1, %b1\n\trorl $16, %1\n\txchgb %h1, %b1" \ : "=q" (__X) \ : "0" (__X)); \ __X; }) #define __byte_swap_word(x) \ ! ({ register u_short __X = (x); \ __asm ("xchgb %h1, %b1" \ : "=q" (__X) \ : "0" (__X)); \ __X; }) #else /* __GNUC__ >= 2 */ #define __byte_swap_long(x) \ ! ({ register u_long __X = (x); \ __asm ("rorw $8, %w1\n\trorl $16, %1\n\trorw $8, %w1" \ : "=r" (__X) \ : "0" (__X)); \ __X; }) #define __byte_swap_word(x) \ ! ({ register u_short __X = (x); \ __asm ("rorw $8, %w1" \ : "=r" (__X) \ : "0" (__X)); \ --- 58,90 ---- #endif #define __word_swap_long(x) \ ! __extension__ ({ register u_long __X = (x); \ __asm ("rorl $16, %1" \ : "=r" (__X) \ : "0" (__X)); \ __X; }) #if __GNUC__ >= 2 #define __byte_swap_long(x) \ ! __extension__ ({ register u_long __X = (x); \ __asm ("xchgb %h1, %b1\n\trorl $16, %1\n\txchgb %h1, %b1" \ : "=q" (__X) \ : "0" (__X)); \ __X; }) #define __byte_swap_word(x) \ ! __extension__ ({ register u_short __X = (x); \ __asm ("xchgb %h1, %b1" \ : "=q" (__X) \ : "0" (__X)); \ __X; }) #else /* __GNUC__ >= 2 */ #define __byte_swap_long(x) \ ! __extension__ ({ register u_long __X = (x); \ __asm ("rorw $8, %w1\n\trorl $16, %1\n\trorw $8, %w1" \ : "=r" (__X) \ : "0" (__X)); \ __X; }) #define __byte_swap_word(x) \ ! __extension__ ({ register u_short __X = (x); \ __asm ("rorw $8, %w1" \ : "=r" (__X) \ : "0" (__X)); \ *** /usr/include/machine/cpufunc.h.orig Sat Jan 13 11:46:38 1996 --- /usr/include/machine/cpufunc.h Thu Mar 13 15:27:06 1997 *************** *** 111,117 **** * because gcc-2.6.0 would promote the operands of the conditional * and produce poor code for "if ((inb(var) & const1) == const2)". */ ! #define inb(port) ({ \ u_char _data; \ if (__builtin_constant_p((int) (port)) && (port) < 256ul) \ _data = inbc(port); \ --- 111,117 ---- * because gcc-2.6.0 would promote the operands of the conditional * and produce poor code for "if ((inb(var) & const1) == const2)". */ ! #define inb(port) __extension__ ({ \ u_char _data; \ if (__builtin_constant_p((int) (port)) && (port) < 256ul) \ _data = inbc(port); \ *** /usr/include/values.h.orig Thu Mar 13 15:23:41 1997 --- /usr/include/values.h Thu Mar 13 15:24:01 1997 *************** *** 48,54 **** #if defined(sun) || defined(hp300) || defined(hpux) || defined(masscomp) || defined(sgi) #ifdef masscomp #define MAXDOUBLE \ ! ({ \ double maxdouble_val; \ \ __asm ("fmove%.d #0x7fefffffffffffff,%0" /* Max double */ \ --- 48,54 ---- #if defined(sun) || defined(hp300) || defined(hpux) || defined(masscomp) || defined(sgi) #ifdef masscomp #define MAXDOUBLE \ ! __extension__ ({ \ double maxdouble_val; \ \ __asm ("fmove%.d #0x7fefffffffffffff,%0" /* Max double */ \ *** /usr/include/vm/vm_pager.h.orig Thu Mar 13 15:24:39 1997 --- /usr/include/vm/vm_pager.h Thu Mar 13 15:24:52 1997 *************** *** 125,138 **** * XXX compat with old interface */ #define vm_pager_get(p, m, s) \ ! ({ \ vm_page_t ml[1]; \ ml[0] = (m); \ vm_pager_get_pages(p, ml, 1, 0, s); \ }) #define vm_pager_put(p, m, s) \ ! ({ \ int rtval; \ vm_page_t ml[1]; \ ml[0] = (m); \ --- 125,138 ---- * XXX compat with old interface */ #define vm_pager_get(p, m, s) \ ! __extension__ ({ \ vm_page_t ml[1]; \ ml[0] = (m); \ vm_pager_get_pages(p, ml, 1, 0, s); \ }) #define vm_pager_put(p, m, s) \ ! __extension__ ({ \ int rtval; \ vm_page_t ml[1]; \ ml[0] = (m); \ >Audit-Trail: >Unformatted: