Skip to content

[flang] issue in building cp2k 2025.1 #131579

@shivaramaarao

Description

@shivaramaarao

Following is the small reproducer that manifests the issue of building cp2k 2025.1 with flang (latest codebase as on 16th March)

rep1.f90:

MODULE M1
    TYPE T1
        REAL(KIND=4), DIMENSION(:, :), POINTER    :: ptr => Null()
    END TYPE T1

    TYPE O1
        TYPE(T1), POINTER           :: d => Null()
    END TYPE O1
END MODULE

MODULE M2
    USE M1,only : &
    o1_prv => o1

    public
    TYPE D1
        TYPE(o1_prv), PRIVATE        :: prv = o1_prv ()
    END TYPE D1
END MODULE

MODULE M3
    USE M2 , only : d1_prv => D1

    PUBLIC
    TYPE d1_ext
        TYPE(d1_prv), PRIVATE :: prv = d1_prv()
    END TYPE
END MODULE

rep2.f90

PROGRAM MAIN
    use m3, only : d1_ext
end program

Output

$ flang -c rep1.f90

$ flang -c rep2.f90
error: Semantic errors in /home/shivaram/reprod/rep2.f90
./m3.mod:8:38: error: Value in structure constructor of type 'REAL(4)' is incompatible with component 'prv' of type 'o1_prv'
  type(d1_prv),private::prv=d1_prv(prv=o1_prv(d=NULL()))
                                       ^^^^^^^^^^^^^^^^
././m2.mod:6:23: Declaration of 'prv'
  type(o1_prv),private::prv=o1_prv(d=NULL())
                        ^^^
./m3.mod:8:45: error: Keyword 'd=' may not appear in a reference to a procedure with an implicit interface
  type(d1_prv),private::prv=d1_prv(prv=o1_prv(d=NULL()))
                                              ^
./m3.mod:8:47: error: Null pointer argument requires an explicit interface
  type(d1_prv),private::prv=d1_prv(prv=o1_prv(d=NULL()))
                                                ^^^^^^

The error is not reproduced when rep2.f90 is part of rep1.f90

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions