From ef6fdf8af5db3f2bb45e8fe1493c65d507bdb021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20Laferrie=CC=80re?= Date: Wed, 3 Feb 2021 17:26:56 -0800 Subject: [PATCH 1/5] Revert "[Tests] Disable process-stats-dir.py related tests" This reverts commit f576bebaf14122d552d8854cc3aceafdfe9e313c. --- test/Driver/pipe_round_robin.swift.gyb | 1 - test/Misc/stats_dir.swift | 1 - test/Misc/stats_dir_failure_count.swift | 1 - test/Misc/stats_dir_instructions.swift | 1 - test/Misc/stats_dir_long_path_name.swift | 1 - test/Misc/stats_dir_plausible_maxrss.swift | 1 - test/NameLookup/named_lazy_member_loading_anyobject.swift | 1 - test/NameLookup/named_lazy_member_loading_objc_category.swift | 1 - test/NameLookup/named_lazy_member_loading_objc_interface.swift | 1 - test/NameLookup/named_lazy_member_loading_objc_protocol.swift | 1 - .../named_lazy_member_loading_protocol_mirroring.swift | 3 +-- test/NameLookup/named_lazy_member_loading_swift_class.swift | 1 - .../named_lazy_member_loading_swift_class_type.swift | 1 - .../named_lazy_member_loading_swift_derived_class.swift | 1 - .../named_lazy_member_loading_swift_derived_class_type.swift | 1 - test/NameLookup/named_lazy_member_loading_swift_enum.swift | 1 - test/NameLookup/named_lazy_member_loading_swift_proto.swift | 1 - test/NameLookup/named_lazy_member_loading_swift_struct.swift | 1 - .../named_lazy_member_loading_swift_struct_ext.swift | 1 - .../named_lazy_member_loading_swift_struct_ext_mem.swift | 1 - test/SILOptimizer/hello-world.swift | 1 - validation-test/compiler_scale/parse_array_nested.swift.gyb | 2 -- 22 files changed, 1 insertion(+), 24 deletions(-) diff --git a/test/Driver/pipe_round_robin.swift.gyb b/test/Driver/pipe_round_robin.swift.gyb index 2e89edf303368..f3629422b1a5e 100644 --- a/test/Driver/pipe_round_robin.swift.gyb +++ b/test/Driver/pipe_round_robin.swift.gyb @@ -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) // diff --git a/test/Misc/stats_dir.swift b/test/Misc/stats_dir.swift index 32b476aa81cdb..b6f864208553b 100644 --- a/test/Misc/stats_dir.swift +++ b/test/Misc/stats_dir.swift @@ -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 diff --git a/test/Misc/stats_dir_failure_count.swift b/test/Misc/stats_dir_failure_count.swift index cf11b5d73537a..d771991301fac 100644 --- a/test/Misc/stats_dir_failure_count.swift +++ b/test/Misc/stats_dir_failure_count.swift @@ -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 diff --git a/test/Misc/stats_dir_instructions.swift b/test/Misc/stats_dir_instructions.swift index f6b91572c7716..9c412535e5e9b 100644 --- a/test/Misc/stats_dir_instructions.swift +++ b/test/Misc/stats_dir_instructions.swift @@ -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 diff --git a/test/Misc/stats_dir_long_path_name.swift b/test/Misc/stats_dir_long_path_name.swift index d8807e9792404..9a0373016d344 100644 --- a/test/Misc/stats_dir_long_path_name.swift +++ b/test/Misc/stats_dir_long_path_name.swift @@ -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 diff --git a/test/Misc/stats_dir_plausible_maxrss.swift b/test/Misc/stats_dir_plausible_maxrss.swift index d142bcbe31037..a579a8eb26600 100644 --- a/test/Misc/stats_dir_plausible_maxrss.swift +++ b/test/Misc/stats_dir_plausible_maxrss.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_anyobject.swift b/test/NameLookup/named_lazy_member_loading_anyobject.swift index 556f73c0efbb4..dd43ee448cb22 100644 --- a/test/NameLookup/named_lazy_member_loading_anyobject.swift +++ b/test/NameLookup/named_lazy_member_loading_anyobject.swift @@ -1,6 +1,5 @@ // REQUIRES: objc_interop // REQUIRES: OS=macosx -// REQUIRES: rdar73834542 // // RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers %s -verify diff --git a/test/NameLookup/named_lazy_member_loading_objc_category.swift b/test/NameLookup/named_lazy_member_loading_objc_category.swift index 4d22938b2c32b..db5932d19630c 100644 --- a/test/NameLookup/named_lazy_member_loading_objc_category.swift +++ b/test/NameLookup/named_lazy_member_loading_objc_category.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_objc_interface.swift b/test/NameLookup/named_lazy_member_loading_objc_interface.swift index bccb2e54ae76a..ce9c245daf273 100644 --- a/test/NameLookup/named_lazy_member_loading_objc_interface.swift +++ b/test/NameLookup/named_lazy_member_loading_objc_interface.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_objc_protocol.swift b/test/NameLookup/named_lazy_member_loading_objc_protocol.swift index 2b47989e0591c..94607c52b675e 100644 --- a/test/NameLookup/named_lazy_member_loading_objc_protocol.swift +++ b/test/NameLookup/named_lazy_member_loading_objc_protocol.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_protocol_mirroring.swift b/test/NameLookup/named_lazy_member_loading_protocol_mirroring.swift index 33c5ae35355f7..63c11e641e91b 100644 --- a/test/NameLookup/named_lazy_member_loading_protocol_mirroring.swift +++ b/test/NameLookup/named_lazy_member_loading_protocol_mirroring.swift @@ -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 @@ -38,4 +37,4 @@ public func foo(d: PrivateDoer) { let _ = d.__count let _ = d.__object(forKey: nil) -} +} \ No newline at end of file diff --git a/test/NameLookup/named_lazy_member_loading_swift_class.swift b/test/NameLookup/named_lazy_member_loading_swift_class.swift index 8296f2813a663..b1cced66d816f 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_class.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_class.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_class_type.swift b/test/NameLookup/named_lazy_member_loading_swift_class_type.swift index 27cf6396c860e..92cf004ea34cc 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_class_type.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_class_type.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_derived_class.swift b/test/NameLookup/named_lazy_member_loading_swift_derived_class.swift index cd50d70570b78..9ba6568721737 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_derived_class.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_derived_class.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_derived_class_type.swift b/test/NameLookup/named_lazy_member_loading_swift_derived_class_type.swift index ea7969458a523..dbc9a61df1568 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_derived_class_type.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_derived_class_type.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_enum.swift b/test/NameLookup/named_lazy_member_loading_swift_enum.swift index e7e9f3cc3ae0a..32ab94af92f84 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_enum.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_enum.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_proto.swift b/test/NameLookup/named_lazy_member_loading_swift_proto.swift index 5c23c2f3b4fb4..6c26b281064a9 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_proto.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_proto.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_struct.swift b/test/NameLookup/named_lazy_member_loading_swift_struct.swift index 78abce6729844..a377879a4c003 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_struct.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_struct.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_struct_ext.swift b/test/NameLookup/named_lazy_member_loading_swift_struct_ext.swift index e211d9930cf98..4ed64dbfdbd69 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_struct_ext.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_struct_ext.swift @@ -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 diff --git a/test/NameLookup/named_lazy_member_loading_swift_struct_ext_mem.swift b/test/NameLookup/named_lazy_member_loading_swift_struct_ext_mem.swift index fe833a0a913c7..9cf40ca311147 100644 --- a/test/NameLookup/named_lazy_member_loading_swift_struct_ext_mem.swift +++ b/test/NameLookup/named_lazy_member_loading_swift_struct_ext_mem.swift @@ -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 diff --git a/test/SILOptimizer/hello-world.swift b/test/SILOptimizer/hello-world.swift index 8fe309f44e855..29a29f8681db2 100644 --- a/test/SILOptimizer/hello-world.swift +++ b/test/SILOptimizer/hello-world.swift @@ -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 diff --git a/validation-test/compiler_scale/parse_array_nested.swift.gyb b/validation-test/compiler_scale/parse_array_nested.swift.gyb index 09e3261c5594b..e75e79474f1e7 100644 --- a/validation-test/compiler_scale/parse_array_nested.swift.gyb +++ b/validation-test/compiler_scale/parse_array_nested.swift.gyb @@ -1,7 +1,5 @@ // RUN: %scale-test -parse --begin 0 --end 10 --step 1 --select NumASTBytes %s -// REQUIRES: rdar73834542 - %for i in range(1, N + 1): [ %end From f67b5d9917a2038ff56c77dd828e03b06a028bca Mon Sep 17 00:00:00 2001 From: Rintaro Ishizaki Date: Thu, 4 Feb 2021 10:17:49 -0800 Subject: [PATCH 2/5] [Tests] Disable refactoring/ConvertAsync in ASAN ASAN detected stack-use-after-scope errors. Disable tests while fixing. rdar://problem/73984220 --- test/refactoring/ConvertAsync/basic.swift | 2 ++ test/refactoring/ConvertAsync/convert_function.swift | 2 ++ test/refactoring/ConvertAsync/convert_params_multi.swift | 2 ++ test/refactoring/ConvertAsync/convert_params_single.swift | 2 ++ test/refactoring/ConvertAsync/convert_result.swift | 2 ++ test/refactoring/ConvertAsync/errors.swift | 2 ++ 6 files changed, 12 insertions(+) diff --git a/test/refactoring/ConvertAsync/basic.swift b/test/refactoring/ConvertAsync/basic.swift index c0d349ac500e9..1d0eb3c516076 100644 --- a/test/refactoring/ConvertAsync/basic.swift +++ b/test/refactoring/ConvertAsync/basic.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan enum CustomError: Error { case invalid case insecure diff --git a/test/refactoring/ConvertAsync/convert_function.swift b/test/refactoring/ConvertAsync/convert_function.swift index 433df061bc2d9..ddd334152c7de 100644 --- a/test/refactoring/ConvertAsync/convert_function.swift +++ b/test/refactoring/ConvertAsync/convert_function.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan enum CustomError : Error { case Bad } diff --git a/test/refactoring/ConvertAsync/convert_params_multi.swift b/test/refactoring/ConvertAsync/convert_params_multi.swift index 86664bdb2ddce..70409c4222bea 100644 --- a/test/refactoring/ConvertAsync/convert_params_multi.swift +++ b/test/refactoring/ConvertAsync/convert_params_multi.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan func manyWithError(_ completion: (String?, Int?, Error?) -> Void) { } // RUN: %refactor -convert-call-to-async-alternative -dump-text -source-filename %s -pos=%(line+1):3 | %FileCheck -check-prefix=MANYBOUND %s diff --git a/test/refactoring/ConvertAsync/convert_params_single.swift b/test/refactoring/ConvertAsync/convert_params_single.swift index e8e7e1395e817..45dea4606d53b 100644 --- a/test/refactoring/ConvertAsync/convert_params_single.swift +++ b/test/refactoring/ConvertAsync/convert_params_single.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan func withError(_ completion: (String?, Error?) -> Void) { } func test(_ str: String) -> Bool { return false } diff --git a/test/refactoring/ConvertAsync/convert_result.swift b/test/refactoring/ConvertAsync/convert_result.swift index 9764164e3e941..7ae4669f80117 100644 --- a/test/refactoring/ConvertAsync/convert_result.swift +++ b/test/refactoring/ConvertAsync/convert_result.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan func simple(_ completion: (Result) -> Void) { } func noError(_ completion: (Result) -> Void) { } func test(_ str: String) -> Bool { return false } diff --git a/test/refactoring/ConvertAsync/errors.swift b/test/refactoring/ConvertAsync/errors.swift index 20846cc2c1d2d..3fa63103e7527 100644 --- a/test/refactoring/ConvertAsync/errors.swift +++ b/test/refactoring/ConvertAsync/errors.swift @@ -1,3 +1,5 @@ +// rdar://problem/73984220 +// XFAIL: asan func simple(completion: (String?, Error?) -> Void) { } func mismatches() { From 1c2ab37c6ff0d30a7a8f4ee255489dddffee7235 Mon Sep 17 00:00:00 2001 From: Nate Chandler Date: Thu, 4 Feb 2021 08:36:24 -0800 Subject: [PATCH 3/5] [Test] Adapt DebugInfo/async-args for arm64e. --- test/DebugInfo/async-args.swift | 90 +++++++++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 11 deletions(-) diff --git a/test/DebugInfo/async-args.swift b/test/DebugInfo/async-args.swift index b62e5c351aba1..00abb279fc3b3 100644 --- a/test/DebugInfo/async-args.swift +++ b/test/DebugInfo/async-args.swift @@ -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) {} @@ -10,7 +11,7 @@ func withGenericArg(_ 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]], @@ -20,15 +21,82 @@ func withGenericArg(_ 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) } From 74e59ab77fbe9e0115988413c4d9b587a2b3abc1 Mon Sep 17 00:00:00 2001 From: Dario Rexin Date: Thu, 4 Feb 2021 17:15:30 -0800 Subject: [PATCH 4/5] =?UTF-8?q?[Concurrency]=20Build=20C=20only=20libdispa?= =?UTF-8?q?tch=20before=20Swift=20on=20non-Darwin=20pla=E2=80=A6=20(#35738?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Concurrency] Build C only libdispatch before Swift on non-Darwin platforms _Concurrency depends on libdispatch and since it is not available by default on non-Darwin platforms, it needs to be built before the Swift project, so that the dependency can be resolved. * Fix clibdispatch installation and BuildSystem tests * Fix build system tests on Darwin and formatting --- stdlib/public/Concurrency/CMakeLists.txt | 13 ++--- utils/build-presets.ini | 7 +++ utils/build-script | 7 +++ utils/build-script-impl | 52 ++++++++++++++++--- .../build_swift/driver_arguments.py | 3 ++ utils/build_swift/tests/expected_options.py | 2 + .../swift_build_support/products/__init__.py | 2 + .../products/clibdispatch.py | 44 ++++++++++++++++ .../swift_build_support/products/swift.py | 4 +- .../infer_dumps_deps_if_verbose_build.test | 7 +++ ...er_dumps_deps_if_verbose_build_darwin.test | 30 +++++++++++ .../infer_implies_install_all.test | 6 +++ .../infer_implies_install_all_darwin.test | 13 +++++ .../BuildSystem/install_all_linux.test | 1 + .../BuildSystem/skip_cmark_swift_llvm.test | 7 +++ .../skip_cmark_swift_llvm_darwin.test | 36 +++++++++++++ 16 files changed, 219 insertions(+), 15 deletions(-) create mode 100644 utils/swift_build_support/swift_build_support/products/clibdispatch.py create mode 100644 validation-test/BuildSystem/infer_dumps_deps_if_verbose_build_darwin.test create mode 100644 validation-test/BuildSystem/infer_implies_install_all_darwin.test create mode 100644 validation-test/BuildSystem/skip_cmark_swift_llvm_darwin.test diff --git a/stdlib/public/Concurrency/CMakeLists.txt b/stdlib/public/Concurrency/CMakeLists.txt index e826277c60e4e..93d3bfbddf6f2 100644 --- a/stdlib/public/Concurrency/CMakeLists.txt +++ b/stdlib/public/Concurrency/CMakeLists.txt @@ -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() @@ -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 ) diff --git a/utils/build-presets.ini b/utils/build-presets.ini index ce5fb711ca526..4db6bf2b65d23 100644 --- a/utils/build-presets.ini +++ b/utils/build-presets.ini @@ -824,6 +824,7 @@ long-test stress-test test-optimized foundation +clibdispatch libdispatch indexstore-db sourcekit-lsp @@ -966,6 +967,7 @@ release test validation-test foundation +clibdispatch libdispatch indexstore-db sourcekit-lsp @@ -1065,6 +1067,7 @@ swiftpm swift-driver xctest foundation +clibdispatch libdispatch swiftsyntax indexstore-db @@ -1593,6 +1596,7 @@ mixin-preset= mixin_swiftpm_base mixin_linux_install_components_with_clang +clibdispatch libdispatch libicu foundation @@ -1841,6 +1845,7 @@ llbuild swiftpm xctest foundation +clibdispatch libdispatch indexstore-db sourcekit-lsp @@ -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 @@ -2511,6 +2517,7 @@ no-assertions lldb foundation libicu +clibdispatch libdispatch build-ninja diff --git a/utils/build-script b/utils/build-script index 5e53691ffcab3..485ed0abcd10d 100755 --- a/utils/build-script +++ b/utils/build-script @@ -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. @@ -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: @@ -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: diff --git a/utils/build-script-impl b/utils/build-script-impl index ee77f62e24243..16a83a098bbe7 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -230,6 +230,7 @@ KNOWN_SETTINGS=( ) components=( + clibdispatch cmark foundation libcxx @@ -1162,6 +1163,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester" XCTEST_SOURCE_DIR="${WORKSPACE}/swift-corelibs-xctest" FOUNDATION_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation" FOUNDATION_STATIC_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation" +CLIBDISPATCH_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch" LIBDISPATCH_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch" LIBDISPATCH_STATIC_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch" LIBICU_SOURCE_DIR="${WORKSPACE}/icu" @@ -1175,6 +1177,7 @@ PRODUCTS=(llvm) [[ "${SKIP_BUILD_CMARK}" ]] || PRODUCTS+=(cmark) [[ "${SKIP_BUILD_LIBCXX}" ]] || PRODUCTS+=(libcxx) [[ "${SKIP_BUILD_LIBICU}" ]] || PRODUCTS+=(libicu) +[[ "${SKIP_BUILD_CLIBDISPATCH}" ]] || PRODUCTS+=(clibdispatch) [[ "${SKIP_BUILD_SWIFT}" ]] || PRODUCTS+=(swift) [[ "${SKIP_BUILD_LLDB}" ]] || PRODUCTS+=(lldb) [[ "${SKIP_BUILD_LIBDISPATCH}" ]] || PRODUCTS+=(libdispatch) @@ -1259,7 +1262,7 @@ function build_directory_bin() { foundation|foundation_static) echo "${root}/${FOUNDATION_BUILD_TYPE}/bin" ;; - libdispatch|libdispatch_static) + clibdispatch|libdispatch|libdispatch_static) echo "${root}/${LIBDISPATCH_BUILD_TYPE}/bin" ;; libicu) @@ -1377,7 +1380,7 @@ function cmake_config_opt() { foundation|foundation_static) echo "--config ${FOUNDATION_BUILD_TYPE}" ;; - libdispatch|libdispatch_static) + clibdispatch|libdispatch|libdispatch_static) echo "--config ${LIBDISPATCH_BUILD_TYPE}" ;; libicu) @@ -1764,7 +1767,6 @@ for host in "${ALL_HOSTS[@]}"; do ;; swift) - if [[ "${ANDROID_API_LEVEL}" ]]; then cmake_options=( "${cmake_options[@]}" @@ -2320,9 +2322,18 @@ for host in "${ALL_HOSTS[@]}"; do ) ;; - libdispatch|libdispatch_static) + clibdispatch|libdispatch|libdispatch_static) LIBDISPATCH_BUILD_DIR=$(build_directory ${host} ${product}) SWIFT_BUILD_PATH="$(build_directory ${host} swift)" + ENABLE_SWIFT=YES + if [[ "${product}" = "clibdispatch" ]]; then + if [[ "$(uname -s)" = "Darwin" ]]; then + continue # We don't build clibdispatch on Darwin + fi + ENABLE_SWIFT=NO + LIBDISPATCH_BUILD_DIR=$(build_directory ${host} libdispatch) + build_dir=${LIBDISPATCH_BUILD_DIR} + fi case "${host}" in macosx-*) @@ -2338,7 +2349,7 @@ for host in "${ALL_HOSTS[@]}"; do call rm -rf "${LIBDISPATCH_BUILD_DIR}" cmake_options=( - -DENABLE_SWIFT=YES + -DENABLE_SWIFT="${ENABLE_SWIFT}" ${cmake_options[@]} -DCMAKE_BUILD_TYPE:STRING="${LIBDISPATCH_BUILD_TYPE}" -DCMAKE_C_COMPILER:PATH="${CLANG_BIN}/clang" @@ -2506,6 +2517,13 @@ for host in "${ALL_HOSTS[@]}"; do if [[ "${product}" = "llvm" ]] && [[ "${BUILD_LLVM}" = "1" ]] && [[ "$(uname -s)" = "Darwin" ]]; then copy_embedded_compiler_rt_builtins_from_darwin_host_toolchain "$(build_directory_bin ${host} llvm)/.." fi + + # We need to copy libdispatch.so into the swift lib directory + # so the tests can find it + if [[ "${product}" = "clibdispatch" ]] && [[ "uname -s" != "Darwin" ]]; then + clibdispatch_libdir="$(build_directory ${host} swift)/lib/swift/${SWIFT_HOST_VARIANT}/${SWIFT_HOST_VARIANT_ARCH}" + call cp "${build_dir}/libdispatch.so" "${clibdispatch_libdir}" + fi done done # END OF BUILD PHASE @@ -2762,13 +2780,17 @@ for host in "${ALL_HOSTS[@]}"; do foundation_static) continue ;; - libdispatch) + clibdispatch|libdispatch) if [[ "${SKIP_TEST_LIBDISPATCH}" ]]; then continue fi case "${host}" in macosx-*) + if [[ "${product}" = clibdispatch ]]; then + # we don't build clibdispatch on Darwin + continue + fi LIBDISPATCH_BUILD_DIR=$(build_directory ${host} ${product}) echo "--- Running tests for ${product} ---" with_pushd "${LIBDISPATCH_BUILD_DIR}" \ @@ -2777,6 +2799,9 @@ for host in "${ALL_HOSTS[@]}"; do continue ;; *) + if [[ "${product}" = clibdispatch ]]; then + product=libdispatch + fi results_targets=( "test" ) executable_target="" ;; @@ -2951,13 +2976,21 @@ for host in "${ALL_HOSTS[@]}"; do fi ;; - libdispatch|libdispatch_static) - if [[ -z "${INSTALL_LIBDISPATCH}" ]] ; then + clibdispatch|libdispatch|libdispatch_static) + if [[ "${product}" = clibdispatch ]]; then + if [[ -z "${INSTALL_CLIBDISPATCH}" ]]; then + continue + fi + elif [[ -z "${INSTALL_LIBDISPATCH}" ]]; then continue fi case "${host}" in macosx-*) + if [[ "${product}" = clibdispatch ]]; then + # we don't build clibdispatch on Darwin + continue + fi if [[ -z "${INSTALL_DESTDIR}" ]] ; then echo "--install-destdir is required to install products." exit 1 @@ -2976,6 +3009,9 @@ for host in "${ALL_HOSTS[@]}"; do continue ;; *) + if [[ "${product}" = clibdispatch ]]; then + product=libdispatch + fi ;; esac ;; diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index 05e518e63af5d..7facbaf438567 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -652,6 +652,9 @@ def create_argument_parser(): option('--libdispatch', toggle_true('build_libdispatch'), help='build libdispatch') + option('--clibdispatch', toggle_true('build_clibdispatch'), + help='build clibdispatch') + option('--libicu', toggle_true('build_libicu'), help='build libicu') diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index 3229727a6fdbd..475d01dbe544a 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -70,6 +70,7 @@ 'build_ios_simulator': False, 'build_jobs': multiprocessing.cpu_count(), 'build_libdispatch': False, + 'build_clibdispatch': False, 'build_libicu': False, 'build_linux': True, 'build_llbuild': False, @@ -522,6 +523,7 @@ class BuildScriptImplOption(_BaseOption): EnableOption('--only-executable-test'), EnableOption('--only-non-executable-test'), EnableOption('--libdispatch', dest='build_libdispatch'), + EnableOption('--clibdispatch', dest='build_clibdispatch'), EnableOption('--libicu', dest='build_libicu'), EnableOption('--indexstore-db', dest='build_indexstoredb'), EnableOption('--test-indexstore-db-sanitize-all', diff --git a/utils/swift_build_support/swift_build_support/products/__init__.py b/utils/swift_build_support/swift_build_support/products/__init__.py index 169fe506eeb0e..346b557c83a35 100644 --- a/utils/swift_build_support/swift_build_support/products/__init__.py +++ b/utils/swift_build_support/swift_build_support/products/__init__.py @@ -11,6 +11,7 @@ # ---------------------------------------------------------------------------- from .benchmarks import Benchmarks +from .clibdispatch import CLibDispatch from .cmark import CMark from .foundation import Foundation from .indexstoredb import IndexStoreDB @@ -39,6 +40,7 @@ 'Ninja', 'Foundation', 'LibCXX', + 'CLibDispatch', 'LibDispatch', 'LibICU', 'LLBuild', diff --git a/utils/swift_build_support/swift_build_support/products/clibdispatch.py b/utils/swift_build_support/swift_build_support/products/clibdispatch.py new file mode 100644 index 0000000000000..c9b675c188981 --- /dev/null +++ b/utils/swift_build_support/swift_build_support/products/clibdispatch.py @@ -0,0 +1,44 @@ +# swift_build_support/products/clibdispatch.py -------------------*- python -*- +# +# This source file is part of the Swift.org open source project +# +# Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors +# Licensed under Apache License v2.0 with Runtime Library Exception +# +# See https://swift.org/LICENSE.txt for license information +# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +# +# ---------------------------------------------------------------------------- + +from . import cmark +from . import libcxx +from . import llvm +from . import product + + +class CLibDispatch(product.Product): + @classmethod + def is_build_script_impl_product(cls): + """is_build_script_impl_product -> bool + + Whether this product is produced by build-script-impl. + """ + return True + + @classmethod + def product_source_name(cls): + """product_source_name() -> str + + The name of the source code directory of this product. + """ + return "swift-corelibs-libdispatch" + + @classmethod + def is_nondarwin_only_build_product(cls): + return True + + @classmethod + def get_dependencies(cls): + return [cmark.CMark, + llvm.LLVM, + libcxx.LibCXX] diff --git a/utils/swift_build_support/swift_build_support/products/swift.py b/utils/swift_build_support/swift_build_support/products/swift.py index 1e4b4feb2df9b..dccb79b3b90e3 100644 --- a/utils/swift_build_support/swift_build_support/products/swift.py +++ b/utils/swift_build_support/swift_build_support/products/swift.py @@ -10,6 +10,7 @@ # # ---------------------------------------------------------------------------- +from . import clibdispatch from . import cmark from . import libcxx from . import libicu @@ -147,4 +148,5 @@ def get_dependencies(cls): return [cmark.CMark, llvm.LLVM, libcxx.LibCXX, - libicu.LibICU] + libicu.LibICU, + clibdispatch.CLibDispatch] diff --git a/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build.test b/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build.test index 16fc073567452..1c6a9e8b17e46 100644 --- a/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build.test +++ b/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build.test @@ -3,11 +3,16 @@ # RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --verbose-build --dry-run --infer --swiftpm --cmake %cmake 2>&1 | %FileCheck %s # REQUIRES: standalone_build +# UNSUPPORTED: OS=macosx +# UNSUPPORTED: OS=ios +# UNSUPPORTED: OS=tvos +# UNSUPPORTED: OS=watchos # Build and install the SwiftPM dependencies first. # # CHECK: --- Installing cmark --- # CHECK: --- Installing llvm --- +# CHECK: --- Installing libdispatch --- # CHECK: --- Installing swift --- # CHECK: --- Installing llbuild --- @@ -17,10 +22,12 @@ # CHECK: Initial Product List: # CHECK: cmark # CHECK: llvm +# CHECK: clibdispatch # CHECK: swift # CHECK: Final Build Order: # CHECK: cmark # CHECK: llvm +# CHECK: clibdispatch # CHECK: swift # Then make sure we are installing/building SwiftPM last. diff --git a/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build_darwin.test b/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build_darwin.test new file mode 100644 index 0000000000000..f6106e977bbc0 --- /dev/null +++ b/validation-test/BuildSystem/infer_dumps_deps_if_verbose_build_darwin.test @@ -0,0 +1,30 @@ +# RUN: %empty-directory(%t) +# RUN: mkdir -p %t +# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --verbose-build --dry-run --infer --swiftpm --cmake %cmake 2>&1 | %FileCheck %s + +# REQUIRES: standalone_build +# REQUIRES: OS=macosx || OS=ios || OS=tvos || OS=watchos + +# Build and install the SwiftPM dependencies first. +# +# CHECK: --- Installing cmark --- +# CHECK: --- Installing llvm --- +# CHECK: --- Installing swift --- +# CHECK: --- Installing llbuild --- + +# Just make sure we compute the build graph/emit output. +# +# CHECK: -- Build Graph Inference -- +# CHECK: Initial Product List: +# CHECK: cmark +# CHECK: llvm +# CHECK: swift +# CHECK: Final Build Order: +# CHECK: cmark +# CHECK: llvm +# CHECK: swift + +# Then make sure we are installing/building SwiftPM last. +# +# CHECK: --- Building swiftpm --- +# CHECK: --- Installing swiftpm --- diff --git a/validation-test/BuildSystem/infer_implies_install_all.test b/validation-test/BuildSystem/infer_implies_install_all.test index 48b570c66ec12..d0a1c13af91af 100644 --- a/validation-test/BuildSystem/infer_implies_install_all.test +++ b/validation-test/BuildSystem/infer_implies_install_all.test @@ -3,9 +3,15 @@ # RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --infer --swiftpm --cmake %cmake 2>&1 | %FileCheck %s # REQUIRES: standalone_build +# UNSUPPORTED: OS=macosx +# UNSUPPORTED: OS=ios +# UNSUPPORTED: OS=tvos +# UNSUPPORTED: OS=watchos + # CHECK: --- Installing cmark --- # CHECK: --- Installing llvm --- +# CHECK: --- Installing libdispatch --- # CHECK: --- Installing swift --- # CHECK: --- Installing llbuild --- # CHECK: --- Building swiftpm --- diff --git a/validation-test/BuildSystem/infer_implies_install_all_darwin.test b/validation-test/BuildSystem/infer_implies_install_all_darwin.test new file mode 100644 index 0000000000000..71ee6199d7b40 --- /dev/null +++ b/validation-test/BuildSystem/infer_implies_install_all_darwin.test @@ -0,0 +1,13 @@ +# RUN: %empty-directory(%t) +# RUN: mkdir -p %t +# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --infer --swiftpm --cmake %cmake 2>&1 | %FileCheck %s + +# REQUIRES: standalone_build +# REQUIRES: OS=macosx || OS=ios || OS=tvos || OS=watchos + +# CHECK: --- Installing cmark --- +# CHECK: --- Installing llvm --- +# CHECK: --- Installing swift --- +# CHECK: --- Installing llbuild --- +# CHECK: --- Building swiftpm --- +# CHECK: --- Installing swiftpm --- diff --git a/validation-test/BuildSystem/install_all_linux.test b/validation-test/BuildSystem/install_all_linux.test index 60dd5ab950ab0..5f20dc6859fe8 100644 --- a/validation-test/BuildSystem/install_all_linux.test +++ b/validation-test/BuildSystem/install_all_linux.test @@ -6,6 +6,7 @@ # REQUIRES: OS=linux-gnu # CHECK-DAG: --- Installing cmark --- +# CHECK-DAG: --- Installing libdispatch --- # CHECK-DAG: --- Installing swift --- # CHECK-DAG: --- Installing llvm --- # CHECK-DAG: --- Installing llbuild --- diff --git a/validation-test/BuildSystem/skip_cmark_swift_llvm.test b/validation-test/BuildSystem/skip_cmark_swift_llvm.test index b703a4f5b6f26..ab78d5bc76d88 100644 --- a/validation-test/BuildSystem/skip_cmark_swift_llvm.test +++ b/validation-test/BuildSystem/skip_cmark_swift_llvm.test @@ -1,5 +1,10 @@ # REQUIRES: standalone_build +# UNSUPPORTED: OS=macosx +# UNSUPPORTED: OS=ios +# UNSUPPORTED: OS=tvos +# UNSUPPORTED: OS=watchos + # RUN: %empty-directory(%t) # RUN: mkdir -p %t # RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --install-all --cmake %cmake --skip-build-cmark 2>&1 | %FileCheck --check-prefix=SKIP-CMARK-CHECK %s @@ -17,6 +22,7 @@ # SKIP-CMARK-CHECK: cmake --build {{.*}}swift- # SKIP-CMARK-CHECK-NOT: --- Installing cmark --- # SKIP-CMARK-CHECK: --- Installing llvm --- +# SKIP-CMARK-CHECK: --- Installing libdispatch --- # SKIP-CMARK-CHECK: --- Installing swift --- # SKIP-LLVM-CHECK: cmake --build {{.*}}cmark- @@ -24,6 +30,7 @@ # SKIP-LLVM-CHECK: cmake --build {{.*}}swift- # SKIP-LLVM-CHECK: --- Installing cmark --- # SKIP-LLVM-CHECK-NOT: --- Installing llvm --- +# SKIP-LLVM-CHECK: --- Installing libdispatch --- # SKIP-LLVM-CHECK: --- Installing swift --- # SKIP-SWIFT-CHECK: cmake --build {{.*}}cmark- diff --git a/validation-test/BuildSystem/skip_cmark_swift_llvm_darwin.test b/validation-test/BuildSystem/skip_cmark_swift_llvm_darwin.test new file mode 100644 index 0000000000000..0b9db94156f6f --- /dev/null +++ b/validation-test/BuildSystem/skip_cmark_swift_llvm_darwin.test @@ -0,0 +1,36 @@ +# REQUIRES: standalone_build +# REQUIRES: OS=macosx || OS=ios || OS=tvos || OS=watchos + +# RUN: %empty-directory(%t) +# RUN: mkdir -p %t +# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --install-all --cmake %cmake --skip-build-cmark 2>&1 | %FileCheck --check-prefix=SKIP-CMARK-CHECK %s + +# RUN: %empty-directory(%t) +# RUN: mkdir -p %t +# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --install-all --cmake %cmake --skip-build-llvm 2>&1 | %FileCheck --check-prefix=SKIP-LLVM-CHECK %s + +# RUN: %empty-directory(%t) +# RUN: mkdir -p %t +# RUN: SWIFT_BUILD_ROOT=%t %swift_src_root/utils/build-script --dry-run --install-all --cmake %cmake --skip-build-swift 2>&1 | %FileCheck --check-prefix=SKIP-SWIFT-CHECK %s + +# SKIP-CMARK-CHECK-NOT: cmake --build {{.*}}cmark- +# SKIP-CMARK-CHECK: cmake --build {{.*}}llvm- +# SKIP-CMARK-CHECK: cmake --build {{.*}}swift- +# SKIP-CMARK-CHECK-NOT: --- Installing cmark --- +# SKIP-CMARK-CHECK: --- Installing llvm --- +# SKIP-CMARK-CHECK: --- Installing swift --- + +# SKIP-LLVM-CHECK: cmake --build {{.*}}cmark- +# SKIP-LLVM-CHECK: cmake --build {{.*}}llvm-tblgen +# SKIP-LLVM-CHECK: cmake --build {{.*}}swift- +# SKIP-LLVM-CHECK: --- Installing cmark --- +# SKIP-LLVM-CHECK-NOT: --- Installing llvm --- +# SKIP-LLVM-CHECK: --- Installing swift --- + +# SKIP-SWIFT-CHECK: cmake --build {{.*}}cmark- +# SKIP-SWIFT-CHECK: cmake --build {{.*}}llvm- +# SKIP-SWIFT-CHECK-NOT: cmake --build {{.*}}swift- +# SKIP-SWIFT-CHECK: --- Installing cmark --- +# SKIP-SWIFT-CHECK: --- Installing llvm --- +# SKIP-SWIFT-CHECK-NOT: --- Installing swift --- + From 783c17795620774e76c101513b6a8bcd827fc69c Mon Sep 17 00:00:00 2001 From: Ben Barham Date: Fri, 5 Feb 2021 08:36:02 +1000 Subject: [PATCH 5/5] [Refactoring] Fix stack use after free in new async refactorings Resolves rdar://73984220 --- lib/IDE/Refactoring.cpp | 6 ++++-- test/refactoring/ConvertAsync/basic.swift | 2 -- test/refactoring/ConvertAsync/convert_function.swift | 2 -- test/refactoring/ConvertAsync/convert_params_multi.swift | 2 -- test/refactoring/ConvertAsync/convert_params_single.swift | 2 -- test/refactoring/ConvertAsync/convert_result.swift | 2 -- test/refactoring/ConvertAsync/errors.swift | 2 -- 7 files changed, 4 insertions(+), 14 deletions(-) diff --git a/lib/IDE/Refactoring.cpp b/lib/IDE/Refactoring.cpp index 30dcb61aee213..c94b62221dcf4 100644 --- a/lib/IDE/Refactoring.cpp +++ b/lib/IDE/Refactoring.cpp @@ -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()) @@ -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()) diff --git a/test/refactoring/ConvertAsync/basic.swift b/test/refactoring/ConvertAsync/basic.swift index 1d0eb3c516076..c0d349ac500e9 100644 --- a/test/refactoring/ConvertAsync/basic.swift +++ b/test/refactoring/ConvertAsync/basic.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan enum CustomError: Error { case invalid case insecure diff --git a/test/refactoring/ConvertAsync/convert_function.swift b/test/refactoring/ConvertAsync/convert_function.swift index ddd334152c7de..433df061bc2d9 100644 --- a/test/refactoring/ConvertAsync/convert_function.swift +++ b/test/refactoring/ConvertAsync/convert_function.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan enum CustomError : Error { case Bad } diff --git a/test/refactoring/ConvertAsync/convert_params_multi.swift b/test/refactoring/ConvertAsync/convert_params_multi.swift index 70409c4222bea..86664bdb2ddce 100644 --- a/test/refactoring/ConvertAsync/convert_params_multi.swift +++ b/test/refactoring/ConvertAsync/convert_params_multi.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan func manyWithError(_ completion: (String?, Int?, Error?) -> Void) { } // RUN: %refactor -convert-call-to-async-alternative -dump-text -source-filename %s -pos=%(line+1):3 | %FileCheck -check-prefix=MANYBOUND %s diff --git a/test/refactoring/ConvertAsync/convert_params_single.swift b/test/refactoring/ConvertAsync/convert_params_single.swift index 45dea4606d53b..e8e7e1395e817 100644 --- a/test/refactoring/ConvertAsync/convert_params_single.swift +++ b/test/refactoring/ConvertAsync/convert_params_single.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan func withError(_ completion: (String?, Error?) -> Void) { } func test(_ str: String) -> Bool { return false } diff --git a/test/refactoring/ConvertAsync/convert_result.swift b/test/refactoring/ConvertAsync/convert_result.swift index 7ae4669f80117..9764164e3e941 100644 --- a/test/refactoring/ConvertAsync/convert_result.swift +++ b/test/refactoring/ConvertAsync/convert_result.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan func simple(_ completion: (Result) -> Void) { } func noError(_ completion: (Result) -> Void) { } func test(_ str: String) -> Bool { return false } diff --git a/test/refactoring/ConvertAsync/errors.swift b/test/refactoring/ConvertAsync/errors.swift index 3fa63103e7527..20846cc2c1d2d 100644 --- a/test/refactoring/ConvertAsync/errors.swift +++ b/test/refactoring/ConvertAsync/errors.swift @@ -1,5 +1,3 @@ -// rdar://problem/73984220 -// XFAIL: asan func simple(completion: (String?, Error?) -> Void) { } func mismatches() {