summaryrefslogtreecommitdiffstats
path: root/llgo/test/execution/strings/range.go
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-11-27 00:06:42 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2014-11-27 00:06:42 +0000
commitad9841e8ac74bfcb1814b728a143408e87dd00a7 (patch)
treea36b962fece0b5b9676f26c1af90b43388069284 /llgo/test/execution/strings/range.go
parent5468e86469f716eb40b1b39dfd9fd92e4f35df9e (diff)
downloadbcm5719-llvm-ad9841e8ac74bfcb1814b728a143408e87dd00a7.tar.gz
bcm5719-llvm-ad9841e8ac74bfcb1814b728a143408e87dd00a7.zip
Initial commit of llgo.
llvm-svn: 222857
Diffstat (limited to 'llgo/test/execution/strings/range.go')
-rw-r--r--llgo/test/execution/strings/range.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/llgo/test/execution/strings/range.go b/llgo/test/execution/strings/range.go
new file mode 100644
index 00000000000..c68b02a6680
--- /dev/null
+++ b/llgo/test/execution/strings/range.go
@@ -0,0 +1,86 @@
+// RUN: llgo -o %t %s
+// RUN: %t 2>&1 | FileCheck %s
+
+// CHECK: 0 46 1
+// CHECK-NEXT: 0 46
+// CHECK-NEXT: 0 169 1
+// CHECK-NEXT: 0 169
+// CHECK-NEXT: 0 8364 1
+// CHECK-NEXT: 0 8364
+// CHECK-NEXT: 0 66560 1
+// CHECK-NEXT: 0 66560
+// CHECK-NEXT: 0 83 1
+// CHECK-NEXT: 1 97 2
+// CHECK-NEXT: 2 108 3
+// CHECK-NEXT: 3 101 4
+// CHECK-NEXT: 4 32 5
+// CHECK-NEXT: 5 112 6
+// CHECK-NEXT: 6 114 7
+// CHECK-NEXT: 7 105 8
+// CHECK-NEXT: 8 99 9
+// CHECK-NEXT: 9 101 10
+// CHECK-NEXT: 10 58 11
+// CHECK-NEXT: 11 32 12
+// CHECK-NEXT: 12 8364 13
+// CHECK-NEXT: 15 48 14
+// CHECK-NEXT: 16 46 15
+// CHECK-NEXT: 17 57 16
+// CHECK-NEXT: 18 57 17
+// CHECK-NEXT: 0 83
+// CHECK-NEXT: 1 97
+// CHECK-NEXT: 2 108
+// CHECK-NEXT: 3 101
+// CHECK-NEXT: 4 32
+// CHECK-NEXT: 5 112
+// CHECK-NEXT: 6 114
+// CHECK-NEXT: 7 105
+// CHECK-NEXT: 8 99
+// CHECK-NEXT: 9 101
+// CHECK-NEXT: 10 58
+// CHECK-NEXT: 11 32
+// CHECK-NEXT: 12 8364
+// CHECK-NEXT: 15 48
+// CHECK-NEXT: 16 46
+// CHECK-NEXT: 17 57
+// CHECK-NEXT: 18 57
+
+package main
+
+func printchars(s string) {
+ var x int
+ for i, c := range s {
+ // test loop-carried dependence (x++), introducing a Phi node
+ x++
+ println(i, c, x)
+ }
+
+ // now test with plain old assignment
+ var i int
+ var c rune
+ for i, c = range s {
+ println(i, c)
+ if i == len(s)-1 {
+ // test multiple branches to loop header
+ continue
+ }
+ }
+}
+
+func main() {
+ // 1 bytes
+ printchars(".")
+
+ // 2 bytes
+ printchars("©")
+
+ // 3 bytes
+ printchars("€")
+
+ // 4 bytes
+ printchars("𐐀")
+
+ // mixed
+ printchars("Sale price: €0.99")
+
+ // TODO add test cases for invalid sequences
+}
OpenPOWER on IntegriCloud