https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86637
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think the issue is we use vect_location via DUMP_VECT_SCOPE before we
set it, thus using an old location in a function where we may have GCed
BLOCKs, etc. The loop vectorization pass resets it via
vect_location = dump_user_location_t ();
(?) but the SLP vectorization pass not.
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 0a4eca51ad7..1a6cb56a872 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -1303,6 +1303,8 @@ pass_slp_vectorize::execute (function *fun)
loop_optimizer_finalize ();
}
+ vect_location = dump_user_location_t ();
+
return 0;
}
This fixes one testcase. I'm going to apply that.