gcc volatile behaviour
Robert J. Brown
rj@eli.elilabs.com
Sun Oct 10 00:00:00 GMT 1999
>>>>> "Zoltan" == Zoltan Kocsi <zoltan@bendor.com.au> writes:
Zoltan> I've contated Dennis Ritchie, and he wrote me that in his
Zoltan> oppinion the wording of the standard (WRT assignment
Zoltan> operators) is ambiguous. According to the standard
Zoltan> committee this ambiguity is deliberate and is not
Zoltan> ambiguity but freedom. I'm asking for the excercising of
Zoltan> this freedom in gcc the other way :-)
Actually, if you are indeed writing a C program, and not a gcc
program, then you need to write your source code in such a manner that
it always executed with the intended semantics regardless of which
compiler you are using. By you own admission in an earlier post, the
gcc/egcs team could change the behaviour at any time. I think a
coding for strcpy that would always give the correct behaviour would
be:
void srtcpy(volatile char* src, volatile char* dst) {
char ch;
for (ch = '\1'; /* force entry into loop the first time */
ch != '\0';
src++, dst++) {
ch = *src;
*dst = ch;
}
}
Since most modern C compilers do a very good job at optimizing simple
for loops, I expect this coding will generate code as efficient as any
other coding. I also think this will not generate any spurious or
surprising fetches from either the source or destination strings.
--
-------- "And there came a writing to him from Elijah" [2Ch 21:12] --------
R. J. Brown III rj@elilabs.com http://www.elilabs.com/~rj voice 847 543-4060
Elijah Laboratories Inc. 457 Signal Lane, Grayslake IL 60030 fax 847 543-4061
----- M o d e l i n g t h e M e t h o d s o f t h e M i n d ------
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
More information about the crossgcc
mailing list