vect: consult the alias oracle for unanalyzable BB SLP dependences

vect_slp_analyze_data_ref_dependence conservatively reported a dependence
whenever the classical (affine) data-dependence test returned chrec_dont_know,
e.g. when one of the accesses has a non-affine or runtime array subscript.  In
the BB SLP region check this is overly pessimistic: the unanalyzable subscript
says nothing about whether the two references can actually alias, and the alias
oracle can frequently still prove they cannot (distinct restrict parameters,
distinct non-escaping objects, and so on).  When that happens a perfectly good
SLP group is torn down.  The motivating case is the deal.II
VectorizedArray<double,N> reciprocal in SPEC CPU 2026 766.femflow_r.

The store-sink and load-hoist walkers already fall back to the alias oracle
(stmt_may_clobber_ref_p_1 / ref_maybe_used_by_stmt_p) for statements that have
no single recorded data reference.  Extend that fallback to the chrec_dont_know
case: vect_slp_analyze_data_ref_dependence now returns a three-way result
(chrec_known when the references are provably independent, chrec_dont_know when
the affine test cannot analyze them, and the dependence otherwise) so each
caller can tell "unknown" apart from "dependent", and on "unknown" runs the same
oracle query it already uses for the no-data-reference case, with the TBAA
setting appropriate to what is being moved: no TBAA when sinking a store (a
moving store may change the dynamic type), TBAA when hoisting a load.

On the new gcc.dg/vect/bb-slp-dep-oracle.c the 8-lane reciprocal group is torn
down and emitted scalar without the patch and vectorizes to four vector
divides with it.

Bootstrapped and tested on aarch64-none-linux-gnu.

Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>

gcc/ChangeLog:

	* tree-vect-data-refs.cc (vect_slp_analyze_data_ref_dependence):
	Return a three-way tree result (chrec_known when independent,
	chrec_dont_know when the affine test cannot analyze the pair, the
	dependence otherwise) instead of a bool.
	(vect_slp_analyze_store_dependences): Resort to the alias oracle on
	an unknown dependence as well as on a missing data reference; a
	store is being moved so do not use TBAA.
	(vect_slp_analyze_load_dependences): Likewise on the load-hoist
	paths, using TBAA as a load is being hoisted; also record that the
	ao_ref has been initialized in check_hoist.

gcc/testsuite/ChangeLog:

	* gcc.dg/vect/bb-slp-dep-oracle.c: New test.
2 files changed