diff options
author | Mark Mitchell <mark@codesourcery.com> | 2006-06-15 03:26:38 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2006-06-15 03:26:38 +0000 |
commit | fe89d79748951c95a113e10b6184ca5284d3936d (patch) | |
tree | 2419236a5dd577e978264804fe2c75548fb14e25 /gcc/c-parser.c | |
parent | 801522dead7b6e710f78eb26017195c814db04a2 (diff) | |
download | gcc-fe89d79748951c95a113e10b6184ca5284d3936d.zip gcc-fe89d79748951c95a113e10b6184ca5284d3936d.tar.gz gcc-fe89d79748951c95a113e10b6184ca5284d3936d.tar.bz2 |
re PR c++/26559 (ICE with __builtin_constant_p in template argument)
2006-06-14 Mark Mitchell <mark@codesourcery.com>
PR c++/26559
* c-common.h (c_finish_omp_atomic): Adjust declaration.
* c-omp.c (c_finish_omp_atomic): Return the expression to perform,
rather than calling add_stmt on it.
* c-parser.c (c_parser_omp_atomic): Adjust accordingly.
2006-06-14 Mark Mitchell <mark@codesourcery.com>
PR c++/26559
* pt.c (tsubst_expr): Use finish_omp_atomic.
(value_dependent_expression_p): All CALL_EXPRs are dependent.
* semantics.c (finish_omp_atomic): Rework to use standard
paradigms for handling non-dependent expressions.
2006-06-14 Mark Mitchell <mark@codesourcery.com>
PR c++/26559
* g++.dg/template/builtin1.C: New test.
* g++.dg/gomp/tpl-atomic-2.C: Remove XFAIL.
From-SVN: r114665
Diffstat (limited to 'gcc/c-parser.c')
-rw-r--r-- | gcc/c-parser.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 8afe79c..bca6a14 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -7214,6 +7214,7 @@ static void c_parser_omp_atomic (c_parser *parser) { tree lhs, rhs; + tree stmt; enum tree_code code; c_parser_skip_to_pragma_eol (parser); @@ -7280,7 +7281,9 @@ c_parser_omp_atomic (c_parser *parser) rhs = c_parser_expression (parser).value; break; } - c_finish_omp_atomic (code, lhs, rhs); + stmt = c_finish_omp_atomic (code, lhs, rhs); + if (stmt != error_mark_node) + add_stmt (stmt); c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); } |