diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63a76742472d..c07b3f033205 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-03-02 Richard Biener + + PR middle-end/67278 + * tree-cfg.c (verify_expr): Adjust BIT_FIELD_REF case. + 2016-03-02 Marek Polacek PR c/67854 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d84f3760a62d..014d249f4d0e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-02 Richard Biener + + PR middle-end/67278 + * gcc.dg/simd-7.c: New testcase. + 2016-03-02 Eric Botcazou * gcc.target/i386/pr70007.c: Tweak. diff --git a/gcc/testsuite/gcc.dg/simd-7.c b/gcc/testsuite/gcc.dg/simd-7.c new file mode 100644 index 000000000000..0b888fc64866 --- /dev/null +++ b/gcc/testsuite/gcc.dg/simd-7.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ + +#if __SIZEOF_LONG_DOUBLE__ == 16 || __SIZEOF_LONG_DOUBLE__ == 8 +typedef long double a __attribute__((vector_size (16))); + +a __attribute__((noinline)) +sum (a first, a second) +{ + return first + second; +} + +a +foo (a x, a y, a z) +{ + return sum (x, y) + z; +} +#else +int main() {} +#endif diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index b54545d1bba9..04e46fd068c3 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -2959,10 +2959,10 @@ verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) } else if (!INTEGRAL_TYPE_P (TREE_TYPE (t)) && TYPE_MODE (TREE_TYPE (t)) != BLKmode - && (GET_MODE_PRECISION (TYPE_MODE (TREE_TYPE (t))) + && (GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (t))) != tree_to_uhwi (t1))) { - error ("mode precision of non-integral result does not " + error ("mode size of non-integral result does not " "match field size of BIT_FIELD_REF"); return t; }