Commit 9f04a53e by Martin Sebor

PR c/69405 - [6 Regression] ICE in c_tree_printer on an invalid

PR c/69405 - [6 Regression] ICE in c_tree_printer on an invalid
    __atomic_fetch_add

gcc/testsuite/ChangeLog:
2016-01-20  Martin Sebor  <msebor@redhat.com>

        PR c/69405
        * gcc.dg/sync-fetch.c: New test.

gcc/c-family/ChangeLog:
2016-01-20  Martin Sebor  <msebor@redhat.com>

        PR c/69405
        * c-common.c (sync_resolve_size): Avoid printing diagnostic about
        an incompatible argument when the argument isn't a valid tree node.

From-SVN: r232713
parent 38a51663
2016-01-20 Martin Sebor <msebor@redhat.com>
PR c/69405
* c-common.c (sync_resolve_size): Avoid printing diagnostic about
an incompatible argument when the argument isn't a valid tree node.
2016-01-18 Jason Merrill <jason@redhat.com> 2016-01-18 Jason Merrill <jason@redhat.com>
PR c++/68767 PR c++/68767
......
...@@ -10704,8 +10704,11 @@ sync_resolve_size (tree function, vec<tree, va_gc> *params, bool fetch) ...@@ -10704,8 +10704,11 @@ sync_resolve_size (tree function, vec<tree, va_gc> *params, bool fetch)
return size; return size;
incompatible: incompatible:
error ("operand type %qT is incompatible with argument %d of %qE", /* Issue the diagnostic only if the argument is valid, otherwise
argtype, 1, function); it would be redundant at best and could be misleading. */
if (argtype != error_mark_node)
error ("operand type %qT is incompatible with argument %d of %qE",
argtype, 1, function);
return 0; return 0;
} }
......
2016-01-20 Martin Sebor <msebor@redhat.com>
PR c/69405
* gcc.dg/sync-fetch.c: New test.
2016-01-21 Martin Sebor <msebor@redhat.com> 2016-01-21 Martin Sebor <msebor@redhat.com>
PR target/69252 PR target/69252
...@@ -11,7 +16,7 @@ ...@@ -11,7 +16,7 @@
2016-01-21 Dominik Vogt <vogt@linux.vnet.ibm.com> 2016-01-21 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR c++/68810 PR c++/68810
* g++.dg/cpp0x/constexpr-reinterpret1.C: Fix line number that is * g++.dg/cpp0x/constexpr-reinterpret1.C: Fix line number that is
expected to generate an error. expected to generate an error.
2016-01-21 Bernd Schmidt <bschmidt@redhat.com> 2016-01-21 Bernd Schmidt <bschmidt@redhat.com>
......
/* PR c/69405 - [6 Regression] ICE in c_tree_printer on an invalid
__atomic_fetch_add */
/* Test to verify that the diagnostic doesn't cause an ICE when any
of the arguments to __atomic_fetch_OP is undeclared. */
/* { dg-do compile } */
void test_add_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_add (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_sub_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_sub (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_or_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_or (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_and_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_and (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_xor_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_xor (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_nand_undeclared_first_arg (void)
{
int a = 0;
__atomic_fetch_nand (&a, &b, 0); /* { dg-error ".b. undeclared" } */
}
void test_add_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_add (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_sub_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_sub (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_or_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_or (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_and_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_and (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_xor_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_xor (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_nand_undeclared_second_arg (void)
{
int b = 0;
__atomic_fetch_nand (&a, &b, 0); /* { dg-error ".a. undeclared" } */
}
void test_add_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_add (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
void test_sub_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_sub (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
void test_or_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_or (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
void test_and_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_and (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
void test_xor_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_xor (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
void test_nand_undeclared_third_arg (void)
{
int a = 0, b = 0;
__atomic_fetch_nand (&a, &b, m); /* { dg-error ".m. undeclared" } */
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment