https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89303
--- Comment #22 from Jakub Jelinek <jakub at gcc dot gnu.org> --- --- gcc/tree-ssa-structalias.c.jj 2019-01-01 12:37:18.738949011 +0100 +++ gcc/tree-ssa-structalias.c 2019-02-13 12:28:54.592256591 +0100 @@ -6412,7 +6412,7 @@ set_uids_in_ptset (bitmap into, bitmap f && bitmap_bit_p (escaped_vi->solution, i))) { pt->vars_contains_escaped = true; - pt->vars_contains_escaped_heap = vi->is_heap_var; + pt->vars_contains_escaped_heap |= vi->is_heap_var; } if (vi->is_restrict_var) fixes this for me (though, no idea what is that other variable in the points-to set of _16).