summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/AST/ASTContext.cpp2
-rw-r--r--clang/lib/Sema/SemaInit.cpp2
-rw-r--r--clang/test/Sema/wchar_size.c13
3 files changed, 12 insertions, 5 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 2b4bc89aace..f76d320c386 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -1444,8 +1444,6 @@ QualType ASTContext::getWCharType() const {
if (LangOpts.CPlusPlus)
return WCharTy;
- // FIXME: In C, shouldn't WCharTy just be a typedef of the target's
- // wide-character type?
return getFromTargetType(Target.getWCharType());
}
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index eeda1d05ca3..1f4ab078efa 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -48,7 +48,7 @@ static Expr *IsStringInit(Expr *Init, QualType DeclType, ASTContext &Context) {
// wchar_t array can be initialized with a wide string: C99 6.7.8p15:
// "An array with element type compatible with wchar_t may be initialized by a
// wide string literal, optionally enclosed in braces."
- if (Context.typesAreCompatible(Context.WCharTy, AT->getElementType()))
+ if (Context.typesAreCompatible(Context.getWCharType(), AT->getElementType()))
// Only allow wchar_t x[] = L"foo"; not wchar_t x[] = "foo";
return Init;
diff --git a/clang/test/Sema/wchar_size.c b/clang/test/Sema/wchar_size.c
index a4041b976da..b7171fec7a5 100644
--- a/clang/test/Sema/wchar_size.c
+++ b/clang/test/Sema/wchar_size.c
@@ -1,3 +1,12 @@
-// RUN: clang %s -fsyntax-only -verify -triple=i686-apple-darwin9
+// RUN: clang %s -fsyntax-only -verify
+#include <wchar.h>
-int check_wchar_size[sizeof(*L"") == 4 ? 1 : -1];
+int check_wchar_size[sizeof(*L"") == sizeof(wchar_t) ? 1 : -1];
+
+void foo() {
+ int t1[] = L"x";
+ wchar_t tab[] = L"x";
+
+ int t2[] = "x"; // expected-error {{initialization}}
+ char t3[] = L"x"; // expected-error {{initialization}}
+}
OpenPOWER on IntegriCloud