]> granicus.if.org Git - clang/commit
Ignore exception specifier mismatch when merging redeclarations
authorReid Kleckner <rnk@google.com>
Tue, 17 Sep 2019 20:29:10 +0000 (20:29 +0000)
committerReid Kleckner <rnk@google.com>
Tue, 17 Sep 2019 20:29:10 +0000 (20:29 +0000)
commit5f45b3fe8b8259e07d41254838fd8d3829869f7e
tree301d50d862d945f5fa4d543b5919509347f81bfb
parentd89349b08256ee4de350a13a4d18ce2b964b5991
Ignore exception specifier mismatch when merging redeclarations

Exception specifiers are now part of the function type in C++17.
Normally, it is illegal to redeclare the same function or specialize a
template with a different exception specifier, but under
-fms-compatibility, we accept it with a warning. Without this change,
the function types would not match due to the exception specifier, and
clang would claim that the types were "incompatible". Now we emit the
warning and merge the redeclaration as we would in C++14 and earlier.

Fixes PR42842, which is about compiling _com_ptr_t in C++17.

Based on a patch by Alex Fusco <alexfusco@google.com>!

Differential Revision: https://reviews.llvm.org/D67590

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@372178 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaDecl.cpp
test/SemaCXX/ms-exception-spec.cpp