On Thu, Aug 13, 2015 at 7:47 PM, Mike Stump <mikest...@comcast.net> wrote: > 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.
GCC is always used to build stage2+ so I don't see the need to handle alternate host compilers. > 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.