re PR c/39495 (OMP parallel loop w/ unsigned index var rejected)
authorJakub Jelinek <jakub@redhat.com>
Mon, 23 Mar 2009 21:05:30 +0000 (22:05 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 23 Mar 2009 21:05:30 +0000 (22:05 +0100)
commitc5cdb03fb9e13c384901671a424555550ed098f1
treea9fdfdfd88e5b8dd5deaf726ac04e0979d9d8ed9
parent6afcfe0a8080cf3816e841f0f1c2b96a73baed43
re PR c/39495 (OMP parallel loop w/ unsigned index var rejected)

PR c/39495
* c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
instead of c_parser_expression_conv, if original_code isn't one of the
4 allowed comparison codes, fail.

* semantics.c (handle_omp_for_class_iterator): Swap cond operands and
code if iter is the second operand.
* parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
argument.  If it is set, don't build the toplevel expression with
build_x_binary_op, but build2.
(cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
callers.
(cp_parser_omp_for_cond): Don't assume the first operand of the
comparison must be decl.

* gcc.dg/gomp/pr39495-2.c: Remove xfails.

* testsuite/libgomp.c/loop-12.c: New test.
* testsuite/libgomp.c/loop-11.c: New test.
* testsuite/libgomp.c++/loop-11.C: New test.
* testsuite/libgomp.c++/loop-12.C: New test.
* testsuite/libgomp.c++/for-8.C: New test.

From-SVN: r145014
13 files changed:
gcc/ChangeLog
gcc/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gomp/pr39495-2.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.c++/for-8.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/loop-11.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c++/loop-12.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c/loop-11.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/loop-12.c [new file with mode: 0644]