<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149089>149089</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang][OpenMP] Crash with Fujitsu 0489_0129
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:openmp
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
eugeneepshteyn
</td>
</tr>
</table>
<pre>
The test 0489_0129 was removed from Fujitsu tests repository as invalid OpenMP test, but flang shouldn't crash when trying to compile it. (You can still find this test in Fujitsu git repository history.)
```
subroutine s1(n1,n2,nn,k)
integer:: nn(n1:n2)
interface max
function max(m1,m2)
character ::m1,m2
end function
end interface
!$omp parallel do reduction (max: k), reduction(min:k1,k2 )
do n=n1,n2
k=k+2
nn(n)=k
end do
!$omp end parallel do
if (nn(n1)/=-2147483646) print *,201,nn(n1)
if (k/=0) print *,202,k
end
parameter(n1=1,n2=10)
integer:: nn(n1:n2)
k=0
call s1(n1,n2,nn,k)
print *,'pass'
end
```
Compile with `-c -fopenmp`.
Subset of backtrace just before the crash:
```
#10 0x0000000006d6643f Fortran::common::openmp::genEntryBlock(mlir::OpBuilder&, Fortran::common::openmp::EntryBlockArgs const&, m
lir::Region&) (flang+0x6d6643f)
#11 0x0000000005735bc3 genStandaloneDo(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::lower::StatementCont
ext&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveW
ithClauses<Fortran::lower::omp::Clause>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*) OpenMP.cpp:0
:0
#12 0x000000000573c076 genOMPDispatch(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsC
ontext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveWithClauses<Fortran::lower::omp::Clau
se>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*) OpenMP.cpp:0:0
#13 0x00000000057309f5 createBodyOfOp(mlir::Operation&, OpWithBodyGenInfo const&, llvm::SmallVector<tomp::DirectiveWithClauses<Fo
rtran::lower::omp::Clause>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*) OpenMP.cpp:0:0
#14 0x0000000005731be1 genParallelOp(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsCo
ntext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveWithClauses<Fortran::lower::omp::Claus
e>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*, mlir::omp::detail::Clauses<mlir::omp::AllocateCla
useOps, mlir::omp::IfClauseOps, mlir::omp::NumThreadsClauseOps, mlir::omp::PrivateClauseOps, mlir::omp::ProcBindClauseOps, mlir::
omp::ReductionClauseOps>&, Fortran::common::openmp::EntryBlockArgs const&, Fortran::lower::omp::DataSharingProcessor*, bool) Open
MP.cpp:0:0
#15 0x0000000005732124 genStandaloneParallel(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::lower::Stateme
ntContext&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::Dire
ctiveWithClauses<Fortran::lower::omp::Clause>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*) OpenMP
.cpp:0:0
#16 0x000000000573ce32 genOMPDispatch(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsC
ontext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveWithClauses<Fortran::lower::omp::Clau
se>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::omp::Clause> const*) OpenMP.cpp:0:0
#17 0x0000000005742854 genOMP(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsContext&,
Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPLoopConstruct const&) OpenMP.cpp:0:0
#18 0x0000000005742f12 Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::s
emantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&) (flang+0x5742f12)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWFtv27gS_jX0CxGDoi6WHvwgy_VBgeYkaIpzsE8LShpJrClSICkn-fcL6uLY3qTptrvNFrtGUVviXL75ZoackBnDawmwRuEGhdsF622j9Br6GiRAZxoLj3KRq_Jx_akBbMFYTII4-ZV4NMH3zGANrTpAiSutWrzrP3Nr-kHOLXXKcKv0I2YGc3lggpf4pgN5fTuIIJrhvLe4EkzW2DSqF6VEdGVxoZlp8H0DElv9yGWNrcKFajsuAHO7xIjGv6geF0xiY7kQuOKyxLbhZgTJ5RFMze0plIYb971ENEEkRRGZ_pHU9LlWveUSsPEQjaWHaCap-08imu1HDS4t1KCRnyI_xW7FCfqpE5zXdcUKwC17QCTFGFe9LCxXcnhD49bZbSdxXDRMs8KCxqPJeXXQBFketRFJ3ePRvkNPPUQD1Xa4Y5oJAQKXCmso-9Gfc8YeHM4BPM3w06Jb4xL56d453FM84ikVlsjfzrE7FHvkb_eIboanMWAn616OkEp1hsW9OsHjOKkclJkrh2SH_O0V9YJVEPtRECGa4E5zaTGiKaIZJd5E-6Qw29iPquT3CnRI0QDIoSGpg9CCBT1laDuF5G898nWp3A-eSFowIb5UEqdAEF11zBhEV09YTmosm2r4ntsGo4hcFfiqUh3ItkMRWY7I7_rcgMWqwjkr9la7YvrcG4tzqJQGbBsYO8QhP7ePqO8RTB7I_InKKAr8Cu-UtprJMdZCta2afk_Oh981yHfS6seNUMXeFYjgEzs33abnonRkRq6Ovsrck61U1wYXSrqeH_RbRNKj8Y9QDwU5lAGi8bAfILohDxP64f0YnHcaXLjyw7zwcQ3yzjJZMqEkbBWi8Rk-oe7nLKe5cXzaTMkDaPt8PCfyd4_tNeteE7LMQgvSWbUu7Q_2OQ0DLZOWF2bSmh-d1gsqJ066yk6sHpjomZ0Zy_BTlj6oYlrIsBCHdnLUMiH-B4VVGvmZVXN6tlxDYfkB_u96wTaZYL0Bg_zsJQxH1VEU-e-cJ9Ij_91Zdp_z8Y0OZrupq4Hx7FgWnZMayt1PyVwZ9KIyCrKKXGXcXN9uuemYLZofUhgvphmR9M0z_cez4A7GN8-0S_Orn6kO_Is6IEkV4kIDs7BR5eNNddNdbG2gT0m-6VwETvQ_IN_LSp0F_B1kI5L-FG11TvbEanDBqpeD57rrdjroB1LfsLkcuz9fcxl3WvzgfJ9GehQswTIuTpWc_WcEUyEcO5AJhkjaG7jpzAs231ejpZcl_tu3nxoNrDSvSd5qfhi9viKmig2X5QtybgeeRT_Og_CTrMvDnzLdvJqXLbPsrmGay9pBBmOUnpKTKyXmpkQkvejLqRvDi26kHg3Op6C5L99oFhq68QuDzd9xFnKT_vf02Fts2oikz9VHdDkLgU__nYX-ebPQ6rwOAhqHwVQHb3xcnyQfkfQb8n-m0TFt4Gmek9e3H5TqMkei7gt7kqZn6ZzYii_Zqjz6IjLH4mDp6OXHMOomhr9m73yF0efZPPtzfeLMvccXFxOLcu2XiZ-wBay9VUijFaFJtGjWJUuSgCW-75d5GVfE84JilfgRS5ISSEwWfE0JDcnKizwaen60jEjk5TSI4zj0qrCMUECgZVwsXfMvla4X3Jge1l6QkDhZCJaDMMMNJ6Uj1uNBTikKtwu9dppXeV8bFBDBjTVPtiy3YrgfHVXDLQo3094bbnE2XlRy2xzvG4_3o4tei3VjbTckiu4Q3dXcNn2-LFSL6G7Yq8avq06rz-BKaDdgN4juJviHNf0tAAD__6AdmHM">