From owner-freebsd-current Thu Aug 19 10:22: 4 1999 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (Postfix) with ESMTP id F113E15144; Thu, 19 Aug 1999 10:21:56 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id KAA56717; Thu, 19 Aug 1999 10:20:53 -0700 (PDT) (envelope-from dillon) Date: Thu, 19 Aug 1999 10:20:53 -0700 (PDT) From: Matthew Dillon Message-Id: <199908191720.KAA56717@apollo.backplane.com> To: Eivind Eklund Cc: Peter Wemm , current@FreeBSD.ORG Subject: Re: NFS HEADS UP (was Re: cvs commit: src/sys/nfs nfsm_subs.h xdr_subs.h) References: <199908191450.HAA43604@freefall.freebsd.org> <19990819175828.Q45123@bitbox.follo.net> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :On Thu, Aug 19, 1999 at 07:50:13AM -0700, Peter Wemm wrote: :> peter 1999/08/19 07:50:13 PDT :> :> Modified files: :> sys/nfs nfsm_subs.h xdr_subs.h :> Log: :> Convert all the nfs macros to do { blah } while (0) to ensure it :> works correctly in if/else etc. egcs had probably picked up most of the :> problems here before with "ambiguous braces" etc, but this should :> increase the robustness a bit. Based on an idea from Eivind Eklund. : :When I tested this, I got significant binary changes after changing :the macros to be . Writing a couple of test programs, I was not able :to get binary changes without actual semantic changes - the optimizer :optimize away do { ... } while(0); just fine. I didn't have any :testbed for NFS, which was why I didn't commit similar changes myself. : :Interpretation: NFS is likely to be different now than it was before :these commits. This hopefully mean less bugs, but we might also have :had bugs cancelling each other and 'mystery fixes' that no longer :work. If you get strange effects in NFS in the upcoming time, you :might try flipping this commit. : :I still think the change is a good and necessary one. : :Eivind. The compiler optimizes differently, that's all. The same thing happened when we fixed the macros in vm_map.h. In that case we also found a bug in i386/include/globals.h --- the inline assembly macros are missing the "memory" side effect specification and the code was trying to optimize global references across subroutine calls! I'll send Luoqi another email. In the case of the NFS stuff, the changes have been pretty well tested so I think we are in the clear. -Matt Matthew Dillon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message