<div>Oh, I'm terribly sorry.  I did a global search and fixed these files, plus InitHeaderSearch.cpp, since I touched that file at one time.  Hopefully my editor is set up right now.</div>
<div> </div>
<div>-John<br><br></div>
<div class="gmail_quote">On Thu, Nov 5, 2009 at 1:16 PM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote"><br>On Nov 5, 2009, at 12:14 PM, John Thompson wrote:<br><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Author: jtsoftware<br>Date: Thu Nov  5 14:14:16 2009<br>New Revision: 86167<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=86167&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=86167&view=rev</a><br>
Log:<br>Adding -fshort-wchar option.<br></blockquote><br>Hi John,<br><br>It looks like some tabs snuck in, please convert them to spaces, thanks!<br><br>-Chris<br><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote"><br>Modified:<br>  cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td<br>  cfe/trunk/include/clang/Basic/LangOptions.h<br>
  cfe/trunk/include/clang/Basic/TargetInfo.h<br>  cfe/trunk/include/clang/Driver/Options.def<br>  cfe/trunk/lib/Basic/TargetInfo.cpp<br>  cfe/trunk/lib/Driver/Tools.cpp<br>  cfe/trunk/lib/Frontend/PCHReader.cpp<br>  cfe/trunk/lib/Frontend/PCHWriter.cpp<br>
  cfe/trunk/test/Driver/clang_f_opts.c<br>  cfe/trunk/test/Sema/wchar.c<br>  cfe/trunk/tools/clang-cc/clang-cc.cpp<br><br>Modified: cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>=<br>=<br>=<br>=<br>=<br>=<br>=<br>=<br>======================================================================<br>--- cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td (original)<br>+++ cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td Thu Nov  5 14:14:16 2009<br>
@@ -162,6 +162,9 @@<br>def warn_pch_char_signed : Error<<br>   "char was %select{unsigned|signed}0 in the PCH file but "<br>   "is currently %select{unsigned|signed}1">;<br>+def warn_pch_short_wchar : Error<<br>
+    "-fshort-wchar was %select{disabled|enabled}0 in the PCH file but "<br>+    "is currently %select{disabled|enabled}1">;<br><br>def err_not_a_pch_file : Error<<br>   "'%0' does not appear to be a precompiled header file">, DefaultFatal;<br>
<br>Modified: cfe/trunk/include/clang/Basic/LangOptions.h<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/include/clang/Basic/LangOptions.h (original)<br>+++ cfe/trunk/include/clang/Basic/LangOptions.h Thu Nov  5 14:14:16 2009<br>
@@ -83,6 +83,7 @@<br> unsigned AccessControl     : 1; // Whether C++ access control should<br>                                 // be enabled.<br> unsigned CharIsSigned      : 1; // Whether char is a signed or unsigned type<br>
+  unsigned ShortWChar        : 1; // Force wchar_t to be unsigned short int.<br><br> unsigned OpenCL            : 1; // OpenCL C99 language extensions.<br><br>@@ -159,6 +160,7 @@<br>   NoInline = 0;<br><br>   CharIsSigned = 1;<br>
+       ShortWChar = 0;<br><br>   MainFileName = 0;<br> }<br><br>Modified: cfe/trunk/include/clang/Basic/TargetInfo.h<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)<br>+++ cfe/trunk/include/clang/Basic/TargetInfo.h Thu Nov  5 14:14:16 2009<br>
@@ -346,6 +346,11 @@<br> /// options.<br> virtual void getDefaultLangOptions(LangOptions &Opts) {}<br><br>+  /// setForcedLangOptions - Set forced language options.<br>+  /// Apply changes to the target information with respect to certain<br>
+  /// language options which change the target configuration.<br>+  virtual void setForcedLangOptions(LangOptions &Opts);<br>+<br> /// getDefaultFeatures - Get the default set of target features for<br> /// the \args CPU; this should include all legal feature strings on<br>
 /// the target.<br><br>Modified: cfe/trunk/include/clang/Driver/Options.def<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.def?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.def?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/include/clang/Driver/Options.def (original)<br>+++ cfe/trunk/include/clang/Driver/Options.def Thu Nov  5 14:14:16 2009<br>
