forked from OSchip/llvm-project
Reverting r181004 since it has broken test/Sema/wchar.c.
llvm-svn: 181122
This commit is contained in:
parent
85dcbde239
commit
d428ff46fe
|
@ -40,8 +40,7 @@ struct PrintingPolicy {
|
|||
SuppressUnwrittenScope(false), SuppressInitializers(false),
|
||||
ConstantArraySizeAsWritten(false), AnonymousTagLocations(true),
|
||||
SuppressStrongLifetime(false), Bool(LO.Bool),
|
||||
TerseOutput(false), PolishForDeclaration(false),
|
||||
MSWChar(LO.MicrosoftMode && !LO.WChar) { }
|
||||
TerseOutput(false), PolishForDeclaration(false) { }
|
||||
|
||||
/// \brief What language we're printing.
|
||||
LangOptions LangOpts;
|
||||
|
@ -147,10 +146,6 @@ struct PrintingPolicy {
|
|||
/// declaration tag; such as, do not print attributes attached to the declaration.
|
||||
///
|
||||
unsigned PolishForDeclaration : 1;
|
||||
|
||||
/// \brief When true, print the built-in wchar_t type as __wchar_t. For use in
|
||||
/// Microsoft mode when wchar_t is not available.
|
||||
unsigned MSWChar : 1;
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
|
|
@ -524,7 +524,6 @@ KEYWORD(__interface , KEYMS)
|
|||
ALIAS("__int8" , char , KEYMS)
|
||||
ALIAS("__int16" , short , KEYMS)
|
||||
ALIAS("__int32" , int , KEYMS)
|
||||
ALIAS("__wchar_t" , wchar_t , KEYMS)
|
||||
ALIAS("_asm" , asm , KEYMS)
|
||||
ALIAS("_alignof" , __alignof , KEYMS)
|
||||
ALIAS("__builtin_alignof", __alignof , KEYMS)
|
||||
|
|
|
@ -897,13 +897,12 @@ void ASTContext::InitBuiltinTypes(const TargetInfo &Target) {
|
|||
InitBuiltinType(Int128Ty, BuiltinType::Int128);
|
||||
InitBuiltinType(UnsignedInt128Ty, BuiltinType::UInt128);
|
||||
|
||||
if ((LangOpts.CPlusPlus && LangOpts.WChar) || LangOpts.MicrosoftMode) {
|
||||
// C++ 3.9.1p5 or -fms-compatibility.
|
||||
if (LangOpts.CPlusPlus && LangOpts.WChar) { // C++ 3.9.1p5
|
||||
if (TargetInfo::isTypeSigned(Target.getWCharType()))
|
||||
InitBuiltinType(WCharTy, BuiltinType::WChar_S);
|
||||
else // -fshort-wchar makes wchar_t be unsigned.
|
||||
InitBuiltinType(WCharTy, BuiltinType::WChar_U);
|
||||
} else // C99 (or C++ using -fno-wchar) in non-MicrosoftMode.
|
||||
} else // C99 (or C++ using -fno-wchar)
|
||||
WCharTy = getFromTargetType(Target.getWCharType());
|
||||
|
||||
WIntTy = getFromTargetType(Target.getWIntType());
|
||||
|
|
|
@ -1521,7 +1521,7 @@ StringRef BuiltinType::getName(const PrintingPolicy &Policy) const {
|
|||
case Double: return "double";
|
||||
case LongDouble: return "long double";
|
||||
case WChar_S:
|
||||
case WChar_U: return Policy.MSWChar ? "__wchar_t" : "wchar_t";
|
||||
case WChar_U: return "wchar_t";
|
||||
case Char16: return "char16_t";
|
||||
case Char32: return "char32_t";
|
||||
case NullPtr: return "nullptr_t";
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple i386-pc-win32 %s
|
||||
|
||||
// C++ mode with -fno-wchar works the same as C mode for wchar_t.
|
||||
// RUN: %clang_cc1 -x c++ -fno-wchar -fsyntax-only -verify -fms-compatibility -triple i386-pc-win32 %s
|
||||
|
||||
wchar_t f(); // expected-error{{unknown type name 'wchar_t'}}
|
||||
|
||||
// __wchar_t is available as an MS extension.
|
||||
__wchar_t g; // expected-note {{previous}}
|
||||
|
||||
// __wchar_t is a distinct type, separate from the target's integer type for wide chars.
|
||||
unsigned short g; // expected-error {{redefinition of 'g' with a different type: 'unsigned short' vs '__wchar_t'}}
|
|
@ -1,12 +0,0 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions -triple i386-pc-win32 %s
|
||||
|
||||
// C++ mode with -fno-wchar works the same as C mode for wchar_t.
|
||||
// RUN: %clang_cc1 -x c++ -fno-wchar -fsyntax-only -verify -fms-extensions -triple i386-pc-win32 %s
|
||||
|
||||
wchar_t f(); // expected-error{{unknown type name 'wchar_t'}}
|
||||
|
||||
// __wchar_t is available as an MS extension.
|
||||
__wchar_t g(); // No error.
|
||||
|
||||
// __wchar_t is the same as the target's integer type for wide chars.
|
||||
unsigned short g(); // No error.
|
Loading…
Reference in New Issue