mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge remote-tracking branch 'origin/main' into rebranch
This commit is contained in:
@@ -1406,6 +1406,11 @@ def emit_extension_block_symbols: Flag<["-"], "emit-extension-block-symbols">,
|
||||
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
|
||||
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">;
|
||||
|
||||
def omit_extension_block_symbols: Flag<["-"], "omit-extension-block-symbols">,
|
||||
Flags<[SwiftSymbolGraphExtractOption, FrontendOption,
|
||||
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
|
||||
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">;
|
||||
|
||||
// swift-symbolgraph-extract-only options
|
||||
def output_dir : Separate<["-"], "output-dir">,
|
||||
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,
|
||||
|
||||
@@ -980,6 +980,7 @@ Remangler::mangleDependentGenericConformanceRequirement(Node *node,
|
||||
unsigned depth) {
|
||||
DEMANGLER_ASSERT(node->getNumChildren() == 2, node);
|
||||
Node *ProtoOrClass = node->getChild(1);
|
||||
DEMANGLER_ASSERT(ProtoOrClass->hasChildren(), ProtoOrClass);
|
||||
if (ProtoOrClass->getFirstChild()->getKind() == Node::Kind::Protocol) {
|
||||
RETURN_IF_ERROR(manglePureProtocol(ProtoOrClass, depth + 1));
|
||||
auto Mangling = mangleConstrainedType(node->getChild(0), depth + 1);
|
||||
|
||||
@@ -619,7 +619,8 @@ ToolChain::constructInvocation(const CompileJobAction &job,
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
|
||||
}
|
||||
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
|
||||
options::OPT_omit_extension_block_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
|
||||
|
||||
return II;
|
||||
@@ -1116,7 +1117,8 @@ ToolChain::constructInvocation(const MergeModuleJobAction &job,
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
|
||||
options::OPT_omit_extension_block_symbols);
|
||||
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
|
||||
|
||||
context.Args.AddLastArg(Arguments, options::OPT_import_objc_header);
|
||||
|
||||
@@ -172,7 +172,8 @@ int swift_symbolgraph_extract_main(ArrayRef<const char *> Args,
|
||||
ParsedArgs.hasArg(OPT_skip_inherited_docs),
|
||||
ParsedArgs.hasArg(OPT_include_spi_symbols),
|
||||
/*IncludeClangDocs=*/false,
|
||||
ParsedArgs.hasArg(OPT_emit_extension_block_symbols),
|
||||
ParsedArgs.hasFlag(OPT_emit_extension_block_symbols,
|
||||
OPT_omit_extension_block_symbols, /*default=*/false),
|
||||
};
|
||||
|
||||
if (auto *A = ParsedArgs.getLastArg(OPT_minimum_access_level)) {
|
||||
|
||||
@@ -1323,7 +1323,8 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
|
||||
Opts.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
|
||||
Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols);
|
||||
Opts.EmitExtensionBlockSymbols =
|
||||
Args.hasArg(OPT_emit_extension_block_symbols);
|
||||
Args.hasFlag(OPT_emit_extension_block_symbols,
|
||||
OPT_omit_extension_block_symbols, /*default=*/false);
|
||||
|
||||
if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
|
||||
Opts.MinimumAccessLevel =
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
},
|
||||
{
|
||||
"name": "emit-const-value-sidecar"
|
||||
},
|
||||
{
|
||||
"name": "emit-extension-block-symbols"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -212,11 +212,17 @@ extension Set: ExpressibleByArrayLiteral {
|
||||
///
|
||||
/// - Parameter elements: A variadic list of elements of the new set.
|
||||
@inlinable
|
||||
@inline(__always)
|
||||
public init(arrayLiteral elements: Element...) {
|
||||
if elements.isEmpty {
|
||||
self.init()
|
||||
return
|
||||
}
|
||||
self.init(_nonEmptyArrayLiteral: elements)
|
||||
}
|
||||
|
||||
@_alwaysEmitIntoClient
|
||||
internal init(_nonEmptyArrayLiteral elements: [Element]) {
|
||||
let native = _NativeSet<Element>(capacity: elements.count)
|
||||
for element in elements {
|
||||
let (bucket, found) = native.find(element)
|
||||
|
||||
32
test/SILOptimizer/set.swift
Normal file
32
test/SILOptimizer/set.swift
Normal file
@@ -0,0 +1,32 @@
|
||||
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -O -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
|
||||
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -Osize -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
|
||||
// REQUIRES: swift_stdlib_no_asserts,optimized_stdlib
|
||||
// REQUIRES: swift_in_compiler
|
||||
|
||||
// Test optimal code generation for creating empty sets.
|
||||
|
||||
// CHECK-LABEL: sil @$s4test30createEmptySetFromArrayLiteralShySiGyF
|
||||
// CHECK: global_addr @_swiftEmptySetSingleton
|
||||
// CHECK-NOT: apply
|
||||
// CHECK: } // end sil function '$s4test30createEmptySetFromArrayLiteralShySiGyF'
|
||||
public func createEmptySetFromArrayLiteral() -> Set<Int> {
|
||||
return []
|
||||
}
|
||||
|
||||
// CHECK-LABEL: sil @$s4test29createEmptySetWithInitializerShySiGyF
|
||||
// CHECK: global_addr @_swiftEmptySetSingleton
|
||||
// CHECK-NOT: apply
|
||||
// CHECK: } // end sil function '$s4test29createEmptySetWithInitializerShySiGyF'
|
||||
public func createEmptySetWithInitializer() -> Set<Int> {
|
||||
return Set<Int>()
|
||||
}
|
||||
|
||||
// CHECK-LABEL: sil @$s4test17createNonEmptySetShySiGyF
|
||||
// CHECK: global_value
|
||||
// CHECK: [[F:%[0-9]+]] = function_ref @$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSi_Tg5
|
||||
// CHECK: apply [[F]]
|
||||
// CHECK: } // end sil function '$s4test17createNonEmptySetShySiGyF'
|
||||
public func createNonEmptySet() -> Set<Int> {
|
||||
return [1, 2, 3]
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
// RUN: %empty-directory(%t)
|
||||
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/
|
||||
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t
|
||||
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t -omit-extension-block-symbols
|
||||
// RUN: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,EXTRACT,EBSOff,EBSOff_EXTRACT
|
||||
|
||||
// RUN: %empty-directory(%t)
|
||||
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t
|
||||
// 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
|
||||
// RUN: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,BUILD,EBSOff,EBSOff_BUILD
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user