Home | History | Annotate | Download | only in Sema

Lines Matching full:jump

1 //===--- JumpDiagnostics.cpp - Protected scope jump analysis ------*- C++ -*-=//
45 /// InDiag - The note to emit if there is a jump into this scope.
48 /// OutDiag - The note to emit if there is an indirect jump out
378 // Jump from the catch to the finally or try is not valid.
390 // Jump from the finally to the try or catch is not valid.
431 // Jump from the catch into the try is not allowed either.
475 Stmt *Jump = Jumps.pop_back_val();
478 if (GotoStmt *GS = dyn_cast<GotoStmt>(Jump)) {
487 if (IndirectGotoStmt *IGS = dyn_cast<IndirectGotoStmt>(Jump)) {
496 SwitchStmt *SS = cast<SwitchStmt>(Jump);
507 /// VerifyIndirectJumps - Verify whether any possible indirect jump
510 /// way to know where the jump is going, we can't implicitly run the
513 /// Thus, an indirect jump is "trivial" if it bypasses no
514 /// initializations and no teardowns. More formally, an indirect jump
518 /// Jump-triviality is transitive but asymmetric.
524 /// jump between A and B is trivial for every indirect goto statement A
539 // down on the number of jump sites we'll have to consider later.
548 "indirect jump didn't get added to scopes?");
575 // every scope containing a jump site.
580 // entered, then verify that every jump scope can be trivially
590 // Mark all the enclosing scopes from which you can safely jump
606 // Walk through all the jump sites, checking that they can trivially
661 /// Produce primary diagnostic for an indirect jump statement.
662 static void DiagnoseIndirectJumpStmt(Sema &S, IndirectGotoStmt *Jump,
666 S.Diag(Jump->getGotoLoc(), diag::err_indirect_goto_in_protected_scope);
671 /// Produce note diagnostics for a jump into a protected scope.
679 /// Diagnose an indirect jump which is known to cross scopes.
680 void JumpScopeChecker::DiagnoseIndirectJump(IndirectGotoStmt *Jump,
692 DiagnoseIndirectJumpStmt(S, Jump, Target, Diagnosed);
703 DiagnoseIndirectJumpStmt(S, Jump, Target, Diagnosed);
707 // Diagnose this jump if it would be ill-formed in C++98.
709 S.Diag(Jump->getGotoLoc(),
716 /// CheckJump - Validate that the specified jump statement is valid: that it is
721 assert(LabelAndGotoScopes.count(From) && "Jump didn't get added to scopes?");
724 assert(LabelAndGotoScopes.count(To) && "Jump didn't get added to scopes?");
732 // It's okay to jump out from a nested scope.
761 // Handle -Wc++98-compat warnings if the jump is well-formed.