https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69918
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-02-23 CC| |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, what seems to be going on is that Solaris is the only target that adds -std=c99 in add_options_for_c99_runtime, and -std=c99 (as opposed to -std=gnu99) enables -fexcess-precision=standard, which on Solaris (but also on i386-linux) means there is more code. With -fexcess-precision=fast we e.g. get: _388 = (double) i1_63(D); _389 = (double) i2_335(D); _390 = _388 * _389; _391 = (long double) _390; _392 = __builtin_ceill (_391); while with -fexcess-precision=standard we get corresponding: _398 = (double) i1_63(D); _399 = (long double) _398; _400 = (double) i2_335(D); _401 = (long double) _400; _402 = _399 * _401; _403 = __builtin_ceill (_402); GCC is actually able to optimize even the latter, but only with --param max-ssa-name-query-depth=3 or higher (default is 2). Thus, for testsuite only fix for this PR, one possibility is add -fexcess-precision=fast to dg-options, another one is to add -param max-ssa-name-query-depth=3 to dg-options. Or, perhaps we could bump the max-ssa-name-query-depth default from 2 to 3. I'll bootstrap/regtest this last option on x86_64-linux and i686-linux, to see if it doesn't break anything. Richard, any preferences?