Fix PR c/55570.
authorMarek Polacek <polacek@redhat.com>
Mon, 3 Dec 2012 13:02:04 +0000 (13:02 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Mon, 3 Dec 2012 13:02:04 +0000 (13:02 +0000)
From-SVN: r194083

gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr55570.c [new file with mode: 0644]

index fb39e9dd79975a9859cedba1a692a90e11759dc4..a743517dcefd279434f539f03a2064e5b67041bc 100644 (file)
@@ -1,3 +1,9 @@
+2012-12-03  Marek Polacek  <polacek@redhat.com>
+
+       PR c/55570
+       * c-common.c (check_user_alignment): Swap order of tests,
+       check TREE_CODE first.
+
 2012-11-29  Ed Smith-Rowland  <3dw4rd@verizon.net>
 
        PR c++/52654
index 5927edf5ef0d45cf80d3958c9fb63366af565e47..872a6a0feed5754a07e948bc7087d723c3154ba8 100644 (file)
@@ -7261,8 +7261,8 @@ check_user_alignment (const_tree align, bool allow_zero)
 {
   int i;
 
-  if (!INTEGRAL_TYPE_P (TREE_TYPE (align))
-      || TREE_CODE (align) != INTEGER_CST)
+  if (TREE_CODE (align) != INTEGER_CST
+      || !INTEGRAL_TYPE_P (TREE_TYPE (align)))
     {
       error ("requested alignment is not an integer constant");
       return -1;
index 56b1c9126234b8237d9dd0edc869e21325f6f695..f4b25128148fd1865ff30a2f43a8e50ffe9456c1 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-03  Marek Polacek  <polacek@redhat.com>
+
+       PR c/55570
+       * gcc.dg/pr55570.c: New test.
+
 2012-12-03  Jakub Jelinek  <jakub@redhat.com>
 
        * lib/asan-dg.exp (asan_get_gtest_test_list,
diff --git a/gcc/testsuite/gcc.dg/pr55570.c b/gcc/testsuite/gcc.dg/pr55570.c
new file mode 100644 (file)
index 0000000..903bb03
--- /dev/null
@@ -0,0 +1,4 @@
+/* PR c/55570 */
+/* { dg-do compile } */
+
+char array[16] __attribute__((aligned (SOME_NOT_DEFINED_MACRO))); /* { dg-error "requested alignment is not an integer constant" } */