]> granicus.if.org Git - clang/commitdiff
Fixed support for disabled wchar_t and added an appropriate test.
authorAbramo Bagnara <abramo.bagnara@bugseng.com>
Sun, 9 Sep 2012 10:13:32 +0000 (10:13 +0000)
committerAbramo Bagnara <abramo.bagnara@bugseng.com>
Sun, 9 Sep 2012 10:13:32 +0000 (10:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163476 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ASTContext.cpp
test/SemaCXX/no-wchar.cpp

index df1273cb1e4e07a5bad2c7452ae578301c2644e9..7942e10bbb27a5dd35175f20daac5b50817494c0 100644 (file)
@@ -761,12 +761,12 @@ void ASTContext::InitBuiltinTypes(const TargetInfo &Target) {
   InitBuiltinType(Int128Ty,            BuiltinType::Int128);
   InitBuiltinType(UnsignedInt128Ty,    BuiltinType::UInt128);
 
-  if (LangOpts.CPlusPlus) { // C++ 3.9.1p5
+  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
+  } else // C99 (or C++ using -fno-wchar)
     WCharTy = getFromTargetType(Target.getWCharType());
 
   WIntTy = getFromTargetType(Target.getWIntType());
index b4ec2ed9a8a302c35e46ebbc2fd433ff591b7fed..291b657f51abee0027097df48ffdceb4f5dd52fc 100644 (file)
@@ -1,2 +1,9 @@
-// RUN: %clang_cc1 -fsyntax-only -fno-wchar -verify %s
+// RUN: %clang_cc1 -triple i386-pc-win32 -fsyntax-only -fno-wchar -verify %s
 wchar_t x; // expected-error {{unknown type name 'wchar_t'}}
+
+typedef unsigned short wchar_t;
+void foo(const wchar_t* x);
+
+void bar() {
+  foo(L"wide string literal");
+}