Skip to content

Commit 4e20be1

Browse files
committed
Merge remote-tracking branch 'origin/main' into rebranch
2 parents b68356b + 2b248f9 commit 4e20be1

File tree

9 files changed

+57
-6
lines changed

9 files changed

+57
-6
lines changed

include/swift/Option/Options.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1406,6 +1406,11 @@ def emit_extension_block_symbols: Flag<["-"], "emit-extension-block-symbols">,
14061406
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
14071407
HelpText<"Emit 'swift.extension' symbols for extensions to external types instead of directly associating members and conformances with the extended nominal when generating symbol graphs">;
14081408

1409+
def omit_extension_block_symbols: Flag<["-"], "omit-extension-block-symbols">,
1410+
Flags<[SwiftSymbolGraphExtractOption, FrontendOption,
1411+
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
1412+
HelpText<"Directly associate members and conformances with the extended nominal when generating symbol graphs instead of emitting 'swift.extension' symbols for extensions to external types">;
1413+
14091414
// swift-symbolgraph-extract-only options
14101415
def output_dir : Separate<["-"], "output-dir">,
14111416
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,

lib/Demangling/Remangler.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,7 @@ Remangler::mangleDependentGenericConformanceRequirement(Node *node,
980980
unsigned depth) {
981981
DEMANGLER_ASSERT(node->getNumChildren() == 2, node);
982982
Node *ProtoOrClass = node->getChild(1);
983+
DEMANGLER_ASSERT(ProtoOrClass->hasChildren(), ProtoOrClass);
983984
if (ProtoOrClass->getFirstChild()->getKind() == Node::Kind::Protocol) {
984985
RETURN_IF_ERROR(manglePureProtocol(ProtoOrClass, depth + 1));
985986
auto Mangling = mangleConstrainedType(node->getChild(0), depth + 1);

lib/Driver/ToolChains.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,8 @@ ToolChain::constructInvocation(const CompileJobAction &job,
619619
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
620620
}
621621
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
622-
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
622+
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
623+
options::OPT_omit_extension_block_symbols);
623624
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
624625

625626
return II;
@@ -1116,7 +1117,8 @@ ToolChain::constructInvocation(const MergeModuleJobAction &job,
11161117
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph);
11171118
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
11181119
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
1119-
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
1120+
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
1121+
options::OPT_omit_extension_block_symbols);
11201122
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
11211123

11221124
context.Args.AddLastArg(Arguments, options::OPT_import_objc_header);

lib/DriverTool/swift_symbolgraph_extract_main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,8 @@ int swift_symbolgraph_extract_main(ArrayRef<const char *> Args,
172172
ParsedArgs.hasArg(OPT_skip_inherited_docs),
173173
ParsedArgs.hasArg(OPT_include_spi_symbols),
174174
/*IncludeClangDocs=*/false,
175-
ParsedArgs.hasArg(OPT_emit_extension_block_symbols),
175+
ParsedArgs.hasFlag(OPT_emit_extension_block_symbols,
176+
OPT_omit_extension_block_symbols, /*default=*/false),
176177
};
177178

178179
if (auto *A = ParsedArgs.getLastArg(OPT_minimum_access_level)) {

lib/Frontend/CompilerInvocation.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,8 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
13231323
Opts.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
13241324
Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols);
13251325
Opts.EmitExtensionBlockSymbols =
1326-
Args.hasArg(OPT_emit_extension_block_symbols);
1326+
Args.hasFlag(OPT_emit_extension_block_symbols,
1327+
OPT_omit_extension_block_symbols, /*default=*/false);
13271328

13281329
if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
13291330
Opts.MinimumAccessLevel =

lib/Option/features.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
},
2727
{
2828
"name": "emit-const-value-sidecar"
29+
},
30+
{
31+
"name": "emit-extension-block-symbols"
2932
}
3033
]
3134
}

stdlib/public/core/Set.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,17 @@ extension Set: ExpressibleByArrayLiteral {
212212
///
213213
/// - Parameter elements: A variadic list of elements of the new set.
214214
@inlinable
215+
@inline(__always)
215216
public init(arrayLiteral elements: Element...) {
216217
if elements.isEmpty {
217218
self.init()
218219
return
219220
}
221+
self.init(_nonEmptyArrayLiteral: elements)
222+
}
223+
224+
@_alwaysEmitIntoClient
225+
internal init(_nonEmptyArrayLiteral elements: [Element]) {
220226
let native = _NativeSet<Element>(capacity: elements.count)
221227
for element in elements {
222228
let (bucket, found) = native.find(element)

test/SILOptimizer/set.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -O -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
2+
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -Osize -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
3+
// REQUIRES: swift_stdlib_no_asserts,optimized_stdlib
4+
// REQUIRES: swift_in_compiler
5+
6+
// Test optimal code generation for creating empty sets.
7+
8+
// CHECK-LABEL: sil @$s4test30createEmptySetFromArrayLiteralShySiGyF
9+
// CHECK: global_addr @_swiftEmptySetSingleton
10+
// CHECK-NOT: apply
11+
// CHECK: } // end sil function '$s4test30createEmptySetFromArrayLiteralShySiGyF'
12+
public func createEmptySetFromArrayLiteral() -> Set<Int> {
13+
return []
14+
}
15+
16+
// CHECK-LABEL: sil @$s4test29createEmptySetWithInitializerShySiGyF
17+
// CHECK: global_addr @_swiftEmptySetSingleton
18+
// CHECK-NOT: apply
19+
// CHECK: } // end sil function '$s4test29createEmptySetWithInitializerShySiGyF'
20+
public func createEmptySetWithInitializer() -> Set<Int> {
21+
return Set<Int>()
22+
}
23+
24+
// CHECK-LABEL: sil @$s4test17createNonEmptySetShySiGyF
25+
// CHECK: global_value
26+
// CHECK: [[F:%[0-9]+]] = function_ref @$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSi_Tg5
27+
// CHECK: apply [[F]]
28+
// CHECK: } // end sil function '$s4test17createNonEmptySetShySiGyF'
29+
public func createNonEmptySet() -> Set<Int> {
30+
return [1, 2, 3]
31+
}
32+

test/SymbolGraph/Module/BasicExtension.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
// RUN: %empty-directory(%t)
44
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/
5-
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t
5+
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t -omit-extension-block-symbols
66
// RUN: %FileCheck %s --input-file %t/[email protected] --check-prefixes ALL,EXTRACT,EBSOff,EBSOff_EXTRACT
77

88
// RUN: %empty-directory(%t)
9-
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t
9+
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t -omit-extension-block-symbols
1010
// RUN: %FileCheck %s --input-file %t/[email protected] --check-prefixes ALL,BUILD,EBSOff,EBSOff_BUILD
1111

1212

0 commit comments

Comments
 (0)