diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index fb39e9dd799..a743517dcef 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2012-12-03 Marek Polacek + + 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 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 5927edf5ef0..872a6a0feed 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 56b1c912623..f4b25128148 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-12-03 Marek Polacek + + PR c/55570 + * gcc.dg/pr55570.c: New test. + 2012-12-03 Jakub Jelinek * 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 index 00000000000..903bb033df9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr55570.c @@ -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" } */