On Fri, 2 Mar 2007, Camm Maguire wrote:

| > | C99 language semantics now assume that pointers to different types
| > | point to different memory locations, which is obvious nonsense, but
| > | part of the new standard.
| >
| > That statement is obviously untrue.
| >
| > The non-aliasing rule, which has always been there since I don't know
| > when -- certainly, it is part of C89, and it is not a C99 invention --
| > says that the following is undefined behaviour
| >
| >       double z;
| >       *(long*)&z = 1;
| >       printf ("%g", z);
| >
| > That makes perfect sense.  Why would you think it is nonsense?
| >
| > | You might want to add -fno-strict-aliasing option to the GCC command line.
| >
| > Instead of papering over the incorrectness, I would suggest to fix it.
| >
|
| Agreed.

Interestingly, ECL -- another CL implementation with KCL as
grandfather -- invokes GCC explicitly with -fstrict-aliasing, e.g. it
is explicitly askign the compiler to exploit aliasing rules, when
compiling generated C codes.

-- Gaby


_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to