{name: "early deadcode", fn: deadcode}, // remove generated dead code to avoid doing pointless work during opt
{name: "short circuit", fn: shortcircuit},
{name: "decompose user", fn: decomposeUser, required: true},
- {name: "opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules
- {name: "zero arg cse", fn: zcse, required: true}, // required to merge OpSB values
- {name: "opt deadcode", fn: deadcode}, // remove any blocks orphaned during opt
+ {name: "opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules
+ {name: "zero arg cse", fn: zcse, required: true}, // required to merge OpSB values
+ {name: "opt deadcode", fn: deadcode, required: true}, // remove any blocks orphaned during opt
{name: "generic cse", fn: cse},
{name: "phiopt", fn: phiopt},
{name: "nilcheckelim", fn: nilcheckelim},
}
delete(f.NamedValues, name)
case t.Size() > f.Config.IntSize:
- f.Unimplementedf("undecomposed named type %s", t)
+ f.Unimplementedf("undecomposed named type %s %s", name, t)
default:
newNames = append(newNames, name)
}