Skip to content
  • Douglas Gregor's avatar
    Rework the way we track which declarations are "used" during · 0b6a6242
    Douglas Gregor authored
    compilation, and (hopefully) introduce RAII objects for changing the
    "potentially evaluated" state at all of the necessary places within
    Sema and Parser. Other changes:
    
      - Set the unevaluated/potentially-evaluated context appropriately
        during template instantiation.
      - We now recognize three different states while parsing or
        instantiating expressions: unevaluated, potentially evaluated, and
        potentially potentially evaluated (for C++'s typeid).
      - When we're in a potentially potentially-evaluated context, queue
        up MarkDeclarationReferenced calls in a stack. For C++ typeid
        expressions that are potentially evaluated, we will play back
        these MarkDeclarationReferenced calls when we exit the
        corresponding potentially potentially-evaluated context.
      - Non-type template arguments are now parsed as constant
        expressions, so they are not potentially-evaluated.
    
    llvm-svn: 73899
    0b6a6242
Loading