summaryrefslogtreecommitdiff
path: root/clang/test/ParserOpenACC/parse-constructs.cpp
AgeCommit message (Collapse)Author
2025-06-13Remove delayed typo expressions (#143423)Aaron Ballman
This removes the delayed typo correction functionality from Clang (regular typo correction still remains) due to fragility of the solution. An RFC was posted here: https://discourse.llvm.org/t/rfc-removing-support-for-delayed-typo-correction/86631 and while that RFC was asking for folks to consider stepping up to be maintainers, and we did have a few new contributors show some interest, experiments show that it's likely worth it to remove this functionality entirely and focus efforts on improving regular typo correction. This removal fixes ~20 open issues (quite possibly more), improves compile time performance by roughly .3-.4% (https://llvm-compile-time-tracker.com/?config=Overview&stat=instructions%3Au&remote=AaronBallman&sortBy=date), and does not appear to regress diagnostic behavior in a way we wouldn't find acceptable. Fixes #142457 Fixes #139913 Fixes #138850 Fixes #137867 Fixes #137860 Fixes #107840 Fixes #93308 Fixes #69470 Fixes #59391 Fixes #58172 Fixes #46215 Fixes #45915 Fixes #45891 Fixes #44490 Fixes #36703 Fixes #32903 Fixes #23312 Fixes #69874
2025-03-21[OpenACC] Finish implementing 'routine' AST/Sema.erichkeane
This is the last item of the OpenACC 3.3 spec. It includes the implicit-name version of 'routine', plus significant refactorings to make the two work together. The implicit name version is represented as an attribute on the function call. This patch also implements the clauses for the implicit-name version, as well as the A.3.4 warning.
2025-03-06[OpenACC] Handle sema for gang, worker, vector, seq clauses on routineerichkeane
These 4 clauses are mutually exclusive, AND require at least one of them. Additionally, gang has some additional restrictions in that only the 'dim' specifier is permitted. This patch implements all of this, and ends up refactoring the handling of each of these clauses for readabililty.
2025-03-06[OpenACC] implement AST/Sema for 'routine' construct with argumenterichkeane
The 'routine' construct has two forms, one which takes the name of a function that it applies to, and another where it implicitly figures it out based on the next declaration. This patch implements the former with the required restrictions on the name and the function-static-variables as specified. What has not been implemented is any clauses for this, any of the A.3.4 warnings, or the other form.
2024-02-15[OpenACC] Change 'not implemented' diagnostic to be more specificerichkeane
Currently we just emit a generic 'not implemented' diagnostic for all OpenACC pragmas. This patch moves the diagnostic to 'Sema' and diagnoses for a specific clause or construct, in preperation of implementing Sema for constructs.
2024-01-17[OpenACC] Implement 'bind' clause parsing.erichkeane
'bind' takes either a string literal, or an 'identifier' representing the device-side function that this routine is intended to 'bind' to (that is, to call). However, it seems that the intent is to permit the 'identifier' to reference any function, thus we're implementing this as an ID expression. Additionally, while working on this I discovered that the 'routine' ID expression parsing for C++ wouldn't allow non-static member functions to be referenced since it expected us to call it, this was fixed as a part of this patch as the 'bind' support needed it too. A test was added for routine.
2023-11-27[OpenACC] Implement 'routine' construct parsing (#73143)Erich Keane
The 'routine' construct applies either to a function directly, or, when provided a name, applies to the function named (and is visible in the current scope). This patch implements the parsing for this. The identifier provided (or Id Expression) is required to be a valid, declared identifier, though the semantic analysis portion of the Routine directive will need to enforce it being a function/overload set.