When we analyzed a loop as epilogue but later in peeling decide
we're not going to use it then in the DTOR we clear the original
loops ->aux which causes us to leak the main loop vinfo.
Fixed by only clearing aux if it is associated with the vinfo
we're destroying.
2021-02-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/99024
* tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Only
clear loop->aux if it is associated with the destroyed loop_vinfo.
delete scan_map;
epilogue_vinfos.release ();
- loop->aux = NULL;
+ /* When we release an epiloge vinfo that we do not intend to use
+ avoid clearing AUX of the main loop which should continue to
+ point to the main loop vinfo since otherwise we'll leak that. */
+ if (loop->aux == this)
+ loop->aux = NULL;
}
/* Return an invariant or register for EXPR and emit necessary