The Operation 2*i with short integers (KIND=3, KIND=6) give incorrect values if the result exeeds the definded range for this types. The program example compiled with
g77 test.f give the following results: integer*1: 100+100=-56, 2*100=200 integer*2: 20000+20000=-25536, 2*20000=40000 The second one of each line ist mathematical correct, but outside the valid range of the data type. Test System was a Redhat Linux 4 Enterprise on Dual Opteron gcc-Version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4) Also seen with gcc 3.3.1 on Suse Linux 9.1 on Pentium M, and with cygwin gcc 3.3.3 on Xeon System. program short_int_test implicit none integer*1 i1 integer*2 i2 i1=100 print*, i1+i1, 2*i1 i2=20000 print*, i2+i2, 2*i2 end -- Summary: false arithmetic with short integers Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ralph dot doering at web dot de CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20473