1! { dg-do compile } 2! Tests the fix for PR30554, the USE statements in potential_energy 3! would cause a segfault because the pointer_info for nfree coming 4! from constraint would not find the existing symtree coming directly 5! from atom. 6! 7! The last two modules came up subsequently to the original fix. The 8! PRIVATE statement caused a revival of the original problem. This 9! was tracked down to an interaction between the symbols being set 10! referenced during module read and the application of the access 11! attribute. 12! 13! Contributed by Tobias Burnus <burnus@gcc.gnu.org> 14 15MODULE ATOMS 16INTEGER :: NFREE = 0 17END MODULE ATOMS 18 19MODULE CONSTRAINT 20USE ATOMS, ONLY: NFREE 21CONTAINS 22 SUBROUTINE ENERGY_CONSTRAINT ( HESSIAN ) 23 REAL , DIMENSION(1:(3*NFREE*(3*NFREE+1))/2):: HESSIAN 24 END SUBROUTINE ENERGY_CONSTRAINT 25END MODULE CONSTRAINT 26 27MODULE POTENTIAL_ENERGY 28USE ATOMS 29USE CONSTRAINT, ONLY : ENERGY_CONSTRAINT 30END MODULE POTENTIAL_ENERGY 31 32MODULE P_CONSTRAINT 33USE ATOMS, ONLY: NFREE 34PRIVATE 35PUBLIC :: ENERGY_CONSTRAINT 36CONTAINS 37 SUBROUTINE ENERGY_CONSTRAINT ( HESSIAN ) 38 REAL , DIMENSION(1:(3*NFREE*(3*NFREE+1))/2):: HESSIAN 39 END SUBROUTINE ENERGY_CONSTRAINT 40END MODULE P_CONSTRAINT 41 42MODULE P_POTENTIAL_ENERGY 43USE ATOMS 44USE CONSTRAINT, ONLY : ENERGY_CONSTRAINT 45END MODULE P_POTENTIAL_ENERGY 46