aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-02-05 09:08:27 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2013-02-05 09:08:27 +0100
commitcf35e2b1e6e24e73f727deda55d6f4042a8ef23d (patch)
tree17b1dbf0df701a78d2dbc1bf31b6098d2a74a1ec
parentea99f6314dfb7dafa574c27bbee9f4fdef235129 (diff)
downloadgcc-cf35e2b1e6e24e73f727deda55d6f4042a8ef23d.zip
gcc-cf35e2b1e6e24e73f727deda55d6f4042a8ef23d.tar.gz
gcc-cf35e2b1e6e24e73f727deda55d6f4042a8ef23d.tar.bz2
re PR middle-end/56167 (ICE with invalid __attribute__ arguments)
PR middle-end/56167 * c-common.c (handle_error_attribute): Fix condition. * gcc.dg/pr56167.c: New test. From-SVN: r195748
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-common.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr56167.c15
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 2fbc8f4..16ef84a 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56167
+ * c-common.c (handle_error_attribute): Fix condition.
+
2013-01-30 Jakub Jelinek <jakub@redhat.com>
PR c++/55742
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index b3699dc..1e6afaa 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -6678,7 +6678,7 @@ handle_error_attribute (tree *node, tree name, tree args,
int ARG_UNUSED (flags), bool *no_add_attrs)
{
if (TREE_CODE (*node) == FUNCTION_DECL
- || TREE_CODE (TREE_VALUE (args)) == STRING_CST)
+ && TREE_CODE (TREE_VALUE (args)) == STRING_CST)
/* Do nothing else, just set the attribute. We'll get at
it later with lookup_attribute. */
;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index acdad16..ab73fbf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56167
+ * gcc.dg/pr56167.c: New test.
+
2013-02-04 Oleg Endo <olegendo@gcc.gnu.org>
PR target/55146
diff --git a/gcc/testsuite/gcc.dg/pr56167.c b/gcc/testsuite/gcc.dg/pr56167.c
new file mode 100644
index 0000000..fc377b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr56167.c
@@ -0,0 +1,15 @@
+/* PR middle-end/56167 */
+/* { dg-do compile } */
+
+extern void foo (void) __attribute__ ((error (0))); /* { dg-warning "attribute ignored" } */
+extern void bar (void) __attribute__ ((warning (0))); /* { dg-warning "attribute ignored" } */
+int var __attribute__ ((error ("foo"))); /* { dg-warning "attribute ignored" } */
+
+int
+main ()
+{
+ foo ();
+ bar ();
+ var++;
+ return 0;
+}