<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/135964>135964</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang][OpenACC] Flang asserts when using `routine`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          erichkeane
      </td>
    </tr>
</table>

<pre>
    see: 
https://godbolt.org/z/bhaaxPcn9

```
! Type your code here, or load an example.

integer function square(x)
    implicit none
    integer, intent(in) :: x

    square = x * x
end function square

!$acc routine(square) bind(asdf) 
```

This is something that is supposed to be valid AFAIK, but Fortran asserts:
```
fatal internal error: CHECK(parent_ != this) failed at /root/llvm-project/flang/include/flang/Semantics/scope.h(82)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-llvmflang-trunk/bin/flang -fc1 -fopenacc -emit-fir -o /app/output.s <source>
 #0 0x0000000003da79b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3da79b8)
 #1 0x0000000003da5574 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x00007508a0242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007508a02969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x00007508a0242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x00007508a02287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x0000000005a8f0d9 (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x5a8f0d9)
 #7 0x0000000004c00e6a (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c00e6a)
 #8 0x0000000004c0a34c Fortran::semantics::AccAttributeVisitor::AddRoutineInfoToSymbol(Fortran::semantics::Symbol&, Fortran::parser::OpenACCRoutineConstruct const&) (.part.0) resolve-directives.cpp:0:0
 #9 0x0000000004c0a7a7 Fortran::semantics::AccAttributeVisitor::Pre(Fortran::parser::OpenACCRoutineConstruct const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c0a7a7)
#10 0x0000000004c395a1 Fortran::semantics::ResolveAccParts(Fortran::semantics::SemanticsContext&, Fortran::parser::ProgramUnit const&, Fortran::semantics::Scope*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4c395a1)
#11 0x00000000048a8d97 Fortran::semantics::ResolveNamesVisitor::Pre(Fortran::parser::ProgramUnit const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x48a8d97)
#12 0x00000000048aa271 Fortran::semantics::ResolveNames(Fortran::semantics::SemanticsContext&, Fortran::parser::Program const&, Fortran::semantics::Scope&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x48aa271)
#13 0x0000000004914956 Fortran::semantics::Semantics::Perform() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x4914956)
#14 0x0000000003dffead Fortran::frontend::FrontendAction::runSemanticChecks() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3dffead)
#15 0x00000000040ae190 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x40ae190)
#16 0x0000000003dfeb55 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3dfeb55)
#17 0x0000000003ded617 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3ded617)
#18 0x0000000003e08943 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x3e08943)
#19 0x000000000218375e fc1_main(llvm::ArrayRef<char const*>, char const*) (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x218375e)
#20 0x000000000204cf5f main (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x204cf5f)
#21 0x00007508a0229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#22 0x00007508a0229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#23 0x0000000002182085 _start (/opt/compiler-explorer/clang-llvmflang-trunk/bin/flang+0x2182085)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WE1v4zgS_TX0pWBDoj4sHXxQO3FPMIvdoN07V4OiShY3EqklqbSzv35BSm7F7iDdmfEEDiBSqlfvVRU_mTHiKBE3JPlEkrsFG2yj9Aa14M0TMomLUlUvG4NIogJIUDTW9oZEBaE7QndHVZWqtSulj4Tu_kformwYOz1ymZOgcL80mH5BQWgIX196hBc1aOCqQmhQI6FbUBpaxSpgEvDEur7F1WgvpMUjaqgHya1QEsx_B-ZsshOhzgcAgOj6VnBhQSqJ577R0IG7R2kJzYQkNAdHPirgNDpw346YQKI7OAGh4zuU1Q9eR0k0JDRmnINWgxXSkTmzyqEUsiI0Y6aqvbOrEATF10YYEAaM6tA2Qh7BNsz6nqHvlcEKrIIS4Zm1ooJiVzz87lSUg4Wd0lYzCcwY1Nan4RK_Zpa1XrCWrAXUWmkndvvb_fZ3QrOeaZT2AE5DdAe2EcaxrJlosQJmgdCdVsoSumvb527Za_Uf5K5Zt0y6HAvJ26HCVz177Ji0ghtCd4arHlcNoVlGx_w8_uO-2N-DGcpOWGBQDkfQ2CttncyrahK2GcoVV93k_0cawpgBnSdgsoKJDNgGgWtmGigZf7KacV8_e8v4E1RD14-RClYkyB-1OmrWAdPHoUPpo-hkq97hc9X1okW9xFPfKu0KaMed0KUj4iUvrR7kkyt1V09jGGBZ8xCWtepRuspYYifsshYalsqBs753LgbbD3ZlgERbowbNkUT3rgYJjQIITsH5L6rYOi8z8DHw5WpezPjwqIW0XthXJ5PQbP5Is28HZaxG1hGaTqXvq5Bmf1UhoZ-C08RrGnmERuEV6yRZx7AXR8na35isWoeeeRJbMOIoZK0OltDCtZ-VqPxjPlmYFe9dpgL_Pzqgk4N1EmQsoDFNaDDJaUVJ6O6UpYc0XrZCDqflUQ7jC74yapV6zt5kZhxdAuZpXnPobaORVYcn0bYfQ_f2M3p8TTdep3A0Xt5HacfrdAZOLoFptq4jYKUbRh-C9YYzbPo6fwnL6qC6XbVMeLO39WtvMQ8CTNnNvE14s7fsyhuLYn6eQadB9X3m8s2C88JaLcrB4h_CCOvnTveiqr6MU_2DrNVXtX_pStUSmr2Hdv7Ij8OLD3umDU7Q_-pRFtvtBL9V0lg9cAvcPXljn49Vz7RduTIGjUa1z7ishEZuxTO-NWzya-1rtv5z2h_9YvtX-d8qw07HmGE3-QSXKqM8YeG7Kr-MsSs4f2Ru_fxJBs_NrZIWT_ZnuZxWln9L8Vr_9l1Ge7dgTrPg7eLkIzHH6WKWjjOWVfn71TDF6Z-sQ_ORang7AjdUNnKfldErZYyuf6kCvLK_J_0fTf2tA-RCMAcoughQHsZ5kr7P6rL5iLpWuvP8bkhzJDLTjC_3EXWNrLqkWWuXBVmNrd3UKvz2fNr9DPJMftsgfzI3Jj3RmkknF7ENGIZ58B7prarwM8rXnEs8Crn3W8GdaHF6deNgj8xm3ulVsLFMko8G-4r49VC6Fj6yf5DGMsnxrcHxtssH2Q_WOfhbppNJ-xyZ9WVksErD9fsZvRLme_GEfLBzMn89tLeW5wXM8i52RBEGWR5H78mbhMwqnxVnPxf1Y7pvurxNxGdZF5sdGmbROkGoeXjomDN9dUAqtGYvX7Am0ZY3TJ-LqnDHMLqFy74bUp5IfadML3YuNIh5ndTg6N7O5Qg6uwyvThB5lX_wJOVNZkB6DYhxAIeDszkYy7Q9vBL0yy4wfuUiusosDbIERvBb5sbBTrcV0xpuUXdCMosVfBO2gfEER6IC9g-f9_ef_yDB9zIHjXbQEl31QxjlV1cyi2oTVXmUswVuwnUcZ2G4DtJFs4miOq-CFNMyj2hclXnI6hqjICvThPEIF2JDA5oEcZiGUZIE6SpZZ0kVpzwtQ4xKmpE4wI6JduVUrpQ-Lvz1yCaMkjyNFy0rsTX-Zo_SSTAlyd1Cb_ytSjkcDYmDVhhrZggrbOuvA3feIrkjyadpl0-SO_C95wso-NaghMEIeQSSBuf7sDRYDLrd_PnLnUnA84b-PwAA___9N2Wx">