===================================================================
@@ -212,6 +212,14 @@ warn_uninitialized_vars (bool warn_possi
can warn about. */
FOR_EACH_SSA_USE_OPERAND (use_p, stmt, op_iter, SSA_OP_USE)
{
+ /* BIT_INSERT_EXPR first operand should not be considered
+ a use for the purpose of uninit warnings. */
+ if (gassign *ass = dyn_cast <gassign *> (stmt))
+ {
+ if (gimple_assign_rhs_code (ass) == BIT_INSERT_EXPR
+ && use_p->use == gimple_assign_rhs1_ptr (ass))
+ continue;
+ }
use = USE_FROM_PTR (use_p);
if (always_executed)
warn_uninit (OPT_Wuninitialized, use, SSA_NAME_VAR (use),
===================================================================
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wall" } */
+
+typedef double vectype __attribute__ ((__vector_size__ (16)));
+
+vectype
+f (double x)
+{
+ vectype t;
+ for (int i = 0; i < 2; i++)
+ t[i] = x; /* { dg-bogus "uninitialized" } */
+ return t;
+}