diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 75609eaf9b7..3e3d96fe087 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3643,8 +3643,7 @@ gen_lowpart (mode, operands[1])); operands[2] = gen_lowpart (mode, operands[2]); - if (!MEM_P (operands[3])) - operands[3] = force_reg (mode, operands[3]); + operands[3] = force_reg (mode, operands[3]); operands[3] = lowpart_subreg (mode, operands[3], mode); }) diff --git a/gcc/testsuite/g++.target/i386/pr105953.C b/gcc/testsuite/g++.target/i386/pr105953.C new file mode 100644 index 00000000000..b423d2dfdae --- /dev/null +++ b/gcc/testsuite/g++.target/i386/pr105953.C @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512vl -mabi=ms" } */ + +#include "pr100738-1.C"