diff options
-rw-r--r-- | clang/include/clang/Basic/TokenKinds.def | 6 | ||||
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 15 | ||||
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 1 | ||||
-rw-r--r-- | clang/tools/clang-cc/clang-cc.cpp | 3 |
4 files changed, 19 insertions, 6 deletions
diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def index 9b65288f68e..497b1884a3d 100644 --- a/clang/include/clang/Basic/TokenKinds.def +++ b/clang/include/clang/Basic/TokenKinds.def @@ -341,7 +341,6 @@ ALIAS("__attribute__", __attribute, KEYALL) ALIAS("__const" , const , KEYALL) ALIAS("__const__" , const , KEYALL) ALIAS("__alignof__" , __alignof , KEYALL) -ALIAS("_asm" , asm , KEYMS) ALIAS("__asm" , asm , KEYALL) ALIAS("__asm__" , asm , KEYALL) ALIAS("__complex" , _Complex , KEYALL) @@ -359,6 +358,11 @@ ALIAS("__typeof__" , typeof , KEYALL) ALIAS("__volatile" , volatile , KEYALL) ALIAS("__volatile__" , volatile , KEYALL) +// Microsoft extensions which should be disabled in strict conformance mode +ALIAS("_asm" , asm , KEYMS) +ALIAS("_cdecl" , __cdecl , KEYMS) +ALIAS("_fastcall" , __fastcall , KEYMS) +ALIAS("_stdcall" , __stdcall , KEYMS) //===----------------------------------------------------------------------===// // Objective-C @-preceeded keywords. diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 120d52543c0..b4e32e9d9f3 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -244,6 +244,11 @@ static void GetDarwinLanguageOptions(LangOptions &Opts, Opts.ObjCNonFragileABI = 1; } +/// GetWindowsLanguageOptions - Set the default language options for Windows. +static void GetWindowsLanguageOptions(LangOptions &Opts, + const char *Triple) { + Opts.Microsoft = true; +} //===----------------------------------------------------------------------===// // Specific target implementations. @@ -924,9 +929,8 @@ public: WindowsX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) { TLSSupported = false; - // FIXME: Fix wchar_t. - // FIXME: We should probably enable -fms-extensions by default for - // this target. + WCharType = SignedShort; + WCharWidth = WCharAlign = 16; } virtual void getTargetDefines(const LangOptions &Opts, std::vector<char> &Defines) const { @@ -938,6 +942,11 @@ public: Define(Defines, "_X86_"); Define(Defines, "__MSVCRT__"); } + + virtual void getDefaultLangOptions(LangOptions &Opts) { + X86_32TargetInfo::getDefaultLangOptions(Opts); + GetWindowsLanguageOptions(Opts, getTargetTriple()); + } }; } // end anonymous namespace diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 01729fad5e7..6cff75daf3c 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -310,7 +310,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI, // Filter out some microsoft extensions when trying to parse in ms-compat // mode. if (LangOpts.Microsoft) { - DefineBuiltinMacro(Buf, "_cdecl=__cdecl"); DefineBuiltinMacro(Buf, "__int8=__INT8_TYPE__"); DefineBuiltinMacro(Buf, "__int16=__INT16_TYPE__"); DefineBuiltinMacro(Buf, "__int32=__INT32_TYPE__"); diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp index f38c6bde418..c58340c3eee 100644 --- a/clang/tools/clang-cc/clang-cc.cpp +++ b/clang/tools/clang-cc/clang-cc.cpp @@ -808,7 +808,8 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK, if (PascalStrings.getPosition()) Options.PascalStrings = PascalStrings; - Options.Microsoft = MSExtensions; + if (MSExtensions.getPosition()) + Options.Microsoft = MSExtensions; Options.WritableStrings = WritableStrings; if (NoLaxVectorConversions.getPosition()) Options.LaxVectorConversions = 0; |