diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expr.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr106016.c | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/expr.cc b/gcc/expr.cc index f9753d4..80bb1b8 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -6462,13 +6462,13 @@ count_type_elements (const_tree type, bool for_ctor_p) case OFFSET_TYPE: case REFERENCE_TYPE: case NULLPTR_TYPE: + case OPAQUE_TYPE: return 1; case ERROR_MARK: return 0; case VOID_TYPE: - case OPAQUE_TYPE: case METHOD_TYPE: case FUNCTION_TYPE: case LANG_TYPE: diff --git a/gcc/testsuite/gcc.target/powerpc/pr106016.c b/gcc/testsuite/gcc.target/powerpc/pr106016.c new file mode 100644 index 0000000..3db8345 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr106016.c @@ -0,0 +1,14 @@ +/* PR target/106016 */ +/* { dg-require-effective-target power10_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=power10" } */ + +/* Make sure we do not ICE on the following test case. */ + +extern void bar (__vector_quad *); + +void +foo (__vector_quad *a, __vector_quad *b) +{ + __vector_quad arr[2] = {*a, *b}; + bar (&arr[0]); +} |