[PATCH] D10599: [OPENMP 4.0] Initial support for '#pragma omp declare simd' directive.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 6 07:55:27 PST 2015
aaron.ballman added inline comments.
================
Comment at: include/clang/Basic/AttrDocs.td:1620
@@ +1619,3 @@
+ let Content = [{
+The declare simd construct can be applied to a function to enable the creation of one or more versions that can process multiple arguments using SIMD instructions from a single invocation from a SIMD loop. The declare simd directive is a declarative directive. There may be multiple declare simd directives for a function. The use of a declare simd construct on a function enables the creation of SIMD
+versions of the associated function that can be used to process multiple arguments from a single invocation from a SIMD loop concurrently.
----------------
Line length is an issue here. ;-)
Also, "from a single invocation from a SIMD loop"; should that be "from a single invocation of a SIMD loop" instead?
Any time you use "declare simd" as a syntactic phrase, it should be properly formatted for RST as ``declare simd``.
================
Comment at: lib/Parse/ParseOpenMP.cpp:97
@@ -89,1 +96,3 @@
+ AccessSpecifier &AS, ParsedAttributesWithRange &Attrs,
+ DeclSpec::TST TagType, Decl *TagDecl) {
assert(Tok.is(tok::annot_pragma_openmp) && "Not an OpenMP directive!");
----------------
Can we not name the last parameter with an identifier that is also a type name? That always weirds me out. ;-)
================
Comment at: lib/Parse/ParseOpenMP.cpp:152
@@ +151,3 @@
+ } else {
+ Ptr = ParseCXXClassMemberDeclarationWithPragmas(AS, Attrs, TagType,
+ TagDecl);
----------------
Can you add a test case for a member declaration that has attributes to ensure the attributes are properly handled here? In fact, it would be good to add one for the top-level function as well.
================
Comment at: lib/Sema/SemaOpenMP.cpp:2370
@@ +2369,3 @@
+
+ auto *NewAttr = new (Context) OMPDeclareSimdDeclAttr(
+ SourceRange(StartLoc, StartLoc), Context, /*SI=*/0);
----------------
Please use OMPDeclareSimdDeclAttr::CreateImplicit instead.
http://reviews.llvm.org/D10599
More information about the cfe-commits
mailing list