aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/gc/range.go25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/cmd/compile/internal/gc/range.go b/src/cmd/compile/internal/gc/range.go
index c9f2f01282..1b423ed36c 100644
--- a/src/cmd/compile/internal/gc/range.go
+++ b/src/cmd/compile/internal/gc/range.go
@@ -155,27 +155,36 @@ func walkrange(n *Node) *Node {
lno := setlineno(a)
n.Right = nil
- var v1 *Node
- if n.List.Len() != 0 {
+ var v1, v2 *Node
+ l := n.List.Len()
+ if l > 0 {
v1 = n.List.First()
}
- var v2 *Node
- if n.List.Len() > 1 && !isblank(n.List.Second()) {
+
+ if l > 1 {
v2 = n.List.Second()
}
- if v1 == nil && v2 != nil {
- Fatalf("walkrange: v2 != nil while v1 == nil")
+ if isblank(v2) {
+ v2 = nil
}
- var ifGuard *Node
+ if isblank(v1) && v2 == nil {
+ v1 = nil
+ }
- translatedLoopOp := OFOR
+ if v1 == nil && v2 != nil {
+ Fatalf("walkrange: v2 != nil while v1 == nil")
+ }
// n.List has no meaning anymore, clear it
// to avoid erroneous processing by racewalk.
n.List.Set(nil)
+ var ifGuard *Node
+
+ translatedLoopOp := OFOR
+
var body []*Node
var init []*Node
switch t.Etype {