Modify some deleted function methods to better reflect reality:

 - New isDefined() function checks for deletedness
 - isThisDeclarationADefinition checks for deletedness
 - New doesThisDeclarationHaveABody() does what
   isThisDeclarationADefinition() used to do
 - The IsDeleted bit is not propagated across redeclarations
 - isDeleted() now checks the canoncial declaration
 - New isDeletedAsWritten() does what it says on the tin.
 - isUserProvided() now correct (thanks Richard!)

This fixes the bug that we weren't catching

void foo() = delete;
void foo() {}

as being a redefinition.

llvm-svn: 131013
21 files changed
tree: fa15f407674a846c0f26a4036b6836c441fc78b9
  1. clang/
  2. compiler-rt/
  3. debuginfo-tests/
  4. libcxx/
  5. libcxxabi/
  6. lldb/
  7. llvm/
  8. polly/