Lines Matching refs:LHS
75 static bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec,
576 static void diagnoseUnexpectedOperator(Preprocessor &PP, PPValue &LHS, in diagnoseUnexpectedOperator() argument
578 if (Tok.is(tok::l_paren) && LHS.getIdentifier()) in diagnoseUnexpectedOperator()
579 PP.Diag(LHS.getRange().getBegin(), diag::err_pp_expr_bad_token_lparen) in diagnoseUnexpectedOperator()
580 << LHS.getIdentifier(); in diagnoseUnexpectedOperator()
583 << LHS.getRange(); in diagnoseUnexpectedOperator()
592 static bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec, in EvaluateDirectiveSubExpr() argument
599 diagnoseUnexpectedOperator(PP, LHS, PeekTok); in EvaluateDirectiveSubExpr()
617 if (Operator == tok::ampamp && LHS.Val == 0) in EvaluateDirectiveSubExpr()
619 else if (Operator == tok::pipepipe && LHS.Val != 0) in EvaluateDirectiveSubExpr()
621 else if (Operator == tok::question && LHS.Val == 0) in EvaluateDirectiveSubExpr()
630 PPValue RHS(LHS.getBitWidth()); in EvaluateDirectiveSubExpr()
674 llvm::APSInt Res(LHS.getBitWidth()); in EvaluateDirectiveSubExpr()
684 Res.setIsUnsigned(LHS.isUnsigned() || RHS.isUnsigned()); in EvaluateDirectiveSubExpr()
688 if (!LHS.isUnsigned() && LHS.Val.isNegative()) in EvaluateDirectiveSubExpr()
690 << toString(LHS.Val, 10, true) + " to " + in EvaluateDirectiveSubExpr()
691 toString(LHS.Val, 10, false) in EvaluateDirectiveSubExpr()
692 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
697 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
699 LHS.Val.setIsUnsigned(Res.isUnsigned()); in EvaluateDirectiveSubExpr()
708 Res = LHS.Val % RHS.Val; in EvaluateDirectiveSubExpr()
711 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
717 if (LHS.Val.isSigned()) in EvaluateDirectiveSubExpr()
718 Res = llvm::APSInt(LHS.Val.sdiv_ov(RHS.Val, Overflow), false); in EvaluateDirectiveSubExpr()
720 Res = LHS.Val / RHS.Val; in EvaluateDirectiveSubExpr()
723 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
730 Res = llvm::APSInt(LHS.Val.smul_ov(RHS.Val, Overflow), false); in EvaluateDirectiveSubExpr()
732 Res = LHS.Val * RHS.Val; in EvaluateDirectiveSubExpr()
736 if (LHS.isUnsigned()) in EvaluateDirectiveSubExpr()
737 Res = LHS.Val.ushl_ov(RHS.Val, Overflow); in EvaluateDirectiveSubExpr()
739 Res = llvm::APSInt(LHS.Val.sshl_ov(RHS.Val, Overflow), false); in EvaluateDirectiveSubExpr()
745 if (ShAmt >= LHS.getBitWidth()) { in EvaluateDirectiveSubExpr()
747 ShAmt = LHS.getBitWidth()-1; in EvaluateDirectiveSubExpr()
749 Res = LHS.Val >> ShAmt; in EvaluateDirectiveSubExpr()
753 if (LHS.isUnsigned()) in EvaluateDirectiveSubExpr()
754 Res = LHS.Val + RHS.Val; in EvaluateDirectiveSubExpr()
756 Res = llvm::APSInt(LHS.Val.sadd_ov(RHS.Val, Overflow), false); in EvaluateDirectiveSubExpr()
759 if (LHS.isUnsigned()) in EvaluateDirectiveSubExpr()
760 Res = LHS.Val - RHS.Val; in EvaluateDirectiveSubExpr()
762 Res = llvm::APSInt(LHS.Val.ssub_ov(RHS.Val, Overflow), false); in EvaluateDirectiveSubExpr()
765 Res = LHS.Val <= RHS.Val; in EvaluateDirectiveSubExpr()
769 Res = LHS.Val < RHS.Val; in EvaluateDirectiveSubExpr()
773 Res = LHS.Val >= RHS.Val; in EvaluateDirectiveSubExpr()
777 Res = LHS.Val > RHS.Val; in EvaluateDirectiveSubExpr()
781 Res = LHS.Val != RHS.Val; in EvaluateDirectiveSubExpr()
785 Res = LHS.Val == RHS.Val; in EvaluateDirectiveSubExpr()
789 Res = LHS.Val & RHS.Val; in EvaluateDirectiveSubExpr()
792 Res = LHS.Val ^ RHS.Val; in EvaluateDirectiveSubExpr()
795 Res = LHS.Val | RHS.Val; in EvaluateDirectiveSubExpr()
798 Res = (LHS.Val != 0 && RHS.Val != 0); in EvaluateDirectiveSubExpr()
802 Res = (LHS.Val != 0 || RHS.Val != 0); in EvaluateDirectiveSubExpr()
810 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
817 << tok::colon << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
825 bool AfterColonLive = ValueLive && LHS.Val == 0; in EvaluateDirectiveSubExpr()
826 PPValue AfterColonVal(LHS.getBitWidth()); in EvaluateDirectiveSubExpr()
839 Res = LHS.Val != 0 ? RHS.Val : AfterColonVal.Val; in EvaluateDirectiveSubExpr()
853 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
860 << LHS.getRange() << RHS.getRange(); in EvaluateDirectiveSubExpr()
863 LHS.Val = Res; in EvaluateDirectiveSubExpr()
864 LHS.setEnd(RHS.getRange().getEnd()); in EvaluateDirectiveSubExpr()