https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95528
--- Comment #5 from Sergei Trofimovich <slyfox at inbox dot ru> --- My bisect ended up at: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=78307657cf9675bc4aa2e77561c823834714b4c8 $ git bisect bad 78307657cf9675bc4aa2e77561c823834714b4c8 is the first bad commit commit 78307657cf9675bc4aa2e77561c823834714b4c8 Author: Richard Biener <rguent...@suse.de> Date: Thu Nov 28 12:22:04 2019 +0000 re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang) 2019-11-28 Richard Biener <rguent...@suse.de> PR tree-optimization/92645 * tree-ssa-forwprop.c (get_bit_field_ref_def): Also handle conversions inside a mode class. Remove restriction on preserving the element size. (simplify_vector_constructor): Deal with the above and for identity permutes also try using VEC_UNPACK_[FLOAT_]LO_EXPR and VEC_PACK_TRUNC_EXPR. * gcc.target/i386/pr92645-4.c: New testcase. From-SVN: r278806 gcc/ChangeLog | 10 ++++ gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gcc.target/i386/pr92645-4.c | 56 ++++++++++++++++++ gcc/tree-ssa-forwprop.c | 96 ++++++++++++++++++++++++++----- 4 files changed, 154 insertions(+), 13 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr92645-4.c