Skip to content
  • Ted Kremenek's avatar
    Modified the notion of "Block-level expressions" in CFGs to include Stmt*. This · 85be7cf8
    Ted Kremenek authored
    is because GNU-style Statement-expressions cause the last statement in the
    statement-expression to act like an expression.
    
    We now have two notions: block-level statements and block-level expressions.
    
    The former are all Stmt* that appear in the list of statements in CFGBlocks. The
    latter is the subset of the former; these block-level statements are used as
    subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the
    latter, not the former (previously isBlockExpr() always returned true for
    non-Expr Stmt*).
    
    Modified the LiveVariables analysis to also track liveness state for block-level
    expressions (using the updated definition of block-level expressions).
    
    Modified the dataflow solver so that when it records values for block-level
    statements, it records the dataflow value *before* the transfer function for a
    Stmt* is evaluated (not after). This is more in sync in what clients will want.
    
    Modified CFGStmtVisitor to record the current block-level statement.
    
    llvm-svn: 46143
    85be7cf8
Loading