Skip to content

Commit 4aa99a2

Browse files
committed
SILPrinter: print linkage for external globals.
Unlike SIL functions, there is no way to distinguish a global declaration from a global definition - other than the linkage.
1 parent a09112a commit 4aa99a2

File tree

6 files changed

+22
-20
lines changed

6 files changed

+22
-20
lines changed

lib/SIL/IR/SILPrinter.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2701,7 +2701,9 @@ void SILGlobalVariable::print(llvm::raw_ostream &OS, bool Verbose) const {
27012701
printClangQualifiedNameCommentIfPresent(OS, getClangDecl());
27022702

27032703
OS << "sil_global ";
2704-
printLinkage(OS, getLinkage(), isDefinition());
2704+
// Passing true for 'isDefinition' lets print the (external) linkage if it's
2705+
// not a definition.
2706+
printLinkage(OS, getLinkage(), /*isDefinition*/ true);
27052707

27062708
if (isSerialized())
27072709
OS << "[serialized] ";

test/Interop/Cxx/extern-var/extern-var-silgen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ func getCounter() -> CInt {
77
}
88

99
// CHECK: // clang name: counter
10-
// CHECK: sil_global @counter : $Int32
10+
// CHECK: sil_global public_external @counter : $Int32
1111
// CHECK: // clang name: Namespaced::counter
12-
// CHECK: sil_global @{{_ZN10Namespaced7counterE|\?counter@Namespaced@@3HA}} : $Int32
12+
// CHECK: sil_global public_external @{{_ZN10Namespaced7counterE|\?counter@Namespaced@@3HA}} : $Int32
1313

1414
// CHECK: sil hidden @$s4main10getCounters5Int32VyF : $@convention(thin) () -> Int32
1515
// CHECK: [[COUNTER:%.*]] = global_addr @counter : $*Int32

test/Interop/Cxx/static/inline-static-member-var-silgen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ func readStaticMember() -> CInt {
77
}
88

99
// CHECK: // clang name: WithInlineStaticMember::staticMember
10-
// CHECK: sil_global @{{_ZN22WithInlineStaticMember12staticMemberE|\?staticMember@WithInlineStaticMember@@2HA}} : $Int32
10+
// CHECK: sil_global public_external @{{_ZN22WithInlineStaticMember12staticMemberE|\?staticMember@WithInlineStaticMember@@2HA}} : $Int32
1111

1212
// CHECK: sil hidden @$s4main16readStaticMembers5Int32VyF : $@convention(thin) () -> Int32
1313
// CHECK: [[ADDR:%.*]] = global_addr @{{_ZN22WithInlineStaticMember12staticMemberE|\?staticMember@WithInlineStaticMember@@2HA}} : $*Int32

test/Interop/Cxx/static/static-member-var-silgen.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// RUN: %target-swift-emit-sil -I %S/Inputs -enable-cxx-interop %s | %FileCheck %s
22

33
// CHECK: // clang name: WithStaticMember::staticMember
4-
// CHECK: sil_global @{{_ZN16WithStaticMember12staticMemberE|\?staticMember@WithStaticMember@@2HA}} : $Int32
4+
// CHECK: sil_global public_external @{{_ZN16WithStaticMember12staticMemberE|\?staticMember@WithStaticMember@@2HA}} : $Int32
55
// CHECK: // clang name: WithIncompleteStaticMember::selfMember
6-
// CHECK: sil_global @{{_ZN26WithIncompleteStaticMember10selfMemberE|\?selfMember@WithIncompleteStaticMember@@2V1@A}} : $WithIncompleteStaticMember
6+
// CHECK: sil_global public_external @{{_ZN26WithIncompleteStaticMember10selfMemberE|\?selfMember@WithIncompleteStaticMember@@2V1@A}} : $WithIncompleteStaticMember
77
// CHECK: // clang name: WithConstStaticMember::defined
8-
// CHECK: sil_global [let] @{{_ZN21WithConstStaticMember7definedE|\?defined@WithConstStaticMember@@2HB}} : $Int32
8+
// CHECK: sil_global public_external [let] @{{_ZN21WithConstStaticMember7definedE|\?defined@WithConstStaticMember@@2HB}} : $Int32
99
// CHECK: // clang name: WithConstStaticMember::definedOutOfLine
10-
// CHECK: sil_global [let] @{{_ZN21WithConstStaticMember16definedOutOfLineE|\?definedOutOfLine@WithConstStaticMember@@2HB}} : $Int32
10+
// CHECK: sil_global public_external [let] @{{_ZN21WithConstStaticMember16definedOutOfLineE|\?definedOutOfLine@WithConstStaticMember@@2HB}} : $Int32
1111
// CHECK: // clang name: WithConstexprStaticMember::definedInline
12-
// CHECK: sil_global [let] @{{_ZN25WithConstexprStaticMember13definedInlineE|\?definedInline@WithConstexprStaticMember@@2HB}} : $Int32
12+
// CHECK: sil_global public_external [let] @{{_ZN25WithConstexprStaticMember13definedInlineE|\?definedInline@WithConstexprStaticMember@@2HB}} : $Int32
1313

1414
import StaticMemberVar
1515

test/Interop/Cxx/static/static-var-silgen.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@ func initStaticVars() -> CInt {
99
}
1010

1111
// CHECK: // clang name: staticVar
12-
// CHECK: sil_global @staticVar : $Int32
12+
// CHECK: sil_global public_external @staticVar : $Int32
1313
// CHECK: // clang name: staticVarInit
14-
// CHECK: sil_global @staticVarInit : $Int32
14+
// CHECK: sil_global public_external @staticVarInit : $Int32
1515
// CHECK: // clang name: staticVarInlineInit
16-
// CHECK: sil_global @staticVarInlineInit : $Int32
16+
// CHECK: sil_global public_external @staticVarInlineInit : $Int32
1717
// CHECK: // clang name: staticConst
18-
// CHECK: sil_global [let] @staticConst : $Int32
18+
// CHECK: sil_global public_external [let] @staticConst : $Int32
1919
// CHECK: // clang name: staticConstInit
20-
// CHECK: sil_global [let] @staticConstInit : $Int32
20+
// CHECK: sil_global public_external [let] @staticConstInit : $Int32
2121
// CHECK: // clang name: staticConstInlineInit
22-
// CHECK: sil_global [let] @staticConstInlineInit : $Int32
22+
// CHECK: sil_global public_external [let] @staticConstInlineInit : $Int32
2323
// CHECK: // clang name: staticConstexpr
24-
// CHECK: sil_global [let] @staticConstexpr : $Int32
24+
// CHECK: sil_global public_external [let] @staticConstexpr : $Int32
2525
// CHECK: // clang name: staticNonTrivial
26-
// CHECK: sil_global @staticNonTrivial : $NonTrivial
26+
// CHECK: sil_global public_external @staticNonTrivial : $NonTrivial
2727
// CHECK: // clang name: staticConstNonTrivial
28-
// CHECK: sil_global [let] @staticConstNonTrivial : $NonTrivial
28+
// CHECK: sil_global public_external [let] @staticConstNonTrivial : $NonTrivial
2929
// CHECK: // clang name: staticConstexprNonTrivial
30-
// CHECK: sil_global [let] @staticConstexprNonTrivial : $NonTrivial
30+
// CHECK: sil_global public_external [let] @staticConstexprNonTrivial : $NonTrivial
3131

3232
func readStaticVar() -> CInt {
3333
return staticVar

test/SILGen/dso_handle.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %target-swift-emit-silgen -Xllvm -sil-full-demangle %s | %FileCheck %s
22

3-
// CHECK: sil_global [[DSO:@__dso_handle|@__ImageBase]] : $Builtin.RawPointer
3+
// CHECK: sil_global public_external [[DSO:@__dso_handle|@__ImageBase]] : $Builtin.RawPointer
44

55
// CHECK-LABEL: sil [ossa] @main : $@convention(c)
66
// CHECK: bb0

0 commit comments

Comments
 (0)