llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Denis.G (DenisGZM) <details> <summary>Changes</summary> Enable parsing alignas attribute after GNU attributes, before ParseDeclaration This might be useful for cuda code where __shared__ and other specificators may be mixed with align. I'd be glad to see if there are any better places or other technique to process this attribute without interrupting current flow of parsing. --- Full diff: https://github.com/llvm/llvm-project/pull/133107.diff 2 Files Affected: - (modified) clang/lib/Parse/ParseStmt.cpp (+5) - (added) clang/test/SemaCUDA/cuda-attr-order.cu (+15) ``````````diff diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index 150b2879fc94f..33b9f63bcfa08 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -296,6 +296,11 @@ StmtResult Parser::ParseStatementOrDeclarationAfterAttributes( goto Retry; } + case tok::kw_alignas: { + ParseAlignmentSpecifier(CXX11Attrs); + goto Retry; + } + case tok::kw_template: { SourceLocation DeclEnd; ParseTemplateDeclarationOrSpecialization(DeclaratorContext::Block, DeclEnd, diff --git a/clang/test/SemaCUDA/cuda-attr-order.cu b/clang/test/SemaCUDA/cuda-attr-order.cu new file mode 100644 index 0000000000000..d3bf5b014d1c6 --- /dev/null +++ b/clang/test/SemaCUDA/cuda-attr-order.cu @@ -0,0 +1,15 @@ +// Verify that we can parse a simple CUDA file with different attributes order. +// RUN: %clang_cc1 "-triple" "nvptx-nvidia-cuda" -fsyntax-only -verify %s +// expected-no-diagnostics +#include "Inputs/cuda.h" + +struct alignas(16) float4 { + float x, y, z, w; +}; + +__attribute__((device)) float func() { + __shared__ alignas(alignof(float4)) float As[4][4]; // Both combinations + alignas(alignof(float4)) __shared__ float Bs[4][4]; // must be legal + + return As[0][0] + Bs[0][0]; +} `````````` </details> https://github.com/llvm/llvm-project/pull/133107 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits