<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/72676>72676</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] !dbg attachment points at wrong subprogram for function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
luporl
</td>
</tr>
</table>
<pre>
Compiling some programs with `-g` cause this error.
This is a simple program that reproduces this issue (`ftest.f90`):
```
subroutine s1
integer, save :: i
!$omp threadprivate(i)
!$omp single
!$omp end single
end
subroutine s2
integer, save :: j
!$omp threadprivate(j)
end
```
Compile with: `flang-new -fopenmp -g -c ftest.f90`
Output:
```
!dbg attachment points at wrong subprogram for function
!10 = distinct !DISubprogram(name: "s2_", linkageName: "s2_", scope: !3, file: !3, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !2)
ptr @s2_
%omp_global_thread_num = call i32 @__kmpc_global_thread_num(ptr @6), !dbg !8
!8 = !DILocation(line: 5, column: 9, scope: !4)
!4 = distinct !DISubprogram(name: "s1_", linkageName: "s1_", scope: !3, file: !3, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !2)
!4 = distinct !DISubprogram(name: "s1_", linkageName: "s1_", scope: !3, file: !3, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !2)
error: failed to create the LLVM module
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new -fc1 -triple arm64-apple-macosx14.0.0 -emit-obj -fopenmp -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -target-cpu apple-m1 -target-feature +v8.5a -target-feature +aes -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +lse -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sha2 -target-feature +sha3 -target-feature +neon -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -debug-info-kind=line-tables-only -o tp_dbg.o -x f95-cpp-input tp_dbg.f90
#0 0x000000010047c68c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x10037c68c)
#1 0x000000010047a7ac llvm::sys::RunSignalHandlers() (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x10037a7ac)
#2 0x000000010047cd3c SignalHandler(int) (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x10037cd3c)
#3 0x0000000180891a24 (/usr/lib/system/libsystem_platform.dylib+0x180465a24)
#4 0x00000001004aa880 Fortran::frontend::CodeGenAction::executeAction() (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x1003aa880)
#5 0x00000001004a319c Fortran::frontend::FrontendAction::execute() (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x1003a319c)
#6 0x0000000100496ce8 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x100396ce8)
#7 0x00000001005ccc98 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x1004ccc98)
#8 0x00000001001073c4 fc1_main(llvm::ArrayRef<char const*>, char const*) (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x1000073c4)
#9 0x000000010010661c main (/Users/leandro.lupori/git/flang-luporl/buildr/bin/flang-new+0x10000661c)
#10 0x00000001804e9058
flang-new: error: unable to execute command: Segmentation fault: 11
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 18.0.0 (git@github.com:luporl/llvm-project.git 0591b6721008a5c7525e914674a27b2ba101f7e5)
Target: arm64-apple-darwin23.0.0
Thread model: posix
InstalledDir: /Users/leandro.lupori/git/flang-luporl/buildr/bin
flang-new: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-new: note: diagnostic msg: /var/folders/dn/0khgdg49685fyvmj1tfyp13c0000gp/T/tp_dbg-da2499
flang-new: note: diagnostic msg: /var/folders/dn/0khgdg49685fyvmj1tfyp13c0000gp/T/tp_dbg-da2499.sh
flang-new: note: diagnostic msg: Crash backtrace is located in
flang-new: note: diagnostic msg: /Users/leandro.lupori/Library/Logs/DiagnosticReports/flang-new_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
flang-new: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
flang-new: note: diagnostic msg:
********************
```
MLIR:
```
module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<!llvm.ptr, dense<64> : vector<4xi32>>, #dlti.dl_entry<i1, dense<8> : vector<2xi32>>, #dlti.dl_entry<i64, dense<64> : vector<2xi32>>, #dlti.dl_entry<i128, dense<128> : vector<2xi32>>, #dlti.dl_entry<f16, dense<16> : vector<2xi32>>, #dlti.dl_entry<f128, dense<128> : vector<2xi32>>, #dlti.dl_entry<f64, dense<64> : vector<2xi32>>, #dlti.dl_entry<i16, dense<16> : vector<2xi32>>, #dlti.dl_entry<i8, dense<8> : vector<2xi32>>, #dlti.dl_entry<i32, dense<32> : vector<2xi32>>, #dlti.dl_entry<"dlti.stack_alignment", 128 : i32>, #dlti.dl_entry<"dlti.endianness", "little">>, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:o-i64:64-i128:128-n32:64-S128", llvm.target_triple = "arm64-apple-darwin23.0.0", omp.is_gpu = false, omp.is_target_device = false, omp.version = #omp.version<version = 11>} {
func.func @_QPs1() {
%0 = fir.address_of(@_QFs1Ei) : !fir.ref<i32>
%1:2 = hlfir.declare %0 {uniq_name = "_QFs1Ei"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
%2 = omp.threadprivate %1#1 : !fir.ref<i32> -> !fir.ref<i32>
%3:2 = hlfir.declare %2 {uniq_name = "_QFs1Ei"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
omp.single {
omp.terminator
}
return
}
func.func @_QPs2() {
%0 = fir.address_of(@_QFs2Ej) : !fir.ref<i32>
%1:2 = hlfir.declare %0 {uniq_name = "_QFs2Ej"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
%2 = omp.threadprivate %1#1 : !fir.ref<i32> -> !fir.ref<i32>
%3:2 = hlfir.declare %2 {uniq_name = "_QFs2Ej"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
return
}
fir.global internal @_QFs1Ei : i32 {
%0 = fir.zero_bits i32
fir.has_value %0 : i32
}
fir.global internal @_QFs2Ej : i32 {
%0 = fir.zero_bits i32
fir.has_value %0 : i32
}
}
```
LLVM:
```
; ModuleID = 'FIRModule'
source_filename = "FIRModule"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-darwin23.0.0"
%struct.ident_t = type { i32, i32, i32, i32, ptr }
@_QFs1Ei = internal global i32 0
@_QFs2Ej = internal global i32 0
@0 = private unnamed_addr constant [21 x i8] c";FIRModule;s1_;1;1;;\00", align 1
@1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 20, ptr @0 }, align 8
@_QFs1Ei.cache = common global ptr null, align 8
@2 = private unnamed_addr constant [21 x i8] c";FIRModule;s1_;5;9;;\00", align 1
@3 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 20, ptr @2 }, align 8
@4 = private unnamed_addr constant %struct.ident_t { i32 0, i32 66, i32 0, i32 20, ptr @2 }, align 8
@5 = private unnamed_addr constant [21 x i8] c";FIRModule;s2_;9;1;;\00", align 1
@6 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 20, ptr @5 }, align 8
@_QFs2Ej.cache = common global ptr null, align 8
declare ptr @malloc(i64)
declare void @free(ptr)
define void @s1_() !dbg !4 {
%omp_global_thread_num = call i32 @__kmpc_global_thread_num(ptr @1)
%1 = call ptr @__kmpc_threadprivate_cached(ptr @1, i32 %omp_global_thread_num, ptr @_QFs1Ei, i64 4, ptr @_QFs1Ei.cache)
%omp_global_thread_num1 = call i32 @__kmpc_global_thread_num(ptr @3), !dbg !8
%2 = call i32 @__kmpc_single(ptr @3, i32 %omp_global_thread_num1), !dbg !8
%3 = icmp ne i32 %2, 0
br i1 %3, label %omp_region.body, label %omp_region.end
omp_region.body: ; preds = %0
br label %omp.single.region
omp.single.region: ; preds = %omp_region.body
br label %omp.region.cont, !dbg !8
omp.region.cont: ; preds = %omp.single.region
call void @__kmpc_end_single(ptr @3, i32 %omp_global_thread_num1), !dbg !8
br label %omp_region.end
omp_region.end: ; preds = %0, %omp.region.cont
%omp_global_thread_num2 = call i32 @__kmpc_global_thread_num(ptr @3), !dbg !8
call void @__kmpc_barrier(ptr @4, i32 %omp_global_thread_num2), !dbg !8
ret void, !dbg !9
}
define void @s2_() !dbg !10 {
%omp_global_thread_num = call i32 @__kmpc_global_thread_num(ptr @6), !dbg !8
%1 = call ptr @__kmpc_threadprivate_cached(ptr @6, i32 %omp_global_thread_num, ptr @_QFs2Ej, i64 4, ptr @_QFs2Ej.cache), !dbg !8
ret void, !dbg !11
}
; Function Attrs: nocallback nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #0
; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #0
; Function Attrs: nounwind
declare i32 @__kmpc_global_thread_num(ptr) #1
; Function Attrs: nounwind
declare ptr @__kmpc_threadprivate_cached(ptr, i32, ptr, i64, ptr) #1
; Function Attrs: convergent nounwind
declare i32 @__kmpc_single(ptr, i32) #2
; Function Attrs: convergent nounwind
declare void @__kmpc_end_single(ptr, i32) #2
; Function Attrs: convergent nounwind
declare void @__kmpc_barrier(ptr, i32) #2
attributes #0 = { nocallback nofree nosync nounwind willreturn }
attributes #1 = { nounwind }
attributes #2 = { convergent nounwind }
!llvm.module.flags = !{!0, !1}
!llvm.dbg.cu = !{!2}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 7, !"openmp", i32 11}
!2 = distinct !DICompileUnit(language: DW_LANG_Fortran95, file: !3, producer: "Flang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
!3 = !DIFile(filename: "tp_dbg.f90", directory: "/Users/leandro.lupori/work/i63933")
!4 = distinct !DISubprogram(name: "s1_", linkageName: "s1_", scope: !3, file: !3, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !2)
!5 = !DISubroutineType(cc: DW_CC_normal, types: !6)
!6 = !{!7, !7}
!7 = !DIBasicType(name: "void", encoding: DW_ATE_address)
!8 = !DILocation(line: 5, column: 9, scope: !4)
!9 = !DILocation(line: 7, column: 1, scope: !4)
!10 = distinct !DISubprogram(name: "s2_", linkageName: "s2_", scope: !3, file: !3, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !2)
!11 = !DILocation(line: 12, column: 1, scope: !10)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzke11z46iz96dRbii5BHqxfZGLxI53Uk-yM88ku__aKxdGSGYigQ6gzHg-_SlAkiVHdl4mmXNqz5THsaDp_nXTNM2LsFIs55See_GlFy_PcK23Qp4XdSVkcbYR6e58IcqKFYznQImSgkqKXOJSge9Mb4GXBH7uJQEguFYU6C1TgEop5MQLll5w4b7vTTFTAAPFyqromAC9xRpIWkmR1oQq154pVVPgoZmXBJmmSk-yeeAlgYfmXthwNI_uYx9VvZGi1oxToKArAoxrmlPpoQVQ-JEC0za8AKypBh6CHopEWQG9lRSnlWSPWFMPzZiR1IPfp1WM5wVtyvfFlKeDKsrTPoc-PtQyPQLw2xPmh_i-dfj2Yob2cN-u56jtKcPZ2LPAPPc5_Q78TFSUlxXwc-ATMDB0j8fnWle1PmZ3D8F0kwOsNSbbknINKsG4VgBr8F0K4zP1pu3sTEiQ1ZxoJnjXHAbAC5cgZUozTrTRenl91zXy0Izjklr0CCm09hAyBisYf8A5_XOsThFRNaUwNAUZKwbPBeP2GZoHveuI4671TZ9CVasC58o8L6_vvpiHJc0YZ1YRtAA1Z7phgbquqbQEXhQYWG1_xqKs1nkhNrhYuz5d87q0-hNcFICFyDRZrx_Kijwl9NCsYZoYKWgBGvN7CM46g84sP2vGG0GwwzhrVbYqElHUJTeP80N7RXvXRzB6TdfAE10D_3d1zb9YNRt7TWmGWUFToAUgkmJtQjMFNzd_34JSpHUbpr7cXF3cXZlBWjINMNjUuQnHQmrTcqt1ZQB4aOWhVc70tt5MiCg9tCqKx_aPX0nxjRLtoZWN3MpDK4B5ChgnRZ06yURitQUbTB60xIQ2s8OdxuQBpHVZdQEmmHjB_EsTMbDMaxNVlNNz9Zei0rAvKOapFBM7TTGHzUMrF9zc3OWh1aZmRSrND8a7Whf6CAS-lsxMRViWSeTjqiqoX2Ii1A8YTYJJAHxaMu2LzbdeqMyIKIT0U4ZzLpRmRAG_lLRoBppfipQWoGIE-BUjfkEfaQEQ8DWWOdU-qWrQSIJdYUaxrqWZ8C4fZ5MYj1VgqsaKiSRjxanQZkYdq8oqH8vycTZeB5OsLMaqCkXHiiUehSVJNYpLpuVYsdpidKQ8HCvnVPCx8p9klP1P8nNU27oojMbAT-mmzn3GM-E_MJ564dIMVV_jTUGVL3ixA74Aulqnm3wigP8DZPPYJ1XlM17Vuq0xc2cb6cMABD8C9w8GQTQlyYwAO2jsJK92yv34IhnXdhjcm3FhInVHJPH3tVBaUhOQEjPkGdcemtvU6L0Gg4cugx8wCEILsYsjRgd4oAOe4lEdvtb8juUcF58wTwsLavZxMA2KAUx0aOo0JGAAyKR0H2q5NBxCCnuQZsFsDjGKGtm1MqwKtvHQSu2UpqV7dL_XVYF1JmQ5SXeWxoiYBVESYxQNRERDrTGezQKwElJLzF23ZFJwbRJE-7QQKf2D8guXfdki-oOSWtOm6AP7zIIboI8P0IdwTk6hXzVPI_A_FLjBNQCeDIHPE0Jnp81uU3B5zZXGnNBxy79ccxMHPkhZq8tA2elA2ZgQMj-pbKPWXufHfQL6Ghuhi49SMrI6DJScDZSEwTQkEcgIXJeY8UE8vpAS777SzAsXZIslIIIrbcCGVzarHpR9kAKBxTdQYH6gQJJAAgz4DwJg-PdS6RAGg2gX0XkQN8uRfevwAnSpac3NzGoSzMZhABFlia07gDuam4zPug3IcF3YHBfCUwxtKWidquXWpsBpbWUpOyMYm9QmmXm0ZZQC1vPS-YEU8EilMkDgzKaEHpoZo0VBLxcOLzrb9bPhSc40COI53CRTBINghmMyjVFM5zBKphFG0w3aYBjAbErjTvK9TVOMTv20NMXyO-MoNBjaDRWzKAQ23TTUlVDsh6uyo6goaLpk8tfT5qdW50LbRco-BwalyvcbBOgXPr19h2ZlcnF_f7H4BO4_XYHV55ubz_-5_vMPsLq-uboD959t8eVff4CvV18-f73vMHyxO0qEKkVToEQtbWKlzJg0foGVEoRhTVMgaw4UkazSHYGkwKbzNAV4v-_xMhMYYz9iY7tMFKkzemqGUfCwzdM8miezONs9lt-gznYVDIkZM3nlodW9h1Yuj_RTjKL5oSf-LrETtX2V5MVwXQeY6qz3Ou856ac3bCOx3JlfIjcUy675V7taVf1QtfbCxT___POPf3vrL5f-p0-3t3d3XnhlyrdCabe0v5rYNekrMc7IVgjl1rSOgV3nu41MIqSkqhI8VSa67EQt3cL3aWR5yUh6r_E0tjV4e3P99dimntsgAFhryTa1pgp408u00GySFmtVUdLsMIX9Mi9c9Eoo13Jni6AJipNK223OlHJFvXCRRF54BYzuj5RoE8QX0Q8WIjOTusl0hBeDfRazJxzQ8xyS6BkUL-ABzaS6Z2IeX88lg8mASfImHu-C5F1s8uvasNkv926I-iws9Wt5eAjZImVW5GtcsJybbKTZ4oNoZhk2XE6zoDxlmHOqVNPaQ6hgWhfUPHcgMiYnKbWJzgPjaTO0EIYkSmcsKiIZNe0NpSEpcdVStduSZoilWON1gXei1m019U16Inzj9-FFEvnWecMLiGY-NzqYsjvrRns-bqdk3eyOtXCOZSOuoSirCVPrvKptgwwXivbKG5YpfWSEPqVok6wmqvSKvHDRr4TQGG26NPGoPUTJak4m5svunP__Lwq2C8I9DQAeit05gzEiTlNJlVqLzJCaVisFr5ht5PZTDZW0iX7T1X1G0AsvkGW2LVzvkQLbPSUjY3pZc_ZfazPHtMbr-COL3c0jY1LQHPjWaY9UL0axdWsBB89BM0YcHBs55CiEx3RsRZ9WPjyuPPofVd4o7A7ghj0PnCmoLBnHJgzstZku9w-S6lry7rivq3riXuhN7oWuvj3vXm_1Lcv8_6pv_Q7ljzmH7W53TGcPc6VdYHYBpZ0rTvjKTyrFesO0snNKR2OqtlitH3FRt53fzDuvAoGuvv0WEPsfY7nmzc3ft0cPkMNLcGvzzetl063T1fVXV-ShaXN8btdwa5Np9_u_R9hgcjMNMHPhL0yFfVYvnwcHSXustKyJnrCUcr12MPSussEJNJnK6B97wtuZ0333PWq57-S200MEggGl6_bnKJ0DtEO45say6dpEL7eLhbkGXnyJIPgB2MyLl4DYzOVyb_bwUsG1F17C5r_5xIugTQts_gRgJxG-ROJT0zmLgaCxEmjN1SsJOtNZvabLvfjZoREnBJOt61EiylLw1jymPa-LYqwtej9jxV54OX_eWOFvMRY6ZqzofcQnyRvlx-9icLRujP0C70x-i8HjU96Jrr69wTvtdztZNmJKXBSCeGhm17zzMcpHwVJDmklK3dWSJ4QZ43s6e9WhOWtpr51E_WnlHS-4wF7mYZKLPYuGoGExSEPW1nTpgIvrgWPIev3S5akLwJIIRE-rXM8MgY1yhW9QODx2o6eXd41wbK6c9dmc1hielONiDiNlBTht-ViHbo-2wUYCBl22ZlaMeEOLVpikORN8shHp7ljdwbW4w1Zhk7Kf-mcyhkrSVDVzctyH1pfZLAcmTsCB2INKkzoe8j0Ed0RKQ0IE1-NXsjqRfcojAscwA9fx7TBsep7y9F17_0Ct5zvMHd89319jHWYhPLHeM8Pq6CB427AaM-oGS8nsfYGmffScRdFxAZJqy39YPT_MmEdDLXoaamHwQbH26GXCXwm9yStDr13GjYfeblJ8ranbQ8PDdDq8BKvmGiq40FoqtxlvdNxg8gC4MFMi4ELtOAFc1Pw74yn4zoqivxI8mHHt5pndN1T4kU6qoOvBMPhI8a3P7OVLqrSQDQQ3rb8YhRM2lPAiT2qEwLcKealzDZdKjc90Ty_FQAR_pDKnXL9I536g7QBYWegdZD0T2T9c4CDqnZDWPxBCoVs-mvT3Nb67X9sOucEet6bREUrUUY7o-WTp3Jw_uSOtSVbgvJ2GoImmCDaTEYT7lk2bdJNPSD2kRk_5Bz2KLv-3d_fRkm7qHFzzTIC_mw1t1C0Pwr5AeMBkumfirp72Gg6hopGLzM2Fmr840x6aFZjnNc7tUePyP-ubiz__WDe3cebx2EXl5m2M5vYAWhkGrXz1udKsZD9p6i4ZN9v4suaalbTVMrxwqx9aMmUK_h9zycKqLgprlP5V7HB_YX3FrNO3-zwNgN79SociZdIe6ewaglNHx9-FfPDQiiXhPAwt7b__ErjhtzfqXffuyb2Rh2aENK6wWKy5kCUuWjDNPWuY9FklwyHQuua074XTvbhLrBhpJPXs56ZnayTKiUgZzxsUF_dX62bPvC_2Hd9jmJ9kNR2ygidZ_WtfV7H50kk7QfSMoeD-jme3y3uWnofpPJzjM3oOp0GAogCh4Gx7nsGAbKINDMKYTMMkRvM4xhTFdIpTlMDojJ2jAIUQwilM4mkQTLKMhHA-TeLNHNEkhV4U0BKzYmKjtZD5mX394HyKkmlyZhczyr7WhlDWhrB4eSbP7TWtTZ0rkzUxpdWeg2a6sO_CuaAXL7348nNF-e0XL16CN7_tdFbL4vztb1NYjf47AAD__8BrWGM">