From b6b552fd01d723df6a9b71e3b11bff5c8965ea0e Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Fri, 4 Mar 2016 22:36:42 -0700 Subject: [PATCH] re PR c/69973 (ICE on excessive attribute vector_size) PR c/69973 * targhooks.c (default_vector_alignment): Limit to MAX_OFILE_ALIGNMENT. PR c/69973 * gcc.dg/pr69973.c: New test. From-SVN: r234002 --- gcc/ChangeLog | 3 +++ gcc/targhooks.c | 5 ++++- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.dg/pr69973.c | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr69973.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5fd0d3..7d2034b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2016-03-04 Bernd Schmidt + PR c/69973 + * targhooks.c (default_vector_alignment): Limit to MAX_OFILE_ALIGNMENT. + PR rtl-optimization/69941 * postreload.c (reload_combine_recognize_pattern): Ensure all uses of the reg share its mode. diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 74af91a..a342277 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -1031,7 +1031,10 @@ tree default_mangle_decl_assembler_name (tree decl ATTRIBUTE_UNUSED, HOST_WIDE_INT default_vector_alignment (const_tree type) { - return tree_to_shwi (TYPE_SIZE (type)); + HOST_WIDE_INT align = tree_to_shwi (TYPE_SIZE (type)); + if (align > MAX_OFILE_ALIGNMENT) + align = MAX_OFILE_ALIGNMENT; + return align; } bool diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d412efd..683585c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2016-03-04 Bernd Schmidt + PR c/69973 + * gcc.dg/pr69973.c: New test. + PR rtl-optimization/69941 * gcc.dg/torture/pr69941.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr69973.c b/gcc/testsuite/gcc.dg/pr69973.c new file mode 100644 index 0000000..648bc56 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69973.c @@ -0,0 +1,2 @@ +/* { dg-do compile } */ +typedef int v4si __attribute__ ((vector_size (1 << 29))); -- 2.7.4