Skip to content
Snippets Groups Projects
  • Alp Toker's avatar
    08235661
    Fix missed exception spec checks and crashes · 08235661
    Alp Toker authored
    Delayed exception specification checking for defaulted members and virtual
    destructors are both susceptible to mutation during iteration so we need to
    swap and process the worklists.
    
    This resolves both accepts-invalid and rejects-valid issues and moreover fixes
    potential invalid memory access as the contents of the vectors change during
    iteration and recursive template instantiation.
    
    Checking can be further delayed where parent classes aren't yet fully defined.
    This patch adds two assertions at end of TU to ensure no specs are left
    unchecked as was happenning before the fix, plus a test case from Marshall Clow
    for the defaulted member crash extracted from the libcxx headers.
    
    Reviewed by Richard Smith.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192947 91177308-0d34-0410-b5e6-96231b3b80d8
    08235661
    History
    Fix missed exception spec checks and crashes
    Alp Toker authored
    Delayed exception specification checking for defaulted members and virtual
    destructors are both susceptible to mutation during iteration so we need to
    swap and process the worklists.
    
    This resolves both accepts-invalid and rejects-valid issues and moreover fixes
    potential invalid memory access as the contents of the vectors change during
    iteration and recursive template instantiation.
    
    Checking can be further delayed where parent classes aren't yet fully defined.
    This patch adds two assertions at end of TU to ensure no specs are left
    unchecked as was happenning before the fix, plus a test case from Marshall Clow
    for the defaulted member crash extracted from the libcxx headers.
    
    Reviewed by Richard Smith.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192947 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.