https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117116
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> ---
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 2b774ff7c4e..03a20aaca49 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -17642,9 +17642,7 @@ ix86_expand_vector_init (bool mmx_ok, rtx target, rtx
vals)
for (i = 0; i < n_elts; ++i)
{
x = XVECEXP (vals, 0, i);
- if (!(CONST_SCALAR_INT_P (x)
- || CONST_DOUBLE_P (x)
- || CONST_FIXED_P (x)))
+ if (immediate_operand (x, inner_mode))
n_var++, one_var = i;
else if (x != CONST0_RTX (inner_mode))
all_const_zero = false;