public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition @ 2022-07-26 16:02 burnus at gcc dot gnu.org 2022-07-27 16:07 ` [Bug c++/106448] " jakub at gcc dot gnu.org ` (5 more replies) 0 siblings, 6 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2022-07-26 16:02 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 Bug ID: 106448 Summary: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: accepts-invalid, diagnostic, openmp Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- The following code is rejected by gcc - but accepted by g++. (Found via OpenMP examples Issue #291.) OpenMP permits: x = expr ordop x ? expr : x; x = x ordop expr ? expr : x;21 x = x == e ? d : x; If one now parenthesis the condition, gcc rightly complains: error: invalid form of ‘#pragma omp atomic’ before ‘;’ token 7 | x = (expr > x) ? expr : x; | ^ However, g++ accepts that version without an error. Note that g++ rejects the reverse version already: error: invalid form of ‘#pragma omp atomic’ before ‘(’ token 10 | x = (x < expr) ? expr : x; // Rejected by g++ and gcc | ^ -------------- int x, expr; void foo (void) { #pragma omp atomic compare x = (expr > x) ? expr : x; // Accepted by g++ [BUG!], rejected by gcc #pragma omp atomic compare x = (x < expr) ? expr : x; // Rejected by g++ and gcc #pragma omp atomic compare x = (x == expr) ? expr : x; // Rejected by g++ and gcc } ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org @ 2022-07-27 16:07 ` jakub at gcc dot gnu.org 2022-07-27 16:07 ` jakub at gcc dot gnu.org ` (4 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: jakub at gcc dot gnu.org @ 2022-07-27 16:07 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- int x; void bar (void) { #pragma omp atomic x = (x + 6); #pragma omp atomic x = (x * 6); } is incorrectly accepted in C and rejected in C++. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org 2022-07-27 16:07 ` [Bug c++/106448] " jakub at gcc dot gnu.org @ 2022-07-27 16:07 ` jakub at gcc dot gnu.org 2022-07-28 13:32 ` jakub at gcc dot gnu.org ` (3 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: jakub at gcc dot gnu.org @ 2022-07-27 16:07 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #1) > is incorrectly accepted in C and rejected in C++. I mean is correctly rejected in C++. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org 2022-07-27 16:07 ` [Bug c++/106448] " jakub at gcc dot gnu.org 2022-07-27 16:07 ` jakub at gcc dot gnu.org @ 2022-07-28 13:32 ` jakub at gcc dot gnu.org 2022-07-28 14:05 ` jakub at gcc dot gnu.org ` (2 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: jakub at gcc dot gnu.org @ 2022-07-28 13:32 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed| |2022-07-28 Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 53372 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53372&action=edit gcc13-pr106448.patch Untested fix (so far just for the C++ FE problem). ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org ` (2 preceding siblings ...) 2022-07-28 13:32 ` jakub at gcc dot gnu.org @ 2022-07-28 14:05 ` jakub at gcc dot gnu.org 2022-07-29 8:00 ` cvs-commit at gcc dot gnu.org 2022-07-29 8:05 ` jakub at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: jakub at gcc dot gnu.org @ 2022-07-28 14:05 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The C FE issue moved to PR106464. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org ` (3 preceding siblings ...) 2022-07-28 14:05 ` jakub at gcc dot gnu.org @ 2022-07-29 8:00 ` cvs-commit at gcc dot gnu.org 2022-07-29 8:05 ` jakub at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2022-07-29 8:00 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 --- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>: https://gcc.gnu.org/g:2dcceedb3c121f2498ae58d8414e7b8454b7bf55 commit r13-1888-g2dcceedb3c121f2498ae58d8414e7b8454b7bf55 Author: Jakub Jelinek <jakub@redhat.com> Date: Fri Jul 29 09:59:19 2022 +0200 openmp: Reject invalid forms of C++ #pragma omp atomic compare [PR106448] The allowed syntaxes of atomic compare don't allow ()s around the condition of ?:, but we were accepting it in one case for C++. Fixed thusly. 2022-07-29 Jakub Jelinek <jakub@redhat.com> PR c++/106448 * parser.cc (cp_parser_omp_atomic): For simple cast followed by CPP_QUERY token, don't try cp_parser_binary_operation if compare is true. * c-c++-common/gomp/atomic-32.c: New test. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/106448] [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org ` (4 preceding siblings ...) 2022-07-29 8:00 ` cvs-commit at gcc dot gnu.org @ 2022-07-29 8:05 ` jakub at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: jakub at gcc dot gnu.org @ 2022-07-29 8:05 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106448 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution|--- |FIXED --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Fixed on the trunk. Not going to be backported, as it is accepts-invalid. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-07-29 8:05 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-07-26 16:02 [Bug c++/106448] New: [OpenMP] atomic compare – g++ wrongly accepts parenthesized condition burnus at gcc dot gnu.org 2022-07-27 16:07 ` [Bug c++/106448] " jakub at gcc dot gnu.org 2022-07-27 16:07 ` jakub at gcc dot gnu.org 2022-07-28 13:32 ` jakub at gcc dot gnu.org 2022-07-28 14:05 ` jakub at gcc dot gnu.org 2022-07-29 8:00 ` cvs-commit at gcc dot gnu.org 2022-07-29 8:05 ` jakub at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).