Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751735AbVKJDj6 (ORCPT ); Wed, 9 Nov 2005 22:39:58 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751522AbVKJDj6 (ORCPT ); Wed, 9 Nov 2005 22:39:58 -0500 Received: from ms-smtp-03.nyroc.rr.com ([24.24.2.57]:48520 "EHLO ms-smtp-03.nyroc.rr.com") by vger.kernel.org with ESMTP id S1751519AbVKJDj5 (ORCPT ); Wed, 9 Nov 2005 22:39:57 -0500 Subject: Re: typedefs and structs From: Steven Rostedt To: Vadim Lobanov Cc: Andreas Schwab , "linux-os \\\\(Dick Johnson\\\\)" , linas , "J.A. Magallon" , Kyle Moffett , Douglas McNaught , linux-kernel@vger.kernel.org In-Reply-To: References: <20051107204136.GG19593@austin.ibm.com> <1131412273.14381.142.camel@localhost.localdomain> <20051108232327.GA19593@austin.ibm.com> <20051109003048.GK19593@austin.ibm.com> <20051109004808.GM19593@austin.ibm.com> <19255C96-8B64-4615-A3A7-9E5A850DE398@mac.com> <20051109111640.757f399a@werewolf.auna.net> <20051109192028.GP19593@austin.ibm.com> Content-Type: text/plain Organization: Kihon Technologies Date: Wed, 09 Nov 2005 22:39:41 -0500 Message-Id: <1131593981.14381.204.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.2.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1570 Lines: 41 On Wed, 2005-11-09 at 15:40 -0800, Vadim Lobanov wrote: > On Thu, 10 Nov 2005, Andreas Schwab wrote: > > > Vadim Lobanov writes: > > > > > However, if the code is as follows: > > > void foo (void) { > > > int myvar = 0; > > > printf("%d\n", myvar); > > > bar(&myvar); > > > printf("%d\n", myvar); > > > } > > > If bar is declared in _another_ file as > > > void bar (const int * var); > > > then I think the compiler can validly cache the value of 'myvar' for the > > > second printf without re-reading it. Correct/incorrect? > > > > Incorrect. bar() may cast away const. In C const does not mean readonly. > > In that case, I stand corrected. > > Is there any real reason to apply const to pointer targets, aside from > giving yourself a warning in the case you try to write the pointer > target directly? Seems to be a missed opportunity for optimizations > where the coder designates that it's okay to do so. Actually, where are you going to cache it? In a register? but calling bar() may use that register, so it would be stored on the stack anyway. I doubt that this is a problem with the compiler, since if bar _is_ small, then myvar is most likely already in the processor's cache to begin with, so it wouldn't need to go back out to memory, unless it was modified. -- Steve - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/