diff options
| author | Joao Matos <ripzonetriton@gmail.com> | 2012-08-31 18:45:21 +0000 |
|---|---|---|
| committer | Joao Matos <ripzonetriton@gmail.com> | 2012-08-31 18:45:21 +0000 |
| commit | dc86f94f623b285b61192cf1a1ca8daa87d28422 (patch) | |
| tree | a8ecafd8615742d6ef208e6e1666162f0fd94f61 /clang/lib/Serialization | |
| parent | d65f1c8d6ebdd070db205f958d647d88b93fcf5b (diff) | |
| download | bcm5719-llvm-dc86f94f623b285b61192cf1a1ca8daa87d28422.tar.gz bcm5719-llvm-dc86f94f623b285b61192cf1a1ca8daa87d28422.zip | |
Improved MSVC __interface support by adding first class support for it, instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins.
llvm-svn: 163013
Diffstat (limited to 'clang/lib/Serialization')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 1014658c399..b454cc341c0 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -1716,14 +1716,16 @@ static bool isSameEntity(NamedDecl *X, NamedDecl *Y) { return true; // Compatible tags match. - if (TagDecl *TagX = dyn_cast<TagDecl>(X)) { - TagDecl *TagY = cast<TagDecl>(Y); - return (TagX->getTagKind() == TagY->getTagKind()) || - ((TagX->getTagKind() == TTK_Struct || TagX->getTagKind() == TTK_Class) && - (TagY->getTagKind() == TTK_Struct || TagY->getTagKind() == TTK_Class)); - } - - // Functions with the same type and linkage match. + if (TagDecl *TagX = dyn_cast<TagDecl>(X)) {
+ TagDecl *TagY = cast<TagDecl>(Y);
+ return (TagX->getTagKind() == TagY->getTagKind()) ||
+ ((TagX->getTagKind() == TTK_Struct || TagX->getTagKind() == TTK_Class ||
+ TagX->getTagKind() == TTK_Interface) &&
+ (TagY->getTagKind() == TTK_Struct || TagY->getTagKind() == TTK_Class ||
+ TagY->getTagKind() == TTK_Interface));
+ }
+
+ // Functions with the same type and linkage match.
// FIXME: This needs to cope with function templates, merging of //prototyped/non-prototyped functions, etc. if (FunctionDecl *FuncX = dyn_cast<FunctionDecl>(X)) { |

