]> granicus.if.org Git - clang/commit
[modules] Maintain an AST invariant across module load/save: if any declaration
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 31 Jul 2014 23:46:44 +0000 (23:46 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 31 Jul 2014 23:46:44 +0000 (23:46 +0000)
commit59aecdb55e33108f7b588d9f0b0a1025d67f9738
treed6e78e55d2c01075b583608e5962ce2ee4723a76
parent06266415660bdbbd2b8b41ce83def93b98dd69ec
[modules] Maintain an AST invariant across module load/save: if any declaration
of a function has a resolved exception specification, then all declarations of
the function do.

We should probably improve the AST representation to make this implicit (perhaps
only store the exception specification on the canonical declaration), but this
fixes things for now.

The testcase for this (which used to assert) also exposes the actual bug I was
trying to reduce here: we sometimes fail to emit the body of an imported
special member function definition. Fix for that to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214458 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExceptionSpec.cpp
lib/Serialization/ASTReaderDecl.cpp
test/Modules/Inputs/cxx-irgen-left.h
test/Modules/Inputs/cxx-irgen-right.h
test/Modules/Inputs/cxx-irgen-top.h
test/Modules/cxx-irgen.cpp