brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · e0fe7be Raw
69 lines · cpp
1//===--- DeclOpenACC.cpp - Classes for OpenACC Constructs -----------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements the subclasses of Decl class declared in Decl.h10//11//===----------------------------------------------------------------------===//12 13#include "clang/AST/DeclOpenACC.h"14#include "clang/AST/ASTContext.h"15#include "clang/AST/Attr.h"16#include "clang/AST/OpenACCClause.h"17 18using namespace clang;19 20bool OpenACCConstructDecl::classofKind(Kind K) {21  return OpenACCDeclareDecl::classofKind(K) ||22         OpenACCRoutineDecl::classofKind(K);23}24 25OpenACCDeclareDecl *26OpenACCDeclareDecl::Create(ASTContext &Ctx, DeclContext *DC,27                           SourceLocation StartLoc, SourceLocation DirLoc,28                           SourceLocation EndLoc,29                           ArrayRef<const OpenACCClause *> Clauses) {30  return new (Ctx, DC,31              additionalSizeToAlloc<const OpenACCClause *>(Clauses.size()))32      OpenACCDeclareDecl(DC, StartLoc, DirLoc, EndLoc, Clauses);33}34 35OpenACCDeclareDecl *36OpenACCDeclareDecl::CreateDeserialized(ASTContext &Ctx, GlobalDeclID ID,37                                       unsigned NumClauses) {38  return new (Ctx, ID, additionalSizeToAlloc<const OpenACCClause *>(NumClauses))39      OpenACCDeclareDecl(NumClauses);40}41 42OpenACCRoutineDecl *43OpenACCRoutineDecl::Create(ASTContext &Ctx, DeclContext *DC,44                           SourceLocation StartLoc, SourceLocation DirLoc,45                           SourceLocation LParenLoc, Expr *FuncRef,46                           SourceLocation RParenLoc, SourceLocation EndLoc,47                           ArrayRef<const OpenACCClause *> Clauses) {48  return new (Ctx, DC,49              additionalSizeToAlloc<const OpenACCClause *>(Clauses.size()))50      OpenACCRoutineDecl(DC, StartLoc, DirLoc, LParenLoc, FuncRef, RParenLoc,51                         EndLoc, Clauses);52}53 54OpenACCRoutineDecl *55OpenACCRoutineDecl::CreateDeserialized(ASTContext &Ctx, GlobalDeclID ID,56                                       unsigned NumClauses) {57  return new (Ctx, ID, additionalSizeToAlloc<const OpenACCClause *>(NumClauses))58      OpenACCRoutineDecl(NumClauses);59}60 61void OpenACCRoutineDeclAttr::printPrettyPragma(62    llvm::raw_ostream &OS, const clang::PrintingPolicy &P) const {63  if (Clauses.size() > 0) {64    OS << ' ';65    OpenACCClausePrinter Printer{OS, P};66    Printer.VisitClauseList(Clauses);67  }68}69