Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NLL] Add false edges out of infinite loops #47802

Merged
merged 6 commits into from
Feb 9, 2018

Commits on Feb 5, 2018

  1. Fix comment in ExprKind::LogicalOp

    The comment previously implied that the true branch would result in the false
    block. Fortunately the implementation is correct.
    sapphire-arches committed Feb 5, 2018
    Configuration menu
    Copy the full SHA
    5ca88ae View commit details
    Browse the repository at this point in the history
  2. mir: Add TerminatorKind::FalseUnwind

    Sometimes a simple goto misses the cleanup/unwind edges. Specifically, in the
    case of infinite loops such as those introduced by a loop statement without any
    other out edges. Analogous to TerminatorKind::FalseEdges; this new terminator
    kind is used when we want borrowck to consider an unwind path, but real control
    flow should never actually take it.
    sapphire-arches committed Feb 5, 2018
    Configuration menu
    Copy the full SHA
    bdc37aa View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ed6a2eb View commit details
    Browse the repository at this point in the history
  4. mir: Add and fix tests for FalseUnwinds

    Fix instructions on existing mir-opt tests after introducing false edges from
    loops. Also, add a test for issue 46036: infinite loops.
    sapphire-arches committed Feb 5, 2018
    Configuration menu
    Copy the full SHA
    eae1a35 View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2018

  1. [ci skip] Generate false edges from loop_block

    As opposed to using weirdness involving pretending the body block
    is the loop block. This does not pass tests
    
    This commit is [ci skip] because I know it doesn't pass tests yet.
    Somehow this commit introduces nondeterminism into the handling of
    loops.
    sapphire-arches committed Feb 7, 2018
    Configuration menu
    Copy the full SHA
    8e0c3f5 View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2018

  1. Fix tests for MIR loop lowering

    Fixes the hash test to recognize that MirValidated can change when changing
    around labels, and add a new test that makes sure we're lowering loop statements
    correctly.
    sapphire-arches committed Feb 8, 2018
    Configuration menu
    Copy the full SHA
    85dfa9d View commit details
    Browse the repository at this point in the history