[flang-dev] Fwd: Internal linkage for private subroutines
Doerfert, Johannes via flang-dev
flang-dev at lists.llvm.org
Wed Dec 4 17:44:58 PST 2019
This concernes legacy flang, correct? (I ask because there are linkage issues with mlir as well)
--
written from my phone
________________________________
From: flang-dev <flang-dev-bounces at lists.llvm.org> on behalf of Stephen Scalpone via flang-dev <flang-dev at lists.llvm.org>
Sent: Wednesday, December 4, 2019 8:40:54 PM
To: Alexey Zhikhartsev <alexey.zhikhar at gmail.com>; flang-dev at lists.llvm.org <flang-dev at lists.llvm.org>
Subject: Re: [flang-dev] Fwd: Internal linkage for private subroutines
This looks promising:
ll_write.cpp: fprintf(out, "define %s %s %s ", ll_get_linkage_string(function->linkage),
From: flang-dev <flang-dev-bounces at lists.llvm.org> on behalf of Alexey Zhikhartsev via flang-dev <flang-dev at lists.llvm.org>
Reply-To: Alexey Zhikhartsev <alexey.zhikhar at gmail.com>
Date: Wednesday, December 4, 2019 at 4:49 PM
To: "flang-dev at lists.llvm.org" <flang-dev at lists.llvm.org>
Subject: [flang-dev] Fwd: Internal linkage for private subroutines
Hi all,
In the code below, every function in module m is private by default, and only bar() is declared public:
module m
implicit none
private
public :: bar
integer :: arr1(42)
contains
subroutine foo(a)
integer :: a
arr1(1) = 2
end subroutine foo
subroutine bar(a)
integer :: a
call foo(a)
end subroutine bar
end module m
However, in the resulting LLVM IR, no function is declared with an attribute “internal”:
define void @m_foo_(i64* %a) !dbg !5 {
L.entry:
br label %L.LB2_313
L.LB2_313: ; preds = %L.entry
%0 = bitcast %struct_m_4_* @_m_4_ to i32*, !dbg !10
store i32 2, i32* %0, align 4, !dbg !10, !tbaa !12
ret void, !dbg !16
}
define void @m_bar_(i64* %a) !dbg !17 {
L.entry:
br label %L.LB3_314
L.LB3_314: ; preds = %L.entry
call void @m_foo_(i64* %a), !dbg !18
ret void, !dbg !20
}
Am I missing something? I tried to find where it might be implemented in flang by grepping the flang codebase for SC_STATIC but there’s just too many places. Any pointers would be much appreciated.
Alexey
________________________________
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.
________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/flang-dev/attachments/20191205/4b4c56ef/attachment.html>
More information about the flang-dev
mailing list