diff --git a/validation-test/Sema/type_checker_perf/fast/issue-43715.swift b/validation-test/Sema/type_checker_perf/fast/issue-43715.swift new file mode 100644 index 0000000000000..ec9e7ffe59fff --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-43715.swift @@ -0,0 +1,5 @@ +// RUN: %target-typecheck-verify-swift -solver-scope-threshold=300 + +func slow(someOptionalString: String?) { + print("\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")\(someOptionalString ?? "")") +} diff --git a/validation-test/Sema/type_checker_perf/fast/issue-43943.swift.gyb b/validation-test/Sema/type_checker_perf/fast/issue-43943.swift.gyb new file mode 100644 index 0000000000000..cebc498e0b6e5 --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-43943.swift.gyb @@ -0,0 +1,20 @@ +// RUN: %scale-test --begin 1 --end 6 --step 1 --select NumLeafScopes %s +// REQUIRES: asserts,no_asan + +extension String { + func replacingOccurrences(of: String, with: String) -> String { + return "" + } +} + +func slow(something: String?) { + var str = "" + + [ +%for i in range(0, N): + ("${i}", something ?? ""), +%end + ].forEach { + str = str.replacingOccurrences(of: $0, with: $1) + } +} diff --git a/validation-test/Sema/type_checker_perf/fast/issue-44181.swift b/validation-test/Sema/type_checker_perf/fast/issue-44181.swift new file mode 100644 index 0000000000000..d9b4dd9faff84 --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-44181.swift @@ -0,0 +1,23 @@ +// RUN: %target-typecheck-verify-swift -solver-scope-threshold=300 + +enum DebugValue { + case TupleValue([(name: String?, value: DebugValue)]) + + var stringRepresentation: String { + switch self { + case .TupleValue(let values): + return "(\(values.map { ($0.name.flatMap { "\($0): " } ?? "") + $0.value.stringRepresentation }.joined(separator: ", ")))" + } + } +} + +extension DebugValue : Equatable { } + +func == (lhs: DebugValue, rhs: DebugValue) -> Bool { + switch (lhs, rhs) { + case (DebugValue.TupleValue(let xs), DebugValue.TupleValue(let ys)) where xs.count == ys.count: + return zip(xs, ys).reduce(true) { $0 ? $1.0.name == $1.1.name && $1.0.value == $1.1.value : false } + default: + return false + } +} diff --git a/validation-test/Sema/type_checker_perf/fast/issue-46430.swift b/validation-test/Sema/type_checker_perf/fast/issue-46430.swift new file mode 100644 index 0000000000000..16fafd0ee8c97 --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-46430.swift @@ -0,0 +1,11 @@ +// RUN: %target-typecheck-verify-swift -solver-scope-threshold=200 + +func slow(_ m: [[UInt32]]) { + var n = m + for i in 1 ..< 10 { + for j in 1 ..< 10 { + n[i][j] = min(n[i - 1][j - 1], n[i - 1][j], n[i][j - 1]) + 1 + } + } +} + diff --git a/validation-test/Sema/type_checker_perf/fast/issue-46477.swift b/validation-test/Sema/type_checker_perf/fast/issue-46477.swift new file mode 100644 index 0000000000000..dc236d7d623b5 --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-46477.swift @@ -0,0 +1,10 @@ +// RUN: %target-typecheck-verify-swift -solver-scope-threshold=2000 + +func foo(_ string: String) -> Int { + let bar = Array(string) + .reversed() + .enumerated() + .map { ((1 << ($0 + 1)) % 11) * Int(String($1))! } + .reduce(0) { $0 + $1 } + return (12 - bar % 11) % 11 +} diff --git a/validation-test/Sema/type_checker_perf/fast/issue-48418.swift.gyb b/validation-test/Sema/type_checker_perf/fast/issue-48418.swift.gyb new file mode 100644 index 0000000000000..ce28ffc3c22cc --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/issue-48418.swift.gyb @@ -0,0 +1,27 @@ +// RUN: %scale-test --begin 1 --end 6 --step 1 --select NumLeafScopes %s +// REQUIRES: asserts,no_asan + +enum A { + case a +} + +enum B { + case none + + func encode() -> Int { + return 0 + } +} + +extension Int { + func print() {} +} + +func encode(settings: Dictionary) { + ( +%for i in range(0, N): + (settings[.a] ?? .none).encode() | +%end + (settings[.a] ?? .none).encode() + ).print() +} diff --git a/validation-test/Sema/type_checker_perf/slow/rdar23327871.swift.gyb b/validation-test/Sema/type_checker_perf/fast/rdar23327871.swift.gyb similarity index 74% rename from validation-test/Sema/type_checker_perf/slow/rdar23327871.swift.gyb rename to validation-test/Sema/type_checker_perf/fast/rdar23327871.swift.gyb index 1b4085ffc6ec7..32d5110c10036 100644 --- a/validation-test/Sema/type_checker_perf/slow/rdar23327871.swift.gyb +++ b/validation-test/Sema/type_checker_perf/fast/rdar23327871.swift.gyb @@ -1,4 +1,4 @@ -// RUN: %scale-test --begin 8 --end 16 --step 1 --select NumLeafScopes %s -Xfrontend=-solver-expression-time-threshold=1 +// RUN: %scale-test --begin 8 --end 16 --step 1 --select NumLeafScopes %s // REQUIRES: asserts,no_asan let i = 1 diff --git a/validation-test/Sema/type_checker_perf/fast/rdar25866240.swift.gyb b/validation-test/Sema/type_checker_perf/fast/rdar25866240.swift.gyb new file mode 100644 index 0000000000000..866705e8427a0 --- /dev/null +++ b/validation-test/Sema/type_checker_perf/fast/rdar25866240.swift.gyb @@ -0,0 +1,11 @@ +// RUN: not %scale-test --begin 1 --end 5 --step 1 --select incrementScopeCounter %s +// REQUIRES: OS=macosx +// REQUIRES: asserts + +func f() { +% for i in range(N): + let collection${i} = [String]() +% end + + _ = ${' + '.join("collection%s" % i for i in range(N))} +} diff --git a/validation-test/Sema/type_checker_perf/fast/rdar33688063.swift b/validation-test/Sema/type_checker_perf/fast/rdar33688063.swift index f33d299f9a109..dfa01ebd6465c 100644 --- a/validation-test/Sema/type_checker_perf/fast/rdar33688063.swift +++ b/validation-test/Sema/type_checker_perf/fast/rdar33688063.swift @@ -1,4 +1,4 @@ -// RUN: %target-typecheck-verify-swift -solver-expression-time-threshold=1 +// RUN: %target-typecheck-verify-swift -solver-scope-threshold=200 // REQUIRES: tools-release,no_asan let _ = 1 | UInt32(0) << 0 | UInt32(1) << 1 | UInt32(2) << 2 | UInt32(3) << 3 | UInt32(4) << 4 diff --git a/validation-test/Sema/type_checker_perf/slow/rdar25866240.gyb b/validation-test/Sema/type_checker_perf/slow/rdar25866240.gyb deleted file mode 100644 index d42e1bb7a421c..0000000000000 --- a/validation-test/Sema/type_checker_perf/slow/rdar25866240.gyb +++ /dev/null @@ -1,26 +0,0 @@ -// RUN: %target-typecheck-verify-swift -solver-expression-time-threshold=1 -// REQUIRES: asserts,no_asan - -func f( - collection1: [String], - collection2: [String], - collection3: [String], - collection4: [String], - collection5: [String], - collection6: [String], - collection7: [String], - collection8: [String], - collection9: [String], - collection10: [String] -) { - _ = collection1 + - collection2 + - collection3 + - collection4 + - collection5 + - collection6 + - collection7 + - collection8 + - collection9 + - collection10 -}