On Wed, Nov 05, 2014 at 12:19:22PM +0300, Yury Gribov wrote: > On 11/03/2014 05:27 PM, Marek Polacek wrote: > >Another shot at optimizing redundant UBSAN_NULL statements. > > > >This time we walk the dominator tree - that should result in > >more effective optimization - and keep a list of UBSAN_NULL > >statements that dominate the current block, see the comment > >before sanopt_optimize_walker. > > Marek, > > A general question - have you considered coding this as a dataflow loop > instead of dominator walk? That would allow to also remove checks for > variables defined via PHI nodes provided that all arguments of PHI have > already been checked.
I'd be afraid that we'd turn sanopt into another var-tracking that way, with possibly huge hash tables being copied on write, merging of the tables etc., with big memory and time requirements, having to add --param limits to give up if the sum size of the tables go over certain limit. Or can you explain how this problem is different from the var-tracking problem? The way Marek has coded it up is pretty cheap optimization. BTW, as discussed privately with Marek last time, we probably want to optimize UBSAN_NULL (etc.) only if -fno-sanitize-recover=null (etc.) or if location_t is the same, otherwise such optimizations lead to only one problem being reported instead of all of them. Jakub