------- Comment #4 from burnus at gcc dot gnu dot org 2008-05-24 11:02 ------- CONFIRM. Due to the missing checking it works with openSUSE's 4.1, 4.2, 4.3; however, if one studies the source code, it is also wrong in other 4.x besides 4.4. The current test case fails only on systems where c_intptr_t == 8, but it can easily be modified to show the same problem on c_intptr_t == 4 systems by changing in
INTEGER :: global_length,local_start,local_end,nchnks END TYPE distributed_vector INTEGER into INTEGER(8) (which in turn fixes the program in -m64 systems). The original dump shows the problem: caininad_scale_distvec () integer(kind=8) D.1027; integer(kind=4) D.1026; integer(kind=4) D.1025; D.1023 = &pvazg; D.1025 = D.1023->local_start; D.1026 = D.1023->local_end; D.1027 = D.1026 - D.1025; // which is integer(8) = integer(4) - integer(4) D.1023->local_start; and D.1023->local_end; are used in: REAL, DIMENSION(handle1%local_start:handle1%local_end) ::multiply_dv_dv -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |ice-on-valid-code Known to fail| |4.4.0 Last reconfirmed|0000-00-00 00:00:00 |2008-05-24 11:02:06 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36316