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