On Wed, 30 Aug 2023, Andre Vieira (lists) wrote: > The vect_get_smallest_scalar_type helper function was using any argument to a > simd clone call when trying to determine the smallest scalar type that would > be vectorized. This included the function pointer type in a MASK_CALL for > instance, and would result in the wrong type being selected. Instead this > patch special cases simd_clone_call's and uses only scalar types of the > original function that get transformed into vector types.
Looks sensible. +bool +simd_clone_call_p (gimple *stmt, cgraph_node **out_node) you could return the cgraph_node * or NULL here. Are you going to use the function elsewhere? Otherwise put it in the same TU as the only use please and avoid exporting it. Richard. > gcc/ChangeLog: > > * tree-vect-data-refs.cci (vect_get_smallest_scalar_type): Special > case > simd clone calls and only use types that are mapped to vectors. > * tree-vect-stmts.cc (simd_clone_call_p): New helper function. > * tree-vectorizer.h (simd_clone_call_p): Declare new function. > > gcc/testsuite/ChangeLog: > > * gcc.dg/vect/vect-simd-clone-16f.c: Remove unnecessary differentation > between targets with different pointer sizes. > * gcc.dg/vect/vect-simd-clone-17f.c: Likewise. > * gcc.dg/vect/vect-simd-clone-18f.c: Likewise. > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)