[Parse] Let declarations follow labels in -fms-extensions mode
MSVC permits declarations in these places as conforming extension (it is a constraint violation otherwise). This fixes PR28782. llvm-svn: 277352
This commit is contained in:
parent
431368a9e6
commit
6ac7dd19f7
|
@ -206,7 +206,8 @@ Retry:
|
|||
}
|
||||
|
||||
default: {
|
||||
if ((getLangOpts().CPlusPlus || Allowed == ACK_Any) &&
|
||||
if ((getLangOpts().CPlusPlus || getLangOpts().MicrosoftExt ||
|
||||
Allowed == ACK_Any) &&
|
||||
isDeclarationStatement()) {
|
||||
SourceLocation DeclStart = Tok.getLocation(), DeclEnd;
|
||||
DeclGroupPtrTy Decl = ParseDeclaration(Declarator::BlockContext,
|
||||
|
|
|
@ -106,3 +106,12 @@ __declspec(align(16)) struct align_before_key3 {} *align_before_key3_var;
|
|||
_Static_assert(__alignof(struct align_before_key1) == 16, "");
|
||||
_Static_assert(__alignof(struct align_before_key2) == 16, "");
|
||||
_Static_assert(__alignof(struct align_before_key3) == 16, "");
|
||||
|
||||
void PR28782(int i) {
|
||||
foo:
|
||||
int n;
|
||||
switch (i) {
|
||||
case 0:
|
||||
int m;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue