llvm/clang/lib/Sema/SemaOpenCL.cpp

//===--- SemaOpenCL.cpp --- Semantic Analysis for OpenCL constructs -------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
/// \file
/// This file implements semantic analysis for OpenCL.
///
//===----------------------------------------------------------------------===//

#include "clang/Sema/SemaOpenCL.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclBase.h"
#include "clang/Basic/DiagnosticSema.h"
#include "clang/Sema/ParsedAttr.h"
#include "clang/Sema/Sema.h"

namespace clang {
SemaOpenCL::SemaOpenCL(Sema &S) :{}

void SemaOpenCL::handleNoSVMAttr(Decl *D, const ParsedAttr &AL) {}

void SemaOpenCL::handleAccessAttr(Decl *D, const ParsedAttr &AL) {}

void SemaOpenCL::handleSubGroupSize(Decl *D, const ParsedAttr &AL) {}

static inline bool isBlockPointer(Expr *Arg) {}

/// OpenCL C v2.0, s6.13.17.2 - Checks that the block parameters are all local
/// void*, which is a requirement of device side enqueue.
static bool checkBlockArgs(Sema &S, Expr *BlockArg) {}

bool SemaOpenCL::checkSubgroupExt(CallExpr *Call) {}

bool SemaOpenCL::checkBuiltinNDRangeAndBlock(CallExpr *TheCall) {}

bool SemaOpenCL::checkBuiltinKernelWorkGroupSize(CallExpr *TheCall) {}

/// Diagnose integer type and any valid implicit conversion to it.
static bool checkOpenCLEnqueueIntType(Sema &S, Expr *E, const QualType &IntT) {}

static bool checkOpenCLEnqueueLocalSizeArgs(Sema &S, CallExpr *TheCall,
                                            unsigned Start, unsigned End) {}

/// OpenCL v2.0, s6.13.17.1 - Check that sizes are provided for all
/// 'local void*' parameter of passed block.
static bool checkOpenCLEnqueueVariadicArgs(Sema &S, CallExpr *TheCall,
                                           Expr *BlockArg,
                                           unsigned NumNonVarArgs) {}

bool SemaOpenCL::checkBuiltinEnqueueKernel(CallExpr *TheCall) {}

/// Returns OpenCL access qual.
static OpenCLAccessAttr *getOpenCLArgAccess(const Decl *D) {}

/// Returns true if pipe element type is different from the pointer.
static bool checkPipeArg(Sema &S, CallExpr *Call) {}

/// Returns true if pipe element type is different from the pointer.
static bool checkPipePacketType(Sema &S, CallExpr *Call, unsigned Idx) {}

bool SemaOpenCL::checkBuiltinRWPipe(CallExpr *Call) {}

bool SemaOpenCL::checkBuiltinReserveRWPipe(CallExpr *Call) {}

bool SemaOpenCL::checkBuiltinCommitRWPipe(CallExpr *Call) {}

bool SemaOpenCL::checkBuiltinPipePackets(CallExpr *Call) {}

bool SemaOpenCL::checkBuiltinToAddr(unsigned BuiltinID, CallExpr *Call) {}

} // namespace clang