From a859517f1e32d071b196fc603c2b62758dbce153 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Mon, 3 Dec 2012 13:02:04 +0000 Subject: [PATCH] Fix PR c/55570. From-SVN: r194083 --- gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-common.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr55570.c | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr55570.c diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index fb39e9d..a743517 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 5927edf..872a6a0 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 56b1c91..f4b2512 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 0000000..903bb03 --- /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" } */ -- 2.7.4