Merge pull request #13411 from frootloops/expect-crash

diff --git a/benchmark/single-source/StringComparison.swift b/benchmark/single-source/StringComparison.swift
index 0422bfd..1397f00 100644
--- a/benchmark/single-source/StringComparison.swift
+++ b/benchmark/single-source/StringComparison.swift
@@ -63,19 +63,21 @@
     name: "StringComparison_zalgo",
     runFunction: run_StringComparison_zalgo,
     tags: [.validation, .api, .String]),    
+  BenchmarkInfo(
+    name: "StringComparison_longSharedPrefix",
+    runFunction: run_StringComparison_longSharedPrefix,
+    tags: [.validation, .api, .String]),    
 ]
     
   @inline(never)
   public func run_StringComparison_ascii(_ N: Int) {
-    var count = 0
     let workload = Workload.ascii
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -83,15 +85,13 @@
     
   @inline(never)
   public func run_StringComparison_latin1(_ N: Int) {
-    var count = 0
     let workload = Workload.latin1
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -99,15 +99,13 @@
     
   @inline(never)
   public func run_StringComparison_fastPrenormal(_ N: Int) {
-    var count = 0
     let workload = Workload.fastPrenormal
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -115,15 +113,13 @@
     
   @inline(never)
   public func run_StringComparison_slowerPrenormal(_ N: Int) {
-    var count = 0
     let workload = Workload.slowerPrenormal
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -131,15 +127,13 @@
     
   @inline(never)
   public func run_StringComparison_nonBMPSlowestPrenormal(_ N: Int) {
-    var count = 0
     let workload = Workload.nonBMPSlowestPrenormal
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -147,15 +141,13 @@
     
   @inline(never)
   public func run_StringComparison_emoji(_ N: Int) {
-    var count = 0
     let workload = Workload.emoji
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -163,15 +155,13 @@
     
   @inline(never)
   public func run_StringComparison_abnormal(_ N: Int) {
-    var count = 0
     let workload = Workload.abnormal
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -179,15 +169,27 @@
     
   @inline(never)
   public func run_StringComparison_zalgo(_ N: Int) {
-    var count = 0
     let workload = Workload.zalgo
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
+        }
+      }
+    }
+  }
+    
+  @inline(never)
+  public func run_StringComparison_longSharedPrefix(_ N: Int) {
+    let workload = Workload.longSharedPrefix
+    let tripCount = workload.tripCount
+    let payload = workload.payload
+    for _ in 1...tripCount*N {
+      for s1 in payload {
+        for s2 in payload {
+          blackHole(s1 < s2)
         }
       }
     }
@@ -389,4 +391,19 @@
     scaleMultiplier: 0.25
   )
   
+  static let longSharedPrefix = Workload(
+    name: "LongSharedPrefix",
+    payload: """
+    http://www.dogbook.com/dog/239495828/friends/mutual/2939493815
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739/shared
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739/shared
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.🤔
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    🤔Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.🤔
+    """.lines()
+  )
+  
 }
\ No newline at end of file
diff --git a/benchmark/single-source/StringComparison.swift.gyb b/benchmark/single-source/StringComparison.swift.gyb
index 27112f3..25c5a40 100644
--- a/benchmark/single-source/StringComparison.swift.gyb
+++ b/benchmark/single-source/StringComparison.swift.gyb
@@ -30,7 +30,7 @@
   }
 }
 
-% Names = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal", "nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo"]
+% Names = ["ascii", "latin1", "fastPrenormal", "slowerPrenormal", "nonBMPSlowestPrenormal", "emoji", "abnormal", "zalgo", "longSharedPrefix"]
 
 public let StringComparison = [
 % for Name in Names:
@@ -44,15 +44,13 @@
 % for Name in Names:
   @inline(never)
   public func run_StringComparison_${Name}(_ N: Int) {
-    var count = 0
     let workload = Workload.${Name}
     let tripCount = workload.tripCount
     let payload = workload.payload
     for _ in 1...tripCount*N {
       for s1 in payload {
         for s2 in payload {
-          let cmp = s1 < s2
-          count += cmp ? 1 : 0
+          blackHole(s1 < s2)
         }
       }
     }
@@ -255,4 +253,19 @@
     scaleMultiplier: 0.25
   )
   
+  static let longSharedPrefix = Workload(
+    name: "LongSharedPrefix",
+    payload: """
+    http://www.dogbook.com/dog/239495828/friends/mutual/2939493815
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739/shared
+    http://www.dogbook.com/dog/239495828/friends/mutual/3910583739/shared
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.🤔
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+    🤔Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.🤔
+    """.lines()
+  )
+  
 }
\ No newline at end of file