forked from OSchip/llvm-project
Revert "[Modules] Fix regression when an elaborated-type-specifier mentions a hidden tag"
This is causing assertion failures; reverting until I can fix. This reverts commit r255267 llvm-svn: 255324
This commit is contained in:
parent
1e5dfedae7
commit
38f2bfbbe4
|
@ -12121,12 +12121,10 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
|
|||
|
||||
// In C++, we need to do a redeclaration lookup to properly
|
||||
// diagnose some problems.
|
||||
// FIXME: this lookup is also used (with and without C++) to find a hidden
|
||||
// declaration so that we don't get ambiguity errors when using a type
|
||||
// declared by an elaborated-type-specifier. In C that is not correct and
|
||||
// we should instead merge compatible types found by lookup.
|
||||
Previous.setRedeclarationKind(ForRedeclaration);
|
||||
LookupQualifiedName(Previous, SearchDC);
|
||||
if (getLangOpts().CPlusPlus) {
|
||||
Previous.setRedeclarationKind(ForRedeclaration);
|
||||
LookupQualifiedName(Previous, SearchDC);
|
||||
}
|
||||
}
|
||||
|
||||
// If we have a known previous declaration to use, then use it.
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
struct S1;
|
||||
struct S2 { int x; };
|
||||
struct S3 { int x; };
|
|
@ -386,10 +386,3 @@ module TypedefTag {
|
|||
header "typedef-tag-hidden.h"
|
||||
}
|
||||
}
|
||||
|
||||
module ElaboratedTypeStructs {
|
||||
module Empty {}
|
||||
module Structs {
|
||||
header "elaborated-type-structs.h"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
// RUN: rm -rf %t
|
||||
// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify
|
||||
|
||||
@import ElaboratedTypeStructs.Empty; // The structs are now hidden.
|
||||
struct S1 *x;
|
||||
struct S2 *y;
|
||||
// FIXME: compatible definition should not be an error.
|
||||
struct S2 { int x; }; // expected-error {{redefinition}}
|
||||
struct S3 *z;
|
||||
// Incompatible definition.
|
||||
struct S3 { float y; }; // expected-error {{redefinition}}
|
||||
// expected-note@elaborated-type-structs.h:* 2 {{previous definition is here}}
|
||||
|
||||
@import ElaboratedTypeStructs.Structs;
|
||||
|
||||
void useS1(struct S1 *x);
|
||||
void useS2(struct S2 *x);
|
||||
void useS2(struct S2 *x);
|
Loading…
Reference in New Issue