@@ -463,6 +463,7 @@<br>OPTION("-fprofile-generate", fprofile_generate, Flag, f_Group, INVALID, "", 0, 0, 0)<br>OPTION("-framework", framework, Separate, INVALID, INVALID, "l", 0, 0, 0)<br>
OPTION("-frtti", frtti, Flag, f_Group, INVALID, "", 0, 0, 0)<br>+OPTION("-fshort-wchar", fshort_wchar, Flag, f_Group, INVALID, "", 0, 0, 0)<br>OPTION("-fshow-source-location", fshow_source_location, Flag, f_Group, INVALID, "", 0, 0, 0)<br>
OPTION("-fsigned-bitfields", fsigned_bitfields, Flag, f_Group, INVALID, "", 0, 0, 0)<br>OPTION("-fsigned-char", fsigned_char, Flag, f_Group, INVALID, "", 0, 0, 0)<br><br>Modified: cfe/trunk/lib/Basic/TargetInfo.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/TargetInfo.cpp?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/TargetInfo.cpp?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/lib/Basic/TargetInfo.cpp (original)<br>+++ cfe/trunk/lib/Basic/TargetInfo.cpp Thu Nov  5 14:14:16 2009<br>@@ -12,6 +12,7 @@<br>
//===----------------------------------------------------------------------===//<br><br>#include "clang/Basic/TargetInfo.h"<br>+#include "clang/Basic/LangOptions.h"<br>#include "llvm/ADT/APFloat.h"<br>
#include "llvm/ADT/STLExtras.h"<br>#include <cstdlib><br>@@ -124,6 +125,15 @@<br> };<br>}<br><br>+/// setForcedLangOptions - Set forced language options.<br>+/// Apply changes to the target information with respect to certain<br>
+/// language options which change the target configuration.<br>+void TargetInfo::setForcedLangOptions(LangOptions &Opts) {<br>+       if (Opts.ShortWChar) {<br>+    WCharType = UnsignedShort;<br>+    WCharWidth = WCharAlign = 16;<br>
+       }<br>+}<br><br>//===----------------------------------------------------------------------===//<br><br><br>Modified: cfe/trunk/lib/Driver/Tools.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/lib/Driver/Tools.cpp (original)<br>+++ cfe/trunk/lib/Driver/Tools.cpp Thu Nov  5 14:14:16 2009<br>@@ -922,6 +922,13 @@<br>
     CmdArgs.push_back("-fsigned-char=0");<br> }<br><br>+  // -fshort-wchar default varies depending on platform; only<br>+  // pass if specified.<br>+  if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar)) {<br>
+    if (A->getOption().matches(options::OPT_fshort_wchar))<br>+      CmdArgs.push_back("-fshort-wchar");<br>+  }<br>+<br> // -fno-pascal-strings is default, only pass non-default. If the tool chain<br> // happened to translate to -mpascal-strings, we want to back translate here.<br>
 //<br><br>Modified: cfe/trunk/lib/Frontend/PCHReader.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReader.cpp?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReader.cpp?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/lib/Frontend/PCHReader.cpp (original)<br>+++ cfe/trunk/lib/Frontend/PCHReader.cpp Thu Nov  5 14:14:16 2009<br>@@ -104,6 +104,7 @@<br>
 PARSE_LANGOPT_IMPORTANT(NoInline, diag::warn_pch_no_inline);<br> PARSE_LANGOPT_IMPORTANT(AccessControl, diag::warn_pch_access_control);<br> PARSE_LANGOPT_IMPORTANT(CharIsSigned, diag::warn_pch_char_signed);<br>+  PARSE_LANGOPT_IMPORTANT(ShortWChar, diag::warn_pch_short_wchar);<br>
 if ((PPLangOpts.getGCMode() != 0) != (LangOpts.getGCMode() != 0)) {<br>   Reader.Diag(diag::warn_pch_gc_mode)<br>     << LangOpts.getGCMode() << PPLangOpts.getGCMode();<br>@@ -1741,6 +1742,7 @@<br>   PARSE_LANGOPT(NoInline);<br>
   PARSE_LANGOPT(AccessControl);<br>   PARSE_LANGOPT(CharIsSigned);<br>+    PARSE_LANGOPT(ShortWChar);<br>   LangOpts.setGCMode((LangOptions::GCMode)Record[Idx]);<br>   ++Idx;<br>   LangOpts.setVisibilityMode((LangOptions::VisibilityMode)Record[Idx]);<br>
<br>Modified: cfe/trunk/lib/Frontend/PCHWriter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriter.cpp?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriter.cpp?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/lib/Frontend/PCHWriter.cpp (original)<br>+++ cfe/trunk/lib/Frontend/PCHWriter.cpp Thu Nov  5 14:14:16 2009<br>@@ -765,6 +765,7 @@<br>
                                           // be enabled.<br> Record.push_back(LangOpts.CharIsSigned); // Whether char is a signed or<br>                                          // unsigned type<br>+  Record.push_back(LangOpts.ShortWChar);  // force wchar_t to be unsigned short<br>
 Record.push_back(LangOpts.getGCMode());<br> Record.push_back(LangOpts.getVisibilityMode());<br> Record.push_back(LangOpts.getStackProtectorMode());<br><br>Modified: cfe/trunk/test/Driver/clang_f_opts.c<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/test/Driver/clang_f_opts.c (original)<br>+++ cfe/trunk/test/Driver/clang_f_opts.c Thu Nov  5 14:14:16 2009<br>@@ -2,10 +2,11 @@<br>
// RUN: grep -F '"-fblocks"' %t &&<br>// RUN: grep -F '"--fmath-errno=1"' %t &&<br>// RUN: grep -F '"-fpascal-strings"' %t &&<br>-// RUN: clang -### -S -x c /dev/null -fblocks -fbuiltin -fmath-errno -fcommon -fpascal-strings -fno-blocks -fno-builtin -fno-math-errno -fno-common -fno-pascal-strings -fno-show-source-location %s 2> %t &&<br>
+// RUN: clang -### -S -x c /dev/null -fblocks -fbuiltin -fmath-errno -fcommon -fpascal-strings -fno-blocks -fno-builtin -fno-math-errno -fno-common -fno-pascal-strings -fno-show-source-location -fshort-wchar %s 2> %t &&<br>
// RUN: grep -F '"-fblocks=0"' %t &&<br>// RUN: grep -F '"-fbuiltin=0"' %t &&<br>// RUN: grep -F '"-fno-common"' %t &&<br>// RUN: grep -F '"--fmath-errno=0"' %t &&<br>
// RUN: grep -F '"-fno-show-source-location"' %t &&<br>+// RUN: grep -F '"-fshort-wchar"' %t &&<br>// RUN: true<br><br>Modified: cfe/trunk/test/Sema/wchar.c<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/wchar.c?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/wchar.c?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/test/Sema/wchar.c (original)<br>+++ cfe/trunk/test/Sema/wchar.c Thu Nov  5 14:14:16 2009<br>@@ -1,12 +1,20 @@<br>-// RUN: clang-cc %s -fsyntax-only -verify<br>
+// RUN: clang-cc %s -fsyntax-only -verify &&<br>+// RUN: clang-cc %s -fsyntax-only -fshort-wchar -verify -DSHORT_WCHAR<br>+<br>#include <wchar.h><br>-<br>+<br>+#if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \<br>
+ || defined(_M_X64) || defined(SHORT_WCHAR)<br>+  #define WCHAR_T_TYPE unsigned short<br>+#else<br>+  #define WCHAR_T_TYPE int<br>+#endif<br>+<br>int check_wchar_size[sizeof(*L"") == sizeof(wchar_t) ? 1 : -1];<br>
-<br>+<br>void foo() {<br>-  int t1[] = L"x";<br>+  WCHAR_T_TYPE t1[] = L"x";<br> wchar_t tab[] = L"x";<br>-<br>-  int t2[] = "x";     // expected-error {{initialization}}<br>+  WCHAR_T_TYPE t2[] = "x";     // expected-error {{initialization}}<br>
 char t3[] = L"x";   // expected-error {{initialization}}<br>}<br><br>Modified: cfe/trunk/tools/clang-cc/clang-cc.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/clang-cc.cpp?rev=86167&r1=86166&r2=86167&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/clang-cc.cpp?rev=86167&r1=86166&r2=86167&view=diff</a><br>
<br>==============================================================================<br>--- cfe/trunk/tools/clang-cc/clang-cc.cpp (original)<br>+++ cfe/trunk/tools/clang-cc/clang-cc.cpp Thu Nov  5 14:14:16 2009<br>@@ -611,6 +611,10 @@<br>
CharIsSigned("fsigned-char",<br>   llvm::cl::desc("Force char to be a signed/unsigned type"));<br><br>+static llvm::cl::opt<bool><br>+ShortWChar("fshort-wchar",<br>+    llvm::cl::desc("Force wchar_t to be a short unsigned int"));<br>
+<br><br>static llvm::cl::opt<bool><br>Trigraphs("trigraphs", llvm::cl::desc("Process trigraph sequences"));<br>@@ -813,6 +817,8 @@<br>   Options.Blocks = EnableBlocks;<br> if (CharIsSigned.getPosition())<br>
   Options.CharIsSigned = CharIsSigned;<br>+       if (ShortWChar.getPosition())<br>+               Options.ShortWChar = ShortWChar;<br><br> if (!AllowBuiltins)<br>   Options.NoBuiltin = 1;<br>@@ -877,6 +883,8 @@<br><br> if (MainFileName.getPosition())<br>
   Options.setMainFileName(MainFileName.c_str());<br>+<br>+       Target->setForcedLangOptions(Options);<br>}<br><br>//===----------------------------------------------------------------------===//<br><br><br>_______________________________________________<br>
cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote><br></blockquote></div><br><br clear="all"><br>-- <br>John Thompson<br><a href="mailto:John.Thompson.JTSoftware@gmail.com">John.Thompson.JTSoftware@gmail.com</a><br><br>