diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2018-11-15 20:16:20 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-11-21 05:30:44 +0100 |
| commit | 5a0d6e039dc1a8bdf3e14650f0eb106e0196e178 (patch) | |
| tree | 671299895fb86020f1ee8f2210c9d5158d3542ae /prog/minimization.go | |
| parent | 846317099cc35cf590d6bea9950ca5e8ce51664d (diff) | |
prog: try to nullify pointers when minimizing
This patch changes minimization routines to try assigning a.Res to nil
for each pointer arg.
Diffstat (limited to 'prog/minimization.go')
| -rw-r--r-- | prog/minimization.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/prog/minimization.go b/prog/minimization.go index 35cff7976..1762bbbae 100644 --- a/prog/minimization.go +++ b/prog/minimization.go @@ -121,11 +121,20 @@ func (typ *UnionType) minimize(ctx *minimizeArgsCtx, arg Arg, path string) bool } func (typ *PtrType) minimize(ctx *minimizeArgsCtx, arg Arg, path string) bool { - // TODO: try to remove optional ptrs a := arg.(*PointerArg) if a.Res == nil { return false } + if !ctx.triedPaths[path+"->"] { + removeArg(a.Res) + replaceArg(a, MakeSpecialPointerArg(a.Type(), 0)) + ctx.target.assignSizesCall(ctx.call) + if ctx.pred(ctx.p, ctx.callIndex0) { + *ctx.p0 = ctx.p + } + ctx.triedPaths[path+"->"] = true + return true + } return ctx.do(a.Res, path) } |
