Skip to content
  • Sean Callanan's avatar
    Fixed object lifetimes in ClangExpressionDeclMap · 979f74d1
    Sean Callanan authored
    so that it is not referring to potentially stale
    state during IR execution.
    
    This was done by introducing modular state (like
    ClangExpressionVariable) where groups of state
    variables have well-defined lifetimes:
    
    - m_parser_vars are specific to parsing, and only
      exist between calls to WillParse() and DidParse().
    
    - m_struct_vars survive for the entire execution
      of the ClangExpressionDeclMap because they
      provide the template for a materialized set of
      expression variables.
    
    - m_material_vars are specific to a single
      instance of materialization, and only exist
      between calls to Materialize() and
      Dematerialize().
    
    I also removed unnecessary references to long-
    lived state that really didn't need to be referred
    to at all, and also introduced several assert()s
    that helped me diagnose a few bugs (fixed too).
    
    llvm-svn: 120778
    979f74d1
Loading