diff options
Diffstat (limited to 'clang/lib/Sema/SemaOpenMP.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaOpenMP.cpp | 79 | 
1 files changed, 38 insertions, 41 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 6f501965552e..dc1470bf7a9d 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -840,21 +840,21 @@ public:    /// false - otherwise.    bool isOrderedRegion() const {      if (const SharingMapTy *Top = getTopOfStackOrNull()) -      return Top->OrderedRegion.hasValue(); +      return Top->OrderedRegion.has_value();      return false;    }    /// Returns optional parameter for the ordered region.    std::pair<const Expr *, OMPOrderedClause *> getOrderedRegionParam() const {      if (const SharingMapTy *Top = getTopOfStackOrNull())        if (Top->OrderedRegion) -        return Top->OrderedRegion.getValue(); +        return Top->OrderedRegion.value();      return std::make_pair(nullptr, nullptr);    }    /// Returns true, if parent region is ordered (has associated    /// 'ordered' clause), false - otherwise.    bool isParentOrderedRegion() const {      if (const SharingMapTy *Parent = getSecondOnStackOrNull()) -      return Parent->OrderedRegion.hasValue(); +      return Parent->OrderedRegion.has_value();      return false;    }    /// Returns optional parameter for the ordered region. @@ -862,7 +862,7 @@ public:    getParentOrderedRegionParam() const {      if (const SharingMapTy *Parent = getSecondOnStackOrNull())        if (Parent->OrderedRegion) -        return Parent->OrderedRegion.getValue(); +        return Parent->OrderedRegion.value();      return std::make_pair(nullptr, nullptr);    }    /// Marks current region as nowait (it has a 'nowait' clause). @@ -7831,9 +7831,9 @@ public:    /// Return true if any expression is dependent.    bool dependent() const;    /// Returns true if the initializer forms non-rectangular loop. -  bool doesInitDependOnLC() const { return InitDependOnLC.hasValue(); } +  bool doesInitDependOnLC() const { return InitDependOnLC.has_value(); }    /// Returns true if the condition forms non-rectangular loop. -  bool doesCondDependOnLC() const { return CondDependOnLC.hasValue(); } +  bool doesCondDependOnLC() const { return CondDependOnLC.has_value(); }    /// Returns index of the loop we depend on (starting from 1), or 0 otherwise.    unsigned getLoopDependentIdx() const {      return InitDependOnLC.value_or(CondDependOnLC.value_or(0)); @@ -7942,18 +7942,18 @@ bool OpenMPIterationSpaceChecker::setStep(Expr *NewStep, bool Subtract) {      if (!TestIsLessOp)        TestIsLessOp = IsConstPos || (IsUnsigned && !Subtract);      if (UB && -        (IsConstZero || (TestIsLessOp.getValue() -                             ? (IsConstNeg || (IsUnsigned && Subtract)) -                             : (IsConstPos || (IsUnsigned && !Subtract))))) { +        (IsConstZero || +         (TestIsLessOp.value() ? (IsConstNeg || (IsUnsigned && Subtract)) +                               : (IsConstPos || (IsUnsigned && !Subtract))))) {        SemaRef.Diag(NewStep->getExprLoc(),                     diag::err_omp_loop_incr_not_compatible) -          << LCDecl << TestIsLessOp.getValue() << NewStep->getSourceRange(); +          << LCDecl << TestIsLessOp.value() << NewStep->getSourceRange();        SemaRef.Diag(ConditionLoc,                     diag::note_omp_loop_cond_requres_compatible_incr) -          << TestIsLessOp.getValue() << ConditionSrcRange; +          << TestIsLessOp.value() << ConditionSrcRange;        return true;      } -    if (TestIsLessOp.getValue() == Subtract) { +    if (TestIsLessOp.value() == Subtract) {        NewStep =            SemaRef.CreateBuiltinUnaryOp(NewStep->getExprLoc(), UO_Minus, NewStep)                .get(); @@ -8708,8 +8708,8 @@ Expr *OpenMPIterationSpaceChecker::buildNumIterations(        UBVal = MinUB.get();      }    } -  Expr *UBExpr = TestIsLessOp.getValue() ? UBVal : LBVal; -  Expr *LBExpr = TestIsLessOp.getValue() ? LBVal : UBVal; +  Expr *UBExpr = TestIsLessOp.value() ? UBVal : LBVal; +  Expr *LBExpr = TestIsLessOp.value() ? LBVal : UBVal;    Expr *Upper = tryBuildCapture(SemaRef, UBExpr, Captures).get();    Expr *Lower = tryBuildCapture(SemaRef, LBExpr, Captures).get();    if (!Upper || !Lower) @@ -8772,12 +8772,12 @@ std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues(    // init value.    Expr *MinExpr = nullptr;    Expr *MaxExpr = nullptr; -  Expr *LBExpr = TestIsLessOp.getValue() ? LB : UB; -  Expr *UBExpr = TestIsLessOp.getValue() ? UB : LB; -  bool LBNonRect = TestIsLessOp.getValue() ? InitDependOnLC.hasValue() -                                           : CondDependOnLC.hasValue(); -  bool UBNonRect = TestIsLessOp.getValue() ? CondDependOnLC.hasValue() -                                           : InitDependOnLC.hasValue(); +  Expr *LBExpr = TestIsLessOp.value() ? LB : UB; +  Expr *UBExpr = TestIsLessOp.value() ? UB : LB; +  bool LBNonRect = TestIsLessOp.value() ? InitDependOnLC.has_value() +                                        : CondDependOnLC.has_value(); +  bool UBNonRect = TestIsLessOp.value() ? CondDependOnLC.has_value() +                                        : InitDependOnLC.has_value();    Expr *Lower =        LBNonRect ? LBExpr : tryBuildCapture(SemaRef, LBExpr, Captures).get();    Expr *Upper = @@ -8901,8 +8901,8 @@ Expr *OpenMPIterationSpaceChecker::buildPreCond(    ExprResult CondExpr = SemaRef.BuildBinOp(        S, DefaultLoc, -      TestIsLessOp.getValue() ? (TestIsStrictOp ? BO_LT : BO_LE) -                              : (TestIsStrictOp ? BO_GT : BO_GE), +      TestIsLessOp.value() ? (TestIsStrictOp ? BO_LT : BO_LE) +                           : (TestIsStrictOp ? BO_GT : BO_GE),        NewLB.get(), NewUB.get());    if (CondExpr.isUsable()) {      if (!SemaRef.Context.hasSameUnqualifiedType(CondExpr.get()->getType(), @@ -8978,12 +8978,10 @@ Expr *OpenMPIterationSpaceChecker::buildOrderedLoopData(        !SemaRef.getLangOpts().CPlusPlus)      return nullptr;    // Upper - Lower -  Expr *Upper = TestIsLessOp.getValue() -                    ? Cnt -                    : tryBuildCapture(SemaRef, LB, Captures).get(); -  Expr *Lower = TestIsLessOp.getValue() -                    ? tryBuildCapture(SemaRef, LB, Captures).get() -                    : Cnt; +  Expr *Upper = +      TestIsLessOp.value() ? Cnt : tryBuildCapture(SemaRef, LB, Captures).get(); +  Expr *Lower = +      TestIsLessOp.value() ? tryBuildCapture(SemaRef, LB, Captures).get() : Cnt;    if (!Upper || !Lower)      return nullptr; @@ -11570,7 +11568,7 @@ protected:    bool checkType(ErrorInfoTy &ErrorInfo) const;    static bool CheckValue(const Expr *E, ErrorInfoTy &ErrorInfo, -                         bool ShouldBeLValue) { +                         bool ShouldBeLValue, bool ShouldBeInteger = false) {      if (ShouldBeLValue && !E->isLValue()) {        ErrorInfo.Error = ErrorTy::XNotLValue;        ErrorInfo.ErrorLoc = ErrorInfo.NoteLoc = E->getExprLoc(); @@ -11586,8 +11584,7 @@ protected:          ErrorInfo.ErrorRange = ErrorInfo.NoteRange = E->getSourceRange();          return false;        } - -      if (!QTy->isIntegerType()) { +      if (ShouldBeInteger && !QTy->isIntegerType()) {          ErrorInfo.Error = ErrorTy::NotInteger;          ErrorInfo.ErrorLoc = ErrorInfo.NoteLoc = E->getExprLoc();          ErrorInfo.ErrorRange = ErrorInfo.NoteRange = E->getSourceRange(); @@ -11890,7 +11887,7 @@ bool OpenMPAtomicCompareCaptureChecker::checkType(ErrorInfoTy &ErrorInfo) {    if (V && !CheckValue(V, ErrorInfo, true))      return false; -  if (R && !CheckValue(R, ErrorInfo, true)) +  if (R && !CheckValue(R, ErrorInfo, true, true))      return false;    return true; @@ -22588,27 +22585,27 @@ void Sema::ActOnOpenMPDeclareTargetName(NamedDecl *ND, SourceLocation Loc,    auto *VD = cast<ValueDecl>(ND);    llvm::Optional<OMPDeclareTargetDeclAttr *> ActiveAttr =        OMPDeclareTargetDeclAttr::getActiveAttr(VD); -  if (ActiveAttr && ActiveAttr.getValue()->getDevType() != DTCI.DT && -      ActiveAttr.getValue()->getLevel() == Level) { +  if (ActiveAttr && ActiveAttr.value()->getDevType() != DTCI.DT && +      ActiveAttr.value()->getLevel() == Level) {      Diag(Loc, diag::err_omp_device_type_mismatch)          << OMPDeclareTargetDeclAttr::ConvertDevTypeTyToStr(DTCI.DT)          << OMPDeclareTargetDeclAttr::ConvertDevTypeTyToStr( -               ActiveAttr.getValue()->getDevType()); +               ActiveAttr.value()->getDevType());      return;    } -  if (ActiveAttr && ActiveAttr.getValue()->getMapType() != MT && -      ActiveAttr.getValue()->getLevel() == Level) { +  if (ActiveAttr && ActiveAttr.value()->getMapType() != MT && +      ActiveAttr.value()->getLevel() == Level) {      Diag(Loc, diag::err_omp_declare_target_to_and_link) << ND;      return;    } -  if (ActiveAttr && ActiveAttr.getValue()->getLevel() == Level) +  if (ActiveAttr && ActiveAttr.value()->getLevel() == Level)      return;    Expr *IndirectE = nullptr;    bool IsIndirect = false;    if (DTCI.Indirect) { -    IndirectE = DTCI.Indirect.getValue(); +    IndirectE = DTCI.Indirect.value();      if (!IndirectE)        IsIndirect = true;    } @@ -22702,13 +22699,13 @@ void Sema::checkDeclIsAllowedInOpenMPTarget(Expr *E, Decl *D,          llvm::Optional<OMPDeclareTargetDeclAttr *> ActiveAttr =              OMPDeclareTargetDeclAttr::getActiveAttr(VD);          unsigned Level = DeclareTargetNesting.size(); -        if (ActiveAttr && ActiveAttr.getValue()->getLevel() >= Level) +        if (ActiveAttr && ActiveAttr.value()->getLevel() >= Level)            return;          DeclareTargetContextInfo &DTCI = DeclareTargetNesting.back();          Expr *IndirectE = nullptr;          bool IsIndirect = false;          if (DTCI.Indirect) { -          IndirectE = DTCI.Indirect.getValue(); +          IndirectE = DTCI.Indirect.value();            if (!IndirectE)              IsIndirect = true;          }  | 
