This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: why are we not using const?



On Jun 29, 2006, at 6:51 AM, Dave Korn wrote:


That's cheating! You casted away const, it's a blatant aliasing violation,
you deserve everything you get. The compiler is specifically *allowed* to
assume you don't pull stunts like this *in order to* make const- optimisation
possible and useful.

As others have said, casting away const (and then dereferencing the pointer) is perfectly legal unless the underlying variable's definition is const.


However, you don't even need to do this to illustrate why const pointers can't be used for optimization:

int G;

void foo(const int *P1) {
  G = *P1 + 1;
}

int bar() {
   int tmp = G;
   foo(&G);
   return G-tmp;
}

bar returns 1, not 0, and there is no pointer casting happening.

-Chris


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]