Skip to content

Commit c9ef535

Browse files
committed
New Intel bug test case
1 parent adf91a3 commit c9ef535

File tree

8 files changed

+552
-415
lines changed

8 files changed

+552
-415
lines changed

intel-bugs/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ include(testing)
55

66
project(intel-bugs Fortran)
77

8+
add_compiler_test(SOURCES intel-20200213.f90 RUN_ONLY PASS_REGULAR_EXPRESSION "COP")
89
add_compiler_test(SOURCES intel-20200125.f90 RUN_ONLY)
910
add_compiler_test(SOURCES intel-20191229.f90 RUN_ONLY)
1011
add_compiler_test(SOURCES intel-20191228.f90)

intel-bugs/intel-20200213.f90

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
!! Service Request Number: 04520865
2+
!!
3+
!! MISSING FINALIZATION OF POLYMORPHIC COMPONENT
4+
!!
5+
!! Section 7.5.6.2 (2018) indicates that finalization of an object occurs
6+
!! in the following order. First, user-defined final subroutines are invoked
7+
!! with the object. Second, finalizable non-inherited components are
8+
!! finalized. Third, the object parent type, if any, is finalized.
9+
!!
10+
!! In the following example the Intel compiler (17.0, 18.0, 19.1) fails to
11+
!! finalize the finalizable child component, resulting in a memory leak.
12+
!! A key ingredient in the error appears to be that the component is an
13+
!! allocatable polymorphic.
14+
!!
15+
!! $ ifort --version
16+
!! ifort (IFORT) 19.1.0.166 20191121
17+
!! $ ifort intel-20200213.f90
18+
!! $ ./a.out
19+
!! IN FINALIZE_CHILD: CHILD_COMPONENT ALLOCATED? T
20+
!! <=== SHOULD HAVE "IN FINALIZE_OBJECTA" HERE
21+
!! IN FINALIZE_PARENT
22+
23+
module objects
24+
25+
implicit none
26+
private
27+
28+
type, abstract, public :: object
29+
end type
30+
31+
type, extends(object), public :: objectA
32+
real, pointer :: data(:) => null()
33+
contains
34+
procedure :: init
35+
final :: finalize_objectA
36+
end type
37+
38+
contains
39+
40+
subroutine finalize_objectA(this)
41+
type(objectA), intent(inout) :: this
42+
!print *, 'IN FINALIZE_OBJECTA'
43+
write(*,'(a)',advance='no') 'O'
44+
end subroutine
45+
46+
subroutine init(this)
47+
class(objectA), intent(inout) :: this
48+
allocate(this%data(10))
49+
end subroutine
50+
51+
end module
52+
53+
module child_type
54+
55+
use objects
56+
implicit none
57+
private
58+
59+
type :: parent
60+
contains
61+
final :: finalize_parent
62+
end type
63+
64+
type, extends(parent), public :: child
65+
class(object), allocatable :: child_component
66+
contains
67+
procedure :: init
68+
final :: finalize_child
69+
end type
70+
71+
contains
72+
73+
subroutine finalize_parent(this)
74+
type(parent), intent(inout) :: this
75+
!print *, 'IN FINALIZE_PARENT'
76+
write(*,'(a)',advance='no') 'P'
77+
end subroutine
78+
79+
subroutine finalize_child(this)
80+
type(child), intent(inout) :: this
81+
!print *, 'IN FINALIZE_CHILD: CHILD_COMPONENT ALLOCATED?', allocated(this%child_component)
82+
write(*,'(a)',advance='no') 'C'
83+
end subroutine
84+
85+
subroutine init(this)
86+
class(child), intent(inout) :: this
87+
allocate(objectA :: this%child_component)
88+
select type (cc => this%child_component)
89+
type is (objectA)
90+
allocate(cc%data(10))
91+
end select
92+
end subroutine
93+
94+
end module
95+
96+
program main
97+
use child_type
98+
call run
99+
contains
100+
subroutine run
101+
type(child) :: c
102+
call c%init
103+
end subroutine
104+
end program
105+

intel-bugs/log-17.0.7.txt

Lines changed: 0 additions & 100 deletions
This file was deleted.

intel-bugs/log-17.0.8.txt

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
Test project /home/nnc/Fortran/fortran-compiler-tests/intel-bugs/build
2+
Start 1: intel-20200213-run
3+
1/46 Test #1: intel-20200213-run ...............***Failed Required regular expression not found.Regex=[COP
4+
] 0.00 sec
5+
Start 2: intel-20200125-run
6+
2/46 Test #2: intel-20200125-run ............... Passed 0.00 sec
7+
Start 3: intel-20191229-run
8+
3/46 Test #3: intel-20191229-run ...............***Failed 0.00 sec
9+
Start 4: intel-20191228-exe
10+
4/46 Test #4: intel-20191228-exe ...............***Failed 0.21 sec
11+
Start 5: intel-20191228-run
12+
Failed test dependencies: intel-20191228-exe
13+
5/46 Test #5: intel-20191228-run ...............***Not Run 0.00 sec
14+
Start 6: intel-20190909-obj
15+
6/46 Test #6: intel-20190909-obj ...............***Failed 0.21 sec
16+
Start 7: intel-20190903b-obj
17+
7/46 Test #7: intel-20190903b-obj .............. Passed 0.34 sec
18+
Start 8: intel-20190903-obj
19+
8/46 Test #8: intel-20190903-obj ............... Passed 0.29 sec
20+
Start 9: intel-20190901-obj
21+
9/46 Test #9: intel-20190901-obj ...............***Failed 0.21 sec
22+
Start 10: intel-20180222-run
23+
10/46 Test #10: intel-20180222-run ...............***Failed 0.00 sec
24+
Start 11: intel-20180221-run
25+
11/46 Test #11: intel-20180221-run ...............***Failed 0.00 sec
26+
Start 12: intel-20180117-run
27+
12/46 Test #12: intel-20180117-run ...............***Failed Required regular expression not found.Regex=[5 9
28+
] 0.00 sec
29+
Start 13: intel-20180115-run
30+
13/46 Test #13: intel-20180115-run ...............***Failed Required regular expression not found.Regex=[5 'fubar'
31+
] 0.00 sec
32+
Start 14: intel-20171126-exe
33+
14/46 Test #14: intel-20171126-exe ...............***Failed 0.21 sec
34+
Start 15: intel-20171126-run
35+
Failed test dependencies: intel-20171126-exe
36+
15/46 Test #15: intel-20171126-run ...............***Not Run 0.00 sec
37+
Start 16: intel-20171115-obj
38+
16/46 Test #16: intel-20171115-obj ............... Passed 0.27 sec
39+
Start 17: intel-20171023-run
40+
17/46 Test #17: intel-20171023-run ............... Passed 0.00 sec
41+
Start 18: intel-20171019-run
42+
18/46 Test #18: intel-20171019-run ............... Passed 0.00 sec
43+
Start 19: intel-20171018-obj
44+
19/46 Test #19: intel-20171018-obj ............... Passed 0.27 sec
45+
Start 20: intel-20150601-run
46+
20/46 Test #20: intel-20150601-run ............... Passed 0.00 sec
47+
Start 21: intel-20150531-obj
48+
21/46 Test #21: intel-20150531-obj ............... Passed 0.31 sec
49+
Start 22: intel-20141014-run
50+
22/46 Test #22: intel-20141014-run ............... Passed 0.00 sec
51+
Start 23: intel-20140618a-run
52+
23/46 Test #23: intel-20140618a-run .............. Passed 0.00 sec
53+
Start 24: intel-20140618b-run
54+
24/46 Test #24: intel-20140618b-run .............. Passed 0.00 sec
55+
Start 25: intel-20140617-run
56+
25/46 Test #25: intel-20140617-run ............... Passed 0.00 sec
57+
Start 26: intel-20140616-run
58+
26/46 Test #26: intel-20140616-run ............... Passed 0.00 sec
59+
Start 27: intel-20140610-run
60+
27/46 Test #27: intel-20140610-run ............... Passed 0.00 sec
61+
Start 28: intel-20140609-obj
62+
28/46 Test #28: intel-20140609-obj ............... Passed 0.36 sec
63+
Start 29: intel-20140424-run
64+
29/46 Test #29: intel-20140424-run ............... Passed 0.00 sec
65+
Start 30: intel-20140420-obj
66+
30/46 Test #30: intel-20140420-obj ............... Passed 0.27 sec
67+
Start 31: intel-20140109-obj
68+
31/46 Test #31: intel-20140109-obj ............... Passed 0.31 sec
69+
Start 32: intel-20131030-run
70+
32/46 Test #32: intel-20131030-run ............... Passed 0.00 sec
71+
Start 33: intel-20130802-obj
72+
33/46 Test #33: intel-20130802-obj ............... Passed 0.25 sec
73+
Start 34: intel-20130802a-obj
74+
34/46 Test #34: intel-20130802a-obj .............. Passed 0.28 sec
75+
Start 35: intel-20130330a-obj
76+
35/46 Test #35: intel-20130330a-obj .............. Passed 0.29 sec
77+
Start 36: intel-20130330b-obj
78+
36/46 Test #36: intel-20130330b-obj .............. Passed 0.29 sec
79+
Start 37: intel-20121014-run
80+
37/46 Test #37: intel-20121014-run ............... Passed 0.00 sec
81+
Start 38: intel-20121013a-run
82+
38/46 Test #38: intel-20121013a-run .............. Passed 0.00 sec
83+
Start 39: intel-20121013-obj
84+
39/46 Test #39: intel-20121013-obj ............... Passed 0.21 sec
85+
Start 40: intel-20121008-run
86+
40/46 Test #40: intel-20121008-run ............... Passed 0.00 sec
87+
Start 41: intel-20121007a-obj
88+
41/46 Test #41: intel-20121007a-obj .............. Passed 0.29 sec
89+
Start 42: intel-20121007b-run
90+
42/46 Test #42: intel-20121007b-run .............. Passed 0.00 sec
91+
Start 43: intel-20121006-obj
92+
43/46 Test #43: intel-20121006-obj ............... Passed 0.28 sec
93+
Start 44: intel-20121006a-obj
94+
44/46 Test #44: intel-20121006a-obj .............. Passed 0.30 sec
95+
Start 45: intel-20121006b-obj
96+
45/46 Test #45: intel-20121006b-obj .............. Passed 0.38 sec
97+
Start 46: intel-20121001-run
98+
46/46 Test #46: intel-20121001-run ............... Passed 0.00 sec
99+
100+
74% tests passed, 12 tests failed out of 46
101+
102+
Label Time Summary:
103+
intel-bugs = 5.90 sec (46 tests)
104+
105+
Total Test time (real) = 5.92 sec
106+
107+
The following tests FAILED:
108+
1 - intel-20200213-run (Failed)
109+
3 - intel-20191229-run (Failed)
110+
4 - intel-20191228-exe (Failed)
111+
5 - intel-20191228-run (Not Run)
112+
6 - intel-20190909-obj (Failed)
113+
9 - intel-20190901-obj (Failed)
114+
10 - intel-20180222-run (Failed)
115+
11 - intel-20180221-run (Failed)
116+
12 - intel-20180117-run (Failed)
117+
13 - intel-20180115-run (Failed)
118+
14 - intel-20171126-exe (Failed)
119+
15 - intel-20171126-run (Not Run)

0 commit comments

Comments
 (0)