===================================================================
@@ -4198,7 +4198,8 @@
else
{
ptype = adj->type;
- if (is_gimple_reg_type (ptype))
+ if (is_gimple_reg_type (ptype)
+ && TYPE_MODE (ptype) != BLKmode)
{
unsigned malign = GET_MODE_ALIGNMENT (TYPE_MODE (ptype));
if (TYPE_ALIGN (ptype) != malign)
===================================================================
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+/* { dg-additional-options "-mno-sse" { target x86_64-*-* i?86-*-* } } */
+
+typedef int c __attribute__ ((__vector_size__ (16)));
+
+__attribute__((always_inline)) void d (void); /* { dg-warning "" } { dg-error 7 "inlining failed" } */
+void f(c x);
+
+inline void e (c *b) {
+ f (*b);
+}
+
+void a ()
+{
+ struct
+ {
+ c g[4];
+ } h;
+ d ();
+ e (h.g);
+}
+