initConst                           // contains some constant values, which may be written into data symbols
 )
 
-func getdyn(n *Node, top int) initGenType {
+// getdyn calculates the initGenType for n.
+// If top is false, getdyn is recursing.
+func getdyn(n *Node, top bool) initGenType {
        switch n.Op {
        default:
                if isliteral(n) {
                return initDynamic
 
        case OARRAYLIT:
-               if top == 0 && n.Type.IsSlice() {
+               if !top && n.Type.IsSlice() {
                        return initDynamic
                }
 
        var mode initGenType
        for _, n1 := range n.List.Slice() {
                value := n1.Right
-               mode |= getdyn(value, 0)
+               mode |= getdyn(value, false)
                if mode == initDynamic|initConst {
                        break
                }
        // make static initialized array (1),(2)
        var vstat *Node
 
-       mode := getdyn(n, 1)
+       mode := getdyn(n, true)
        if mode&initConst != 0 {
                vstat = staticname(t, ctxt)
                arraylit(ctxt, 1, n, vstat, init)