flag_complex_method = 2 in C++?

Paolo Carlini pcarlini@suse.de
Thu Jul 5 17:59:00 GMT 2007


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.



More information about the Gcc mailing list