]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: attach slots to incoming params for better debugging
authorDavid Chase <drchase@google.com>
Thu, 11 Oct 2018 21:48:33 +0000 (17:48 -0400)
committerDavid Chase <drchase@google.com>
Thu, 18 Oct 2018 20:04:31 +0000 (20:04 +0000)
This change attaches a slots to the OpArg values for
incoming params, and this in turn causes location lists
to be generated for params, and that yields better
debugging, in delve and sometimes in gdb.

The parameter lifetimes could start earlier; they are in
fact defined on entry, not at the point where the OpArg is
finally mentioned.  (that will be addressed in another CL)

Change-Id: Icca891e118291d260c35a14acd5bc92bb82d9e9f
Reviewed-on: https://go-review.googlesource.com/c/141697
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/ssa.go

index d3a30879dbd2cc7074ddfd394a7f09b8912ff3e7..3818aaf6b0ec2db878dbb0be3b09a52626901c11 100644 (file)
@@ -202,7 +202,9 @@ func buildssa(fn *Node, worker int) *ssa.Func {
        // Populate SSAable arguments.
        for _, n := range fn.Func.Dcl {
                if n.Class() == PPARAM && s.canSSA(n) {
-                       s.vars[n] = s.newValue0A(ssa.OpArg, n.Type, n)
+                       v := s.newValue0A(ssa.OpArg, n.Type, n)
+                       s.vars[n] = v
+                       s.addNamedValue(n, v) // This helps with debugging information, not needed for compilation itself.
                }
        }