On Tue, Jan 22, 2019 at 10:45:17PM -0800, Jakub Kicinski wrote: > Hi! > > This set adds support for complete removal of dead code. > > Patch 3 contains all the code removal logic, patches 2 and 4 > additionally optimize branches around and to dead code. > > Patches 6 and 7 allow offload JITs to take advantage of the > optimization. After a few small clean ups (8, 9, 10) nfp > support is added (11, 12). > > Removing code directly in the verifier makes it easy to adjust > the relevant metadata (line info, subprogram info). JITs for > code store constrained architectures would have hard time > performing such adjustments at JIT level. Removing subprograms > or line info is very hard once BPF core finished the verification. > For user space to perform dead code removal it would have to perform > the execution simulation/analysis similar to what the verifier does. > > v3: > - fix uninitilized var warning in GCC 6 (buildbot). > v4: > - simplify the linfo-keeping logic (Yonghong). Instead of > trying to figure out that we are removing first instruction > of a subprogram, just always keep last dead line info, if > first live instruction doesn't have one. > v5: > - improve comments (Martin Lau).
The verifier is taking a page from the dragon book. Applied to bpf-next. Thanks!