]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/69973 (ICE on excessive attribute vector_size)
authorBernd Schmidt <bernds@redhat.com>
Sat, 5 Mar 2016 05:36:42 +0000 (22:36 -0700)
committerJeff Law <law@gcc.gnu.org>
Sat, 5 Mar 2016 05:36:42 +0000 (22:36 -0700)
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
gcc/targhooks.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr69973.c [new file with mode: 0644]

index d5fd0d390b3ac18bf4d90dcd011b6156510fe62b..7d2034bbca2b9c69cc033aa4747256a20d06cfe9 100644 (file)
@@ -1,5 +1,8 @@
 2016-03-04  Bernd Schmidt  <bschmidt@redhat.com>
 
+       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.
index 74af91a6b1dd50e02bde85cf9fc8975c1487a984..a34227705d2b31894d6380855cb3173e9c09400e 100644 (file)
@@ -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
index d412efdd0572df6974d880613f33008d8ea5e2ed..683585c8b321b2851f7feff6e90a3da129114678 100644 (file)
@@ -1,5 +1,8 @@
 2016-03-04  Bernd Schmidt  <bschmidt@redhat.com>
 
+       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 (file)
index 0000000..648bc56
--- /dev/null
@@ -0,0 +1,2 @@
+/* { dg-do compile } */
+typedef int v4si __attribute__ ((vector_size (1 << 29)));