Hi! This patch restores the previous behavior, there could be many reasons why TYPE_MODE is BLKmode or some integral mode instead of a vector mode, unsupported vector mode, lack of available registers etc.
Bootstrapped/regtested on x86_64-linux and i686-linux, committed to trunk. 2019-11-19 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/92557 * omp-low.c (omp_clause_aligned_alignment): Punt if TYPE_MODE is not vmode rather than asserting it always is. * gcc.dg/gomp/pr92557.c: New test. --- gcc/omp-low.c.jj 2019-11-15 00:37:26.359069152 +0100 +++ gcc/omp-low.c 2019-11-18 16:17:27.767714777 +0100 @@ -4086,8 +4086,8 @@ omp_clause_aligned_alignment (tree claus if (type == NULL_TREE || TYPE_MODE (type) != mode) continue; type = build_vector_type_for_mode (type, vmode); - /* The functions above are not allowed to return invalid modes. */ - gcc_assert (TYPE_MODE (type) == vmode); + if (TYPE_MODE (type) != vmode) + continue; if (TYPE_ALIGN_UNIT (type) > al) al = TYPE_ALIGN_UNIT (type); } --- gcc/testsuite/gcc.dg/gomp/pr92557.c.jj 2019-11-18 16:18:18.246961685 +0100 +++ gcc/testsuite/gcc.dg/gomp/pr92557.c 2019-11-18 16:19:21.531017555 +0100 @@ -0,0 +1,13 @@ +/* PR tree-optimization/92557 */ +/* { dg-do compile } */ +/* { dg-additional-options "-maltivec" { target powerpc*-*-* } } */ + +void +foo (double *p) +{ + int i; + +#pragma omp simd aligned (p) + for (i = 0; i < 1; ++i) + p[i] = 7.0; +} Jakub