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