Hi Mark,
Paolo Carlini wrote:
Therefore, I'm not sure... I would certainly like to see method 2
becoming the default everywhere, on the other hand, I'm not sure if
method 2 isn't too slow as default for C89 (outside fast-math, I
repeat). Shall we carry out performance tests perhaps, or peak
performance outside fast-math aren't really an issue here? I don't know.
Performance tests would certainly be useful.
I totally agree. I would ask Richard to help here...
In case of doubt, I would still switch to method 2 as default together
with C++0x, in that case the reference C language is C99 and things are
very neat...
The problem is that this isn't how users think about it.
If a user does:
gcc test.c
g++ test.c
and gets different performance between the two, I think we're going to
have a "C++ is slow" bug report. In a certain sense, the user may be
right, in that C99/C++ mandate a slower approach than is used by GNU
C89. But, because GNU C89 is the default, we still have a problem.
I see your point. As you clearly see in your second sentence, I see
things slightly differently, I would not be much on the side of users
comparing the performance of C++0x to C89... But anyway this is just an
academic issue, for now...
Since C99 has defined semantics for this, and C++ is following, it seems
reasonable to me to change C89 to always use these semantics. Then,
some GNU C89 programs may go a bit slower, but we don't have weird
differences between the languages. And, users can use -ffast-math to
get the performance back -- in all languages, uniformly.
... assuming we can enable method everywhere, that would be great.
Ah, one final remark wrt C++0x: note that currently, irrespective of the
switches, there is *no way* for the user to choose method 2 in C++. I
think this is very bad in C++0x mode: essentially, as regards this
feature, it cannot track C99 as it *must*. I really hope we can enable
method 2 one way or another...
Paolo.