https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99721
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- I was able to reduce the test-case to: $ cat pr99721.f90 subroutine sub_c complex, dimension(2,3) :: at complex, dimension(2,4) :: b complex, dimension(3,4) :: c data b / (41., 43.), 0, 0, 0, 0, 0, 0, 0/ c = matmul(transpose(at), b) if (any (c /= cres)) stop end $ valgrind --trace-children=yes ~/BIG/bin/aarch64/dev/shm/buildbot/install/gcc/bin/aarch64-linux-gnu-gcc pr99721.f90 -c -O3 -march=armv8.3-a ... ==11878== Invalid read of size 8 ==11878== at 0xEE46F2: vect_schedule_slp_node(vec_info*, _slp_tree*, _slp_instance*) (tree-vect-slp.c:6150) ==11878== by 0xEF058F: vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) (tree-vect-slp.c:6342) ==11878== by 0xEF029E: vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) (tree-vect-slp.c:6323) ==11878== by 0xEF029E: vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) (tree-vect-slp.c:6323) ==11878== by 0xEF029E: vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) (tree-vect-slp.c:6323) ==11878== by 0xEF0A1B: vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>) (tree-vect-slp.c:6458) ==11878== by 0xED2A0B: vect_transform_loop(_loop_vec_info*, gimple*) (tree-vect-loop.c:9535) ==11878== by 0xEFAB6C: try_vectorize_loop_1(hash_table<simduid_to_vf, false, xcallocator>*&, unsigned int*, loop*, gimple*, gimple*) (tree-vectorizer.c:1104) ==11878== by 0xEFB7D9: vectorize_loops() (tree-vectorizer.c:1243) ==11878== by 0xBE1267: execute_one_pass(opt_pass*) (passes.c:2567) ==11878== by 0xBE1BCF: execute_pass_list_1(opt_pass*) (passes.c:2656) ==11878== by 0xBE1BE1: execute_pass_list_1(opt_pass*) (passes.c:2657) ==11878== Address 0x8 is not stack'd, malloc'd or (recently) free'd