This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Flag-controlled type conversions/promotions


On Mon, Dec 26, 2011 at 05:14:46PM +0100, Dominique Dhumieres wrote:
> > I regression tested the patch on i686-*-freebsd.  No problems occurred.
> > Can one of the other gfortran reviewers/committers cast a quick glance
> > over the patch.  I would like to commit this within next day or two.
> 
> I have applied the patch on trunk (incremental update). I did not get any
> regression on x86_64-apple-darwin10 with either -m32 or -m64.

Thanks for testing.

> I get
> 
> 		=== gfortran Summary for unix/-m32/-finteger-4-integer-8 ===
> 
> # of expected passes		37336
> # of unexpected failures	896
> # of expected failures		39
> # of unresolved testcases	1
> # of unsupported tests		570
> 
> 		=== gfortran Summary for unix/-m64/-finteger-4-integer-8 ===
> 
> # of expected passes		37728
> # of unexpected failures	840
> # of expected failures		39
> # of unsupported tests		409
> 
> related to pr32770.
> 
> I did not have the time to go through the details of the failures, but
> (1) there are a few ICEs after error as in
> 
> FAIL: gfortran.dg/coarray/image_index_1.f90 -fcoarray=lib  -O2  -lcaf_single (internal compiler error)
> Excess errors:
> /opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90:14:0:0: error: mismatching comparison operand types
> integer(kind=4)
> integer(kind=8)
> one = _gfortran_caf_num_images.66 == 1;
> ...
> /opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90:14:0:0: error: mismatching comparison operand types
> integer(kind=8)
> integer(kind=4)
> D.2567 = D.2100 <= _gfortran_caf_num_images.66;
> /opt/gcc/work/gcc/testsuite/gfortran.dg/coarray/image_index_1.f90:14:0:0: internal compiler error: verify_gimple failed
> 
> These ICEs on invalid occur mostly in coarray tests, but I also see
> 
> FAIL: gfortran.dg/popcnt_poppar_2.F90  -O0  (internal compiler error)
> FAIL: gfortran.dg/popcnt_poppar_2.F90  -O0  (test for excess errors)
> Excess errors:
> /opt/gcc/work/gcc/testsuite/gfortran.dg/popcnt_poppar_2.F90:30:0:0: error: type mismatch in binary expression
> integer(kind=8)
> integer(kind=4)
> integer(kind=4)
> res = D.1935 + D.1938;
> /opt/gcc/work/gcc/testsuite/gfortran.dg/popcnt_poppar_2.F90:30:0:0: internal compiler error: verify_gimple failed
> 
> I think the errors are exepcted, but gfortran should exit without ICE.  I'll`
> fill a pr when the patch will be committed.

This is worrisome.  These types of options go from debugging aids to people
depending on them for production codes.   I'll seee if I can reproduce some
of yor observation to try to understand the issues.

> The manual could probably lists some expected breakages such as this one.

Good point.  I'll update the manual to indicate that these options are 
intended for debugging purposes and that there are known issues.

> 
> The difference between -fdefault-*-8 and -f*-4-*-8 should probably also be documented.
> 

It is documented for the -freal-* options.  The manual has, for example,

-freal-4-real-8
     Promote REAL(KIND=4) entities to REAL(KIND=8) entities. If KIND=8 is unavail-
     able, then an error will be issued.  All other real kind types are unaffected
     by this option.

The last sentence is the same for the other options.  This literally means
that only REAL(4) is effected by the -freal-4-real-8 option.  If one reads
he description of -fdefault-*, one will that -freal-4-real-8 is equivalent
to specifying both -fdefault-real-8 and -fdefault-double-8.

> Last point for this batch is that using '-freal-8-real-10 -freal-8-real-16' does not
> generate an error, the last option being the one used.

Yes, that is correct.  Consider it to be similar to '-Os -O -O2 -O0'.  The
last one wins.  Note, there is this combination: '-freal-4-real-8 -freal-8-real-16'
which will promote both REAL(4) and (8) to REAL(16).

-- 
Steve


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]