Lines Matching +full:- +full:lh
1 //===--- SemaStmtAttr.cpp - Statement Attribute Handling ------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file implements stmt-related attribute processing.
11 //===----------------------------------------------------------------------===//
31 << A << St->getBeginLoc(); in handleFallThroughAttr()
38 if (FnScope->SwitchStack.empty()) { in handleFallThroughAttr()
49 FnScope->setHasFallthroughStmt(); in handleFallThroughAttr()
63 // clang-tidy knows about available rules. in handleSuppressAttr()
79 llvm::StringSwitch<StringRef>(PragmaNameLoc->Ident->getName()) in handleLoopHintAttr()
81 PragmaNameLoc->Ident->getName()) in handleLoopHintAttr()
89 S.Diag(St->getBeginLoc(), diag::err_pragma_loop_precedes_nonloop) << Pragma; in handleLoopHintAttr()
120 assert(OptionLoc && OptionLoc->Ident && in handleLoopHintAttr()
123 OptionLoc->Ident->getName()) in handleLoopHintAttr()
137 assert((ValueExpr || (StateLoc && StateLoc->Ident)) && in handleLoopHintAttr()
139 if (ValueExpr && S.CheckLoopHintExpr(ValueExpr, St->getBeginLoc())) in handleLoopHintAttr()
141 if (StateLoc && StateLoc->Ident && StateLoc->Ident->isStr("scalable")) in handleLoopHintAttr()
149 if (S.CheckLoopHintExpr(ValueExpr, St->getBeginLoc())) in handleLoopHintAttr()
158 assert(StateLoc && StateLoc->Ident && "Loop hint must have an argument"); in handleLoopHintAttr()
159 if (StateLoc->Ident->isStr("disable")) in handleLoopHintAttr()
161 else if (StateLoc->Ident->isStr("assume_safety")) in handleLoopHintAttr()
163 else if (StateLoc->Ident->isStr("full")) in handleLoopHintAttr()
165 else if (StateLoc->Ident->isStr("enable")) in handleLoopHintAttr()
204 S.Diag(St->getBeginLoc(), diag::warn_nomerge_attribute_ignored_in_stmt) in handleNoMergeAttr()
248 // First, check for the easy cases that are table-generated for us. in CheckForIncompatibleAttributes()
269 const LoopHintAttr *LH = dyn_cast<LoopHintAttr>(I); in CheckForIncompatibleAttributes() local
272 if (!LH) in CheckForIncompatibleAttributes()
275 LoopHintAttr::OptionType Option = LH->getOption(); in CheckForIncompatibleAttributes()
326 CategoryState.StateAttr = LH; in CheckForIncompatibleAttributes()
330 CategoryState.NumericAttr = LH; in CheckForIncompatibleAttributes()
334 SourceLocation OptionLoc = LH->getRange().getBegin(); in CheckForIncompatibleAttributes()
338 << /*Duplicate=*/true << PrevAttr->getDiagnosticName(Policy) in CheckForIncompatibleAttributes()
339 << LH->getDiagnosticName(Policy); in CheckForIncompatibleAttributes()
343 CategoryState.StateAttr->getState() == LoopHintAttr::Disable)) { in CheckForIncompatibleAttributes()
350 << CategoryState.StateAttr->getDiagnosticName(Policy) in CheckForIncompatibleAttributes()
351 << CategoryState.NumericAttr->getDiagnosticName(Policy); in CheckForIncompatibleAttributes()
368 if (!(ArgVal = E->getIntegerConstantExpr(S.Context))) { in handleOpenCLUnrollHint()
370 << A << AANT_ArgumentIntegerConstant << E->getSourceRange(); in handleOpenCLUnrollHint()
374 int Val = ArgVal->getSExtValue(); in handleOpenCLUnrollHint()
392 // Unknown attributes are automatically warned on. Target-specific attributes in ProcessStmtAttribute()
432 << A << St->getBeginLoc(); in ProcessStmtAttribute()