- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
While testing our code base with ifort v17, the following code compiles and executes correctly with ifort v16.0.2, but gives an internal compiler error with ifort v17.0
module mod_t
type t
integer val_t
contains
procedure, private :: t_ass_i
procedure, private, pass(expr) :: i_ass_t
generic :: assignment(=) => t_ass_i , i_ass_t
procedure, private :: t_plus_i
procedure, private, pass(b) :: i_plus_t
generic :: operator(+) => t_plus_i, i_plus_t
end type
contains
subroutine t_ass_i(var,expr)
class(t), intent(out) :: var
integer , intent(in) :: expr
var%val_t = expr
end subroutine
subroutine i_ass_t(var,expr)
integer , intent(out) :: var
class(t), intent(in) :: expr
var = expr%val_t
end subroutine
type(t) function t_plus_i(a, b)
class(t), intent(in) :: a
integer , intent(in) :: b
t_plus_i%val_t = a%val_t + b
end function
type(t) function i_plus_t(a, b)
integer , intent(in) :: a
class(t), intent(in) :: b
i_plus_t = b + a
end function
end module mod_t
program cata_1
use mod_t
type(t) :: a
integer :: b
a%val_t = 11
b = 31
b = b + a
print *, b
end program
this is the output with v16:
C:\dev\f95\bugs\intel>ifort tkr_5.f90
Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.2.180 Build 20160204
Copyright (C) 1985-2016 Intel Corporation. All rights reserved.
Microsoft (R) Incremental Linker Version 11.00.61030.0
Copyright (C) Microsoft Corporation. All rights reserved.
-out:tkr_5.exe
-subsystem:console
tkr_5.obj
C:\dev\f95\bugs\intel>tkr_5
42
and this is with v17:
C:\dev\f95\bugs\intel>ifort tkr_5.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. tkr_5.f90(1): 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 tkr_5.f90 (code 1) C:\dev\f95\bugs\intel>
I am not quite certain if perhaps we are violating TKR and the code only accidentally works in v16 (we had a few similar issues while testing our code with v17) but I am certain the compiler should not crash.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't see anything wrong with your code. Escalated as issue DPD200416722. Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Steve for the quick reply.
It's reassuring to know we didn't work with nonconformant code. So we'll stick with the v16 compiler until this is fixed, as it breaks an essential part of our code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have experimented further, and even this simplified version which is I think pure Fortran 95, without type bound procedures and generics crashes the v17 compiler:
module mod_t
type t
integer val_t
end type
interface operator(+)
module procedure i_plus_t
end interface
interface assignment(=)
module procedure i_ass_t
end interface
contains
subroutine i_ass_t(var,expr)
integer , intent(out) :: var
type(t), intent(in) :: expr
var = expr%val_t
end subroutine
type(t) function i_plus_t(a, b)
integer , intent(in) :: a
type(t), intent(in) :: b
i_plus_t%val_t = b%val_t + a
end function
end module mod_t
program cata_1
use mod_t
type(t) :: a
integer :: b
a%val_t = 11
b = 31
b = b + a
print *, b
end program
I can't help but having slight doubts about your QA procedures when releasing new compiler versions.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We run tens of thousands of tests, but there are infinite combinations of language usage and there are always some combinations we haven't seen before, and occasionally a fix for one problem will trigger a new one. I will add your second test program to the reported issue.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page