]> granicus.if.org Git - clang/commit
Cope with anonymous tags defined within declarators by structurally
authorDouglas Gregor <dgregor@apple.com>
Mon, 15 Feb 2010 23:54:17 +0000 (23:54 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 15 Feb 2010 23:54:17 +0000 (23:54 +0000)
commitea35d11905f756ad33b87bd89cd3ac1e7ce57994
tree3d50c67c53cde3ca1f9824d098c8c2b1028a162a
parentb9bbd592c7ea72ada8d982e40a729beb9b53371e
Cope with anonymous tags defined within declarators by structurally
comparing their types under the assumption that they are equivalent,
rather than importing the types and then checking for compatibility. A
few minor tweaks here:
  - Teach structural matching to handle compatibility between
  function types with prototypes and those without prototypes.
  - Teach structural matching that an incomplete record decl is the
  same as any other record decl with the same name.
  - Keep track of pairs of declarations that we have already checked
  (but failed to find as structurally matching), so we don't emit
  diagnostics repeatedly.
  - When importing a typedef of an anonymous tag, be sure to link the
  imported tag type to its typedef.

With these changes, we survive a repeated import of <stdlib.h> and
<stdio.h>. Alas, the ASTNodeImporter is getting a little grotty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96298 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/ASTImporter.h
lib/AST/ASTImporter.cpp
test/ASTMerge/Inputs/enum1.c
test/ASTMerge/Inputs/enum2.c
test/ASTMerge/Inputs/function1.c
test/ASTMerge/Inputs/function2.c
test/ASTMerge/Inputs/struct1.c
test/ASTMerge/Inputs/struct2.c
test/ASTMerge/struct.c