https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128104

            Bug ID: 128104
           Summary: valgrind error in gfc_copy_expr(gfc_expr*)
                    (expr.cc:339)
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

This F90 source code:

MODULE MOD1
TYPE TY(K1,K2,K3)
   INTEGER,KIND::K1,K2,K3
   INTEGER::ARR(K1)
   INTEGER::II=SELECTED_INT_KIND(K1+K2+K3)+1+1
   REAL::RR=SELECTED_INT_KIND(K1+K2+K3)
END TYPE
INTEGER::ARR_1(4:8)
TYPE(TY(LBOUND(ARR_1,1),LBOUND(ARR_1,1),LBOUND(ARR_1,1)))::OBJ
END MODULE

PROGRAM MAIN
USE MOD1
IMPLICIT NONE
OBJ%II=10
OBJ%ARR=10
IF(OBJ%II.EQ.10)THEN
PRINT*,"PASS"
ELSE
PRINT*,"ERROR"
END IF
END PROGRAM

when compiled by a recent valgrind version of gfortran
does this:

~ $ ~/gcc/results.20261020.valgrind/bin/gfortran -c -w
/home/dcb42/fujitsu/trunk/Fortran/0559/0559_0149.f90
==150385== Invalid read of size 8
==150385==    at 0x4AA2959: mpfr_set4 (set.c:58)
==150385==    by 0x4D1D3B: gfc_copy_expr(gfc_expr*) (expr.cc:339)
==150385==    by 0x4DD352: gfc_generate_initializer(gfc_typespec*, bool)
(expr.cc:5662)
==150385==    by 0x4A1E8E: gfc_find_derived_vtab(gfc_symbol*) (class.cc:2652)

Compiler source code is

     mpfr_set (q->value.real, p->value.real, GFC_RND_MODE);

git blame says:

b7e757713c17 gcc/fortran/expr.c  (Jerry DeLisle              2010-04-13
01:59:35 +0000  339)      mpfr_set (q->value.real, p->value.real,
GFC_RND_MODE);

The test case is from the fujitsu testsuite on github.com

Reply via email to