http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56204
--- Comment #2 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2013-02-13 11:19:37 UTC --- > --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-02-12 > 19:27:16 UTC --- > (In reply to comment #0) >> The test is l.34: >> >> 34 if (fp2 /= fp4) call abort() >> but unfortunately gdb 7.5 can read neither variable. > > Can you uncomment the existing "print" lines and add > print *, fp2 > print *, fp4 > before the abort line? Sure, this way I get > 1.00000000000000000000000000000000000< >1.00000000000000000000000000000000000< > 1.41421356237309504880168872420969798< >1.41421356237309504880168872420969798< 1.41421356237309504880168872420969798 1.41421356237309504880168872420969779 > Probably, some rounding goes wrong - maybe replacing > if (fp2 /= fp4) call abort() > by > if (abs (fp2 - fp4)/fp2 > epsilon(fp2)) call abort() > works which allows for a minor deviation of the value. This helps, but now we run into the next abort. Adding another set of print's shows 1.41421356237309504880168872420969798 1.41421356237309504880168872420969779 Changing the abort() conditions both times allows the test to pass, also tested with the prints commented again and the appropriate runtest invocation on i386-pc-solaris2.9, i386-pc-solaris2.10, and x86_64-unknown-linux-gnu. The quad_3.f90 test aborts here: #5 0x080511b1 in test_qp () at /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/quad_3.f90:28 28 if (a-b(1) /= 0.0_qp .or. c-b(1) /= 0.0_qp) call abort() Uncommenting the prints shows: same value read again: 1.18973149535723176508575932662800647E+0932 1.18973149535723176508575932662800647E+0932 difference: looks OK now -1.87718493982104061421441469311027910E+0898 Rainer