CGLoopInfo was keeping pointers to parent loop LoopInfos,
but when the loop info vector grew, it reallocated the
storage and invalidated all of the parent pointers, causing
use-after-free.
Manage the lifetimes of the LoopInfos separately so that
the pointers aren't stale.