diff --git a/src/cmd/compile/internal/ir/expr.go b/src/cmd/compile/internal/ir/expr.go
index 9b4577b..b5ab950 100644
--- a/src/cmd/compile/internal/ir/expr.go
+++ b/src/cmd/compile/internal/ir/expr.go
@@ -916,16 +916,19 @@
return nil
}
+ var lhs Node
var rhs Node
FindRHS:
switch defn.Op() {
case OAS:
defn := defn.(*AssignStmt)
+ lhs = defn.X
rhs = defn.Y
case OAS2:
defn := defn.(*AssignListStmt)
for i, lhs := range defn.Lhs {
if lhs == n {
+ lhs = defn.Lhs[i]
rhs = defn.Rhs[i]
break FindRHS
}
@@ -935,6 +938,9 @@
return nil
}
if rhs == nil {
+ if name, ok := lhs.(*Name); ok && name.AutoTemp() {
+ return nil
+ }
base.FatalfAt(defn.Pos(), "RHS is nil: %v", defn)
}
diff --git a/src/cmd/compile/internal/ir/reassignment.go b/src/cmd/compile/internal/ir/reassignment.go
index ff3d08c..97c55e4 100644
--- a/src/cmd/compile/internal/ir/reassignment.go
+++ b/src/cmd/compile/internal/ir/reassignment.go
@@ -202,16 +202,19 @@
return nil
}
+ var lhs Node
var rhs Node
FindRHS:
switch defn.Op() {
case OAS:
defn := defn.(*AssignStmt)
+ lhs = defn.X
rhs = defn.Y
case OAS2:
defn := defn.(*AssignListStmt)
for i, lhs := range defn.Lhs {
if lhs == n {
+ lhs = defn.Lhs[i]
rhs = defn.Rhs[i]
break FindRHS
}
@@ -221,6 +224,9 @@
return nil
}
if rhs == nil {
+ if name, ok := lhs.(*Name); ok && name.AutoTemp() {
+ return nil
+ }
base.FatalfAt(defn.Pos(), "RHS is nil: %v", defn)
}