- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The issue has been fixed in the recently released Intel Fortran Compiler.
Latest Intel Fortran Compiler is available for download as part of oneAPI HPC Toolkit 2022.2
Download link (Click "Get It Now"): https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit.html
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Expect that Intel staff will pick up the "internal compiler error" from here.
And also the following variant of the case in the original post, this one might also aid in debugging:
module m
type, abstract :: a_t
logical :: ell = .false.
contains
procedure :: fun
end type
type, extends(a_t) :: b_t
end type
type :: c_t
class(a_t), pointer :: a
contains
procedure :: get
end type
type :: d_t
type(b_t) :: b
end type
contains
function fun(a) result(r)
class(a_t), intent(in) :: a
class(b_t), pointer :: r
r => null()
end function
function get(c) result(r)
class(c_t), intent(in) :: c
class(b_t), pointer :: r
r => c%a%fun()
end function
subroutine sub(c, a)
type(c_t), intent(in) :: c
type(d_t) :: d
d%b = c%get()
end subroutine
end module
C:\Temp>ifort /c /standard-semantics m.f90
Intel(R) Fortran Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210609_000000
Copyright (C) 1985-2021 Intel Corporation. All rights reserved.
04010002_1509
C:\Temp\m.f90(31): catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error.
compilation aborted for m.f90 (code 1)
C:\Temp>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi FF, thank you for taking your time simplifying this. Unfortunately your nice code is working for me, I have just compiled it without any error (see below).
1>------ Operación Compilar iniciada: proyecto: Fallo_compilador19, configuración: Debug Win32 ------
1>Compiling with Intel® Fortran Compiler Classic 2021.3.0 [IA-32]...
1>FortranFan_code.f90
1>Creating library...
1>
1>Build log written to "file://D:\temp\Fallo_compilador19\Fallo_compilador19\Debug\BuildLog.htm"
1>Fallo_compilador19 - 0 error(s), 0 warning(s)
========== Compilar: 1 correctos, 0 incorrectos, 0 actualizados, 0 omitidos ==========
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Daniel, I note the FF did a 64 bit build and you did 32 bit build. There are probably other build options that may be relevant.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@andrew_4619, thank you very much for pointing this out, you are right. My results are:
- @FortranFan's code compiles in 32 bit but it throws an ICE in 64 bit.
- On the other hand my original code throws an ICE in both 32 and 64 bit.
I will add this thread and conclusions to the ticket, just in case it helps the engineers.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wow, does it need to be that compilcated? So difficult to follow...you should read the Zen of Python!
I am not currently doing Fortran and even when I did, I did not use pointers much; but, I think I see a few things wrong and/or missing in your program.
I thought that when you used pointers, you also needed to declare the targets...and I don't see the word target anywhere in your program.
You functions with return values do not have what type is the result.
In your function get(c), your pointer r is a pointer to class(b_t) and not any of its attributes.
Oh, sorry, I did not see the attachment...I am replying to the explicit code above.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@German wrote:
Wow, does it need to be that compilcated? So difficult to follow...you should read the Zen of Python!
I am not currently doing Fortran and even when I did, I did not use pointers much; but, I think I see a few things wrong and/or missing in your program.
I thought that when you used pointers, you also needed to declare the targets...and I don't see the word target anywhere in your program.
You functions with return values do not have what type is the result.
In your function get(c), your pointer r is a pointer to class(b_t) and not any of its attributes.
Oh, sorry, I did not see the attachment...I am replying to the explicit code above.
@Germán ,
Note again what you refer to the explicit code is a "variant" of the code by @Daniel_Dopico in the original post.
The purpose here is only to make available to the Intel staff simple reproducers toward the internal compiler error (ICE). The premise being ICEs are compiler bugs that the Intel Fortran team will want to resolve. The code in such simple reproducers may make little sense but that's beside the point, it's the reproduction of ICE that is of interest.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear @Germán. As @FortranFan said, the code itself is not important. It will be useful for Intel because it triggers an "internal compiler error", therefore it is a bug in the compiler that Intel wants to fix (so do we).
The code doesn't need to make sense and it is not important if it is nonconforming with the standard or even if it is wrong and it should not compile.
Just for clarifying, the code I sent is a tiny extract of a much larger code with thousands of lines wich makes a lot of sense.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your report. I have escalated this to compiler engineering. It is still happening with the latest compiler.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The issue has been fixed in the recently released Intel Fortran Compiler.
Latest Intel Fortran Compiler is available for download as part of oneAPI HPC Toolkit 2022.2
Download link (Click "Get It Now"): https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit.html
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page