Skip to content

[pull] swiftwasm from main #2661

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Feb 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/IDE/Refactoring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5249,7 +5249,8 @@ bool RefactoringActionConvertCallToAsyncAlternative::performChange() {
assert(CE &&
"Should not run performChange when refactoring is not applicable");

AsyncConversionStringBuilder Builder(SM, DiagEngine, AsyncHandlerDesc());
AsyncHandlerDesc TempDesc;
AsyncConversionStringBuilder Builder(SM, DiagEngine, TempDesc);
Builder.convertNode(CE);

if (DiagEngine.hadAnyError())
Expand Down Expand Up @@ -5281,7 +5282,8 @@ bool RefactoringActionConvertToAsync::performChange() {
assert(FD &&
"Should not run performChange when refactoring is not applicable");

AsyncConversionStringBuilder Builder(SM, DiagEngine, AsyncHandlerDesc());
AsyncHandlerDesc TempDesc;
AsyncConversionStringBuilder Builder(SM, DiagEngine, TempDesc);
Builder.convertFunction(FD);

if (DiagEngine.hadAnyError())
Expand Down
13 changes: 7 additions & 6 deletions stdlib/public/Concurrency/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,17 @@ set(LLVM_OPTIONAL_SOURCES
set(swift_concurrency_link_libraries
swiftCore)

set(swift_concurrency_link_flags "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}")

if(SWIFT_CONCURRENCY_USES_DISPATCH)
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
include_directories(AFTER
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
link_directories(AFTER
${SWIFT_PATH_TO_LIBDISPATCH_BUILD})

# FIXME: we can't rely on libdispatch having been built for the
# target at this point in the process. Currently, we're relying
# on soft-linking.
#list(APPEND swift_concurrency_link_libraries
# dispatch)
list(APPEND swift_concurrency_link_flags
"-ldispatch")
endif()
endif()

Expand Down Expand Up @@ -67,6 +68,6 @@ add_swift_target_library(swift_Concurrency ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
-parse-stdlib
-Xfrontend -enable-experimental-concurrency
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
LINK_FLAGS "${swift_concurrency_link_flags}"
INSTALL_IN_COMPONENT stdlib
)
90 changes: 79 additions & 11 deletions test/DebugInfo/async-args.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// RUN: %target-swift-frontend %s -emit-ir -g -o - \
// RUN: -module-name M -enable-experimental-concurrency \
// RUN: -parse-as-library | %FileCheck %s
// RUN: -parse-as-library | %FileCheck %s --check-prefix=CHECK \
// RUN: --check-prefix=CHECK-%target-cpu
// REQUIRES: concurrency

func use<T>(_ t: T) {}
Expand All @@ -10,7 +11,7 @@ func withGenericArg<T>(_ msg: T) async {
// This odd debug info is part of a contract with CoroSplit/CoroFrame to fix
// this up after coroutine splitting.
// CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF"(%swift.task* %0, %swift.executor* %1, %swift.context* swiftasync %2)
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]*]],
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA:[^,]+]],
// CHECK-SAME: metadata ![[TAU:[0-9]+]], metadata !DIExpression(
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK: call void @llvm.dbg.declare(metadata %swift.context** %[[ALLOCA]],
Expand All @@ -20,15 +21,82 @@ func withGenericArg<T>(_ msg: T) async {

await forceSplit()
// CHECK-LABEL: {{^define .*}} @"$s1M14withGenericArgyyxYlF.resume.0"(i8* %0, i8* %1, i8* swiftasync %2)
// CHECK: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]*]],
// CHECK-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-arm64e: [[CTXT_PTR:%[0-9]+]] = bitcast i8* %2 to i8**
// CHECK-arm64e: [[SIGNED_CTXT:%[0-9]+]] = load i8*, i8** [[CTXT_PTR]]
// CHECK-arm64e: [[CTXT_PTR_INT:%[0-9]+]] = ptrtoint i8** [[CTXT_PTR]] to i64
// CHECK-arm64e: [[PTRAUTH_BLEND:%[0-9]+]] = call i64 @llvm.ptrauth.blend.i64(i64 [[CTXT_PTR_INT]], i64 48546)
// CHECK-arm64e: [[SIGNED_CTXT_INT:%[0-9]+]] = ptrtoint i8* [[SIGNED_CTXT]]
// CHECK-arm64e: [[CTXT:%[0-9]+]] = call i64 @llvm.ptrauth.auth.i64(i64 [[SIGNED_CTXT_INT]], i32 2, i64 [[PTRAUTH_BLEND]])
// CHECK-arm64e: %[[ALLOCA:[0-9+]]] = inttoptr i64 [[CTXT]] to i8*, !dbg !77
// CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
// CHECK-arm64e-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-arm64e-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-arm64e: call void @llvm.dbg.declare(metadata i8* %[[ALLOCA]],
// CHECK-arm64e-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-arm64e-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-arm64e-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))

// CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-i386-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-i386: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-i386-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-i386-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-i386-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-i386: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-x86_64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-x86_64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-x86_64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-x86_64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-x86_64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-x86_64: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-armv7-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-armv7: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-armv7-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-armv7-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-armv7-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-armv7: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-arm64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-arm64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-arm64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-arm64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-arm64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-arm64: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-powerpc64-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-powerpc64: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-powerpc64-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-powerpc64-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-powerpc64-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-powerpc64: store i8* %2, i8** %[[ALLOCA]], align

// CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA:[^,]+]],
// CHECK-powerpc64le-SAME: metadata ![[MSG_R:[0-9]+]], metadata !DIExpression(
// CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET:[0-9]+]],
// CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
// CHECK-powerpc64le: call void @llvm.dbg.declare(metadata i8** %[[ALLOCA]],
// CHECK-powerpc64le-SAME: metadata ![[TAU_R:[0-9]+]], metadata !DIExpression(
// CHECK-powerpc64le-SAME: DW_OP_deref, DW_OP_plus_uconst, [[OFFSET]],
// CHECK-powerpc64le-SAME: DW_OP_plus_uconst, {{[0-9]+}}))
// CHECK-powerpc64le: store i8* %2, i8** %[[ALLOCA]], align

use(msg)
}
Expand Down
1 change: 0 additions & 1 deletion test/Driver/pipe_round_robin.swift.gyb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Windows doesn't track/use read() and poll()
// UNSUPPORTED: windows
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t/manyfuncs)
// RUN: %empty-directory(%t/stats)
//
Expand Down
1 change: 0 additions & 1 deletion test/Misc/stats_dir.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -c -o %t/out.o -stats-output-dir %t %s
// RUN: %{python} %utils/process-stats-dir.py --set-csv-baseline %t/frontend.csv %t
Expand Down
1 change: 0 additions & 1 deletion test/Misc/stats_dir_failure_count.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// Check that a failed process-tree emits nonzero failure counters
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t)
// RUN: echo zzz >%t/other.swift
// RUN: not %target-swiftc_driver -continue-building-after-errors -D BROKEN -j 2 -typecheck -stats-output-dir %t %s %t/other.swift
Expand Down
1 change: 0 additions & 1 deletion test/Misc/stats_dir_instructions.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t)
// RUN: %target-swiftc_driver -o %t/main -module-name main -stats-output-dir %t %s
// RUN: %{python} %utils/process-stats-dir.py --set-csv-baseline %t/frontend.csv %t
Expand Down
1 change: 0 additions & 1 deletion test/Misc/stats_dir_long_path_name.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t)
// RUN: mkdir -p %t/very-long-directory-name-that-contains-over-128-characters-which-is-not-enough-to-be-illegal-on-its-own-but-presents
// RUN: cp %s %t/very-long-directory-name-that-contains-over-128-characters-which-is-not-enough-to-be-illegal-on-its-own-but-presents/a-problem-when-combined-with-other-long-path-elements-and-filenames-to-exceed-256-characters-combined-because-yay-arbitrary-limits-amirite.swift
Expand Down
1 change: 0 additions & 1 deletion test/Misc/stats_dir_plausible_maxrss.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: %empty-directory(%t)
// RUN: touch %t/main.swift
// RUN: %target-swiftc_driver -o %t/main -module-name main -stats-output-dir %t %t/main.swift
Expand Down
1 change: 0 additions & 1 deletion test/NameLookup/named_lazy_member_loading_anyobject.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// REQUIRES: objc_interop
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
//
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers %s -verify

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// REQUIRES: objc_interop
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Prime module cache
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// REQUIRES: objc_interop
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Prime module cache
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// REQUIRES: objc_interop
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Prime module cache
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// REQUIRES: objc_interop
// REQUIRES: OS=macosx
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Prime module cache
Expand Down Expand Up @@ -38,4 +37,4 @@ public func foo(d: PrivateDoer) {

let _ = d.__count
let _ = d.__object(forKey: nil)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
1 change: 0 additions & 1 deletion test/NameLookup/named_lazy_member_loading_swift_enum.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
//
// Compile swiftmodule with decl member name tables
Expand Down
1 change: 0 additions & 1 deletion test/SILOptimizer/hello-world.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// REQUIRES: rdar73834542
// RUN: rm -rf %t && mkdir -p %t/stats
// RUN: %target-swift-frontend -emit-sil -stats-output-dir %t/stats %s -o /dev/null
// RUN: %{python} %utils/process-stats-dir.py --evaluate 'NumSILGenFunctions < 10' %t/stats
Expand Down
7 changes: 7 additions & 0 deletions utils/build-presets.ini
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,7 @@ long-test
stress-test
test-optimized
foundation
clibdispatch
libdispatch
indexstore-db
sourcekit-lsp
Expand Down Expand Up @@ -966,6 +967,7 @@ release
test
validation-test
foundation
clibdispatch
libdispatch
indexstore-db
sourcekit-lsp
Expand Down Expand Up @@ -1065,6 +1067,7 @@ swiftpm
swift-driver
xctest
foundation
clibdispatch
libdispatch
swiftsyntax
indexstore-db
Expand Down Expand Up @@ -1593,6 +1596,7 @@ mixin-preset=
mixin_swiftpm_base
mixin_linux_install_components_with_clang

clibdispatch
libdispatch
libicu
foundation
Expand Down Expand Up @@ -1841,6 +1845,7 @@ llbuild
swiftpm
xctest
foundation
clibdispatch
libdispatch
indexstore-db
sourcekit-lsp
Expand Down Expand Up @@ -2456,6 +2461,7 @@ install-symroot=%(install_symroot)s
mixin-preset=source_compat_suite_base
build-subdir=compat_linux
foundation
clibdispatch
libdispatch
xctest
install-foundation
Expand Down Expand Up @@ -2511,6 +2517,7 @@ no-assertions
lldb
foundation
libicu
clibdispatch
libdispatch
build-ninja

Expand Down
7 changes: 7 additions & 0 deletions utils/build-script
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,10 @@ def apply_default_arguments(toolchain, args):
args.stdlib_deployment_targets = [
target.name for target in stdlib_targets]

if (args.build_swift and
platform.system() != "Darwin"):
args.build_clibdispatch = True

# SwiftPM and XCTest have a dependency on Foundation.
# On OS X, Foundation is built automatically using xcodebuild.
# On Linux, we must ensure that it is built manually.
Expand Down Expand Up @@ -624,6 +628,7 @@ class BuildScriptInvocation(object):
(args.build_llbuild, "llbuild"),
(args.build_libcxx, "libcxx"),
(args.build_libdispatch, "libdispatch"),
(args.build_clibdispatch, "clibdispatch"),
(args.build_libicu, "libicu")
]
for (should_build, string_name) in conditional_subproject_configs:
Expand Down Expand Up @@ -865,6 +870,8 @@ class BuildScriptInvocation(object):
impl_product_classes.append(products.LibCXX)
if self.args.build_libicu:
impl_product_classes.append(products.LibICU)
if self.args.build_clibdispatch:
impl_product_classes.append(products.CLibDispatch)
if self.args.build_swift:
impl_product_classes.append(products.Swift)
if self.args.build_lldb:
Expand Down
Loading