! Test fir.host_sym attribute to retain link between internal ! and host procedure in FIR even when BIND(C) is involved. ! RUN: bbc -emit-hlfir -o - %s | FileCheck %s ! RUN: bbc -emit-hlfir -o - %s | fir-opt -external-name-interop -o - |FileCheck %s --check-prefix=AFTER_RENAME_PASS subroutine foo() bind(c, name="some_c_name") call bar() contains subroutine bar() end subroutine end subroutine ! CHECK: func.func @some_c_name() ! CHECK: func.func private @_QFfooPbar() attributes {fir.host_symbol = @some_c_name, llvm.linkage = #llvm.linkage} ! AFTER_RENAME_PASS: func.func @some_c_name() ! AFTER_RENAME_PASS: func.func private @_QFfooPbar() attributes {fir.host_symbol = @some_c_name, llvm.linkage = #llvm.linkage} subroutine notbindc() call bar() contains subroutine bar() end subroutine end subroutine ! CHECK: func.func @_QPnotbindc() ! CHECK: func.func private @_QFnotbindcPbar() attributes {fir.host_symbol = @_QPnotbindc, llvm.linkage = #llvm.linkage} ! AFTER_RENAME_PASS: func.func @notbindc_() attributes {fir.internal_name = "_QPnotbindc"} ! AFTER_RENAME_PASS: func.func private @_QFnotbindcPbar() attributes {fir.host_symbol = @notbindc_, llvm.linkage = #llvm.linkage} ! Main program call bar() contains subroutine bar() end subroutine end ! CHECK: func.func @_QQmain() ! CHECK: func.func private @_QFPbar() attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage} ! AFTER_RENAME_PASS: func.func @_QQmain() ! AFTER_RENAME_PASS: func.func private @_QFPbar() attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage}