------- Comment #3 from kargl at gcc dot gnu dot org 2007-11-27 22:45 ------- (In reply to comment #2) > (In reply to comment #1) > > There is no bug here. You have explicitly disabled > > range checking. This means that you no longer have > > a limitation on range in constant folding. It may > > be help to look at -fdump-parse-tree. YOu don't > > have an Inf until you actually do the transfer. > > > > In that case it's a wrong code bug.
No! > With -fno-range-check you've told the > compiler to produce +Infinity rather than an overflow error. No! No! It does not say to produce a +Infinity. It says to produce whatever value fits into a floating point number with a p-bit significand and exponential range of [-IMAX, IMAX] where p depends on the type kind parameter and IMAX is either INT_MAX or LONG_MAX. The internal representation of a floating point constant is done with MPFR. > Instead, it takes it upon itself to produce something other > than what the source says [which is log(y), not log(some > expression that may or may not be called y)]. No! No! No! troutmask:kargl[205] cat a.f90 real, parameter :: y = exp(log(huge(y))+20) real, parameter :: x = log(y) print *, x, y end troutmask:kargl[206] gfc -fdump-parse-tree -fno-range-check a.f90 symtree: y Ambig 0 symbol y (REAL 4)(PARAMETER UNKNOWN-INTENT UNKNOWN-ACCESS UNKNOWN-PROC) value: 1.65093201e47 symtree: x Ambig 0 symbol x (REAL 4)(PARAMETER UNKNOWN-INTENT UNKNOWN-ACCESS UNKNOWN-PROC) value: 1.08722839e2 WRITE UNIT=6 FMT=-1 TRANSFER 1.08722839e2 TRANSFER 1.65093201e47 DT_END Do you see +Infinity? troutmask:kargl[209] cat a.f90 real, parameter :: x = 1. / 0. print *, x end troutmask:kargl[210] gfc -fdump-parse-tree -fno-range-check a.f90 symtree: x Ambig 0 symbol x (REAL 4)(PARAMETER UNKNOWN-INTENT UNKNOWN-ACCESS UNKNOWN-PROC) value: @Inf@ WRITE UNIT=6 FMT=-1 TRANSFER @Inf@ DT_END If one doesn't understand what a compiler option does, then it would be prudent not to use that option. -- kargl at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kargl at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34230