<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - [regression] clang crash on __has_nothrow_copy"
   href="https://llvm.org/bugs/show_bug.cgi?id=30491">30491</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[regression] clang crash on __has_nothrow_copy
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>3.9
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++14
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>blastrock@free.fr
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The following code compiles on clang 3.8 but makes clang 3.9 crash:

    struct StringWrapper
    {
      StringWrapper(StringWrapper const&) noexcept(false)
      {}
    };

    struct AccountID : public StringWrapper
    {
      using StringWrapper::StringWrapper;
    };

    static_assert(!__has_nothrow_copy(AccountID), "no");

Here is the backtrace:

    #0 0x0000000000f13d08 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/home/philippe/.local/bin/clang-3.9+0xf13d08)
    #1 0x0000000000f143e6 SignalHandler(int)
(/home/philippe/.local/bin/clang-3.9+0xf143e6)
    #2 0x00007ff87fb58d40 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10d40)
    #3 0x00000000022b56b8 clang::FunctionDecl::getNumParams() const
(/home/philippe/.local/bin/clang-3.9+0x22b56b8)
    #4 0x00000000022d71d4
clang::CXXConstructorDecl::isCopyOrMoveConstructor(unsigned int&) const
(/home/philippe/.local/bin/clang-3.9+0x22d71d4)
    #5 0x00000000022d4439 clang::CXXConstructorDecl::isCopyConstructor(unsigned
int&) const (/home/philippe/.local/bin/clang-3.9+0x22d4439)
    #6 0x0000000001d8fe82 evaluateTypeTrait(clang::Sema&, clang::TypeTrait,
clang::SourceLocation, llvm::ArrayRef<clang::TypeSourceInfo*>,
clang::SourceLocation) (/home/philippe/.local/bin/clang-3.9+0x1d8fe82)
    #7 0x0000000001d8d3c4 clang::Sema::BuildTypeTrait(clang::TypeTrait,
clang::SourceLocation, llvm::ArrayRef<clang::TypeSourceInfo*>,
clang::SourceLocation) (/home/philippe/.local/bin/clang-3.9+0x1d8d3c4)
    #8 0x0000000001d9010a clang::Sema::ActOnTypeTrait(clang::TypeTrait,
clang::SourceLocation, llvm::ArrayRef<clang::OpaquePtr<clang::QualType> >,
clang::SourceLocation) (/home/philippe/.local/bin/clang-3.9+0x1d9010a)
    #9 0x00000000019c6870 clang::Parser::ParseTypeTrait()
(/home/philippe/.local/bin/clang-3.9+0x19c6870)
    #10 0x00000000019addfe clang::Parser::ParseCastExpression(bool, bool,
bool&, clang::Parser::TypeCastState)
(/home/philippe/.local/bin/clang-3.9+0x19addfe)
    #11 0x00000000019adbd8
clang::Parser::ParseConstantExpression(clang::Parser::TypeCastState)
(/home/philippe/.local/bin/clang-3.9+0x19adbd8)
    #12 0x000000000199bb49
clang::Parser::ParseStaticAssertDeclaration(clang::SourceLocation&)
(/home/philippe/.local/bin/clang-3.9+0x199bb49)
    #13 0x0000000001982354 clang::Parser::ParseDeclaration(unsigned int,
clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&)
(/home/philippe/.local/bin/clang-3.9+0x1982354)
    #14 0x000000000196f6fe
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/home/philippe/.local/bin/clang-3.9+0x196f6fe)
    #15 0x000000000196ecdc
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
(/home/philippe/.local/bin/clang-3.9+0x196ecdc)
    #16 0x000000000196b596 clang::ParseAST(clang::Sema&, bool, bool)
(/home/philippe/.local/bin/clang-3.9+0x196b596)
    #17 0x0000000001365f3c clang::FrontendAction::Execute()
(/home/philippe/.local/bin/clang-3.9+0x1365f3c)
    #18 0x000000000132fca8
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/home/philippe/.local/bin/clang-3.9+0x132fca8)
    #19 0x00000000013df67b
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/home/philippe/.local/bin/clang-3.9+0x13df67b)
    #20 0x000000000070d8ad cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/home/philippe/.local/bin/clang-3.9+0x70d8ad)
    #21 0x000000000070cd6e main (/home/philippe/.local/bin/clang-3.9+0x70cd6e)
    #22 0x00007ff87e6df5f0 __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x205f0)
    #23 0x0000000000709d29 _start
(/home/philippe/.local/bin/clang-3.9+0x709d29)</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>