On Aug 13, 2015, at 3:05 AM, Richard Biener <richard.guent...@gmail.com> wrote: > Ok, then guard the << >> with __GCC__ and do the expensive bit stuff > otherwise. Just to cater for other host compilers doing sth unsensibly > implementation defined.
Ick. The guard should be specific to the implementation defined semantic or undefined semantic, and then when compiling with gcc, we turn it on. My take is that when we do this, we should add the 5 or 10 other most popular compilers to the list of how they behave so that they all do the cheap path code as well. If the language standard were serious in this area, it would specify a header file that can define the implementation defined and undefined semantics that are interesting for portable code. It isn’t. If it were, we would then just use the standard defined guards. The language standard should be improved to directly state the possible implementation choices and to require the implementation to communicate to the program which choice it made.