// spilling the value with the most distant next use.
continue
}
- // Copy input to a new clobberable register.
+ // Copy input to a different register that won't be clobbered.
c := s.allocValToReg(v.Args[i], m, true, v.Pos)
s.copies[c] = false
- args[i] = c
}
// Pick a temporary register if needed.
--- /dev/null
+// compile
+
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package reorder
+
+type Element struct {
+ A string
+ B string
+ C string
+ D string
+ E string
+ Text []string
+ List []string
+ Child Elements
+ F string
+ G bool
+ H bool
+ I string
+}
+
+type Elements []Element
+
+func DoesNotCompile(ve Elements) Elements {
+ aa := Elements{}
+ bb := Elements{}
+ cc := Elements{}
+ dd := Elements{}
+ ee := Elements{}
+ ff := Elements{}
+ gg := Elements{}
+ hh := Elements{}
+ ii := Elements{}
+
+ if len(ve) != 1 {
+ return ve
+ }
+ for _, e := range ve[0].Child {
+ if len(e.Text) == 1 && (e.Text[0] == "xx") {
+ ee = append(ee, e)
+ } else if len(e.Text) == 1 && e.Text[0] == "yy" {
+ for _, c := range e.Child {
+ if len(c.Text) == 1 && c.Text[0] == "zz" {
+ ii = append(ii, c)
+ } else {
+ hh = append(hh, c)
+ }
+ }
+ ii = append(ii, hh...)
+ e.Child = ii
+ gg = append(gg, e)
+ } else if len(e.Text) == 1 && e.Text[0] == "tt" {
+ for _, entry := range e.Child {
+ for _, c := range entry.Child {
+ if len(c.Text) == 1 && c.Text[0] == "ee" {
+ cc = append(cc, c)
+ } else {
+ dd = append(dd, c)
+ }
+ }
+ cc = append(cc, dd...)
+ entry.Child = cc
+ bb = append(bb, entry)
+ cc, dd = Elements{}, Elements{}
+ }
+ e.Child = bb
+ aa = append(aa, e)
+ } else {
+ ff = append(ff, e)
+ }
+ }
+ return ve
+}