- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The following simple code compiled using Intel Fortran compiler 17 update 1 and no optimization (/Od option) generates a linker error I have never seen before, "unresolved external symbol ????": With optimization (/O), compilation of the main program results in an internal compiler error.
module m
implicit none
private
type :: t
private
procedure(Ifoo), nopass, pointer :: m_foo_ptr => foo
contains
private
procedure, nopass :: foo
procedure, pass(this), public :: bar
end type t
abstract interface
pure subroutine Ifoo( this )
import :: t
implicit none
!.. Argument list
type(t), intent(inout), optional :: this
end subroutine Ifoo
end interface
interface t
module procedure construct_t
end interface t
public :: t
contains
function construct_t( foo_ptr ) result( new_t )
!.. Argument list
procedure(Ifoo), optional :: foo_ptr
!.. Function result
type(t) :: new_t
if ( present( foo_ptr ) ) then
new_t%m_foo_ptr => foo_ptr
end if
return
end function construct_t
pure subroutine foo( this )
!.. Argument list
type(t), intent(inout), optional :: this
if ( present(this) ) then
end if
return
end subroutine foo
subroutine bar( this )
!.. Argument list
class(t), intent(inout) :: this
if ( associated(this%m_foo_ptr) ) then
call this%m_foo_ptr( this )
end if
return
end subroutine bar
end module m
program p use m, only : t implicit none type(t) :: foo call foo%bar() stop end program p
Here's the information on the linker error:
C:\..>ifort /c /Od /standard-semantics /stand /warn:all m.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R ) 64, Version 17.0.1.143 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. C:\..>ifort /c /Od /standard-semantics /stand /warn:all p.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R ) 64, Version 17.0.1.143 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. C:\..>link /out:p.exe /subsystem:console p.obj m.obj Microsoft (R) Incremental Linker Version 14.00.24215.1 Copyright (C) Microsoft Corporation. All rights reserved. p.obj : error LNK2001: unresolved external symbol ???? p.exe : fatal error LNK1120: 1 unresolved externals
Here're the details of the internal compiler error, shown with /O1 optimization but the error occurs with all three levels:
C:\..>ifort /c /O1 /standard-semantics /stand /warn:all m.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R ) 64, Version 17.0.1.143 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. C:\..>ifort /c /O1 /standard-semantics /stand /warn:all p.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R ) 64, Version 17.0.1.143 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. fortcom: Fatal: There has been an internal compiler error (C0000005). compilation aborted for p.f90 (code 1)
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have never seen that one either. Thank you for reporting this and for the reproducer. I reproduced both issues and escalated them to Development.
(Internal tracking id: DPD200416660 - internal compiler error)
(Internal tracking id: DPD200416661 - link error unresolved external symbol ????)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page