r211392 - [C++1z] Implement N3981: Disable trigraphs by default in C++1z mode.

Richard Smith richard-llvm at metafoo.co.uk
Fri Jun 20 12:23:57 PDT 2014


Author: rsmith
Date: Fri Jun 20 14:23:57 2014
New Revision: 211392

URL: http://llvm.org/viewvc/llvm-project?rev=211392&view=rev
Log:
[C++1z] Implement N3981: Disable trigraphs by default in C++1z mode.

Added:
    cfe/trunk/test/Lexer/cxx1z-trigraphs.cpp
Modified:
    cfe/trunk/lib/Frontend/CompilerInvocation.cpp

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=211392&r1=211391&r2=211392&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Fri Jun 20 14:23:57 2014
@@ -1167,7 +1167,8 @@ void CompilerInvocation::setLangDefaults
 
   // Mimicing gcc's behavior, trigraphs are only enabled if -trigraphs
   // is specified, or -std is set to a conforming mode.
-  Opts.Trigraphs = !Opts.GNUMode;
+  // Trigraphs are disabled by default in c++1z onwards.
+  Opts.Trigraphs = !Opts.GNUMode && !Opts.CPlusPlus1z;
 
   Opts.DollarIdents = !Opts.AsmPreprocessor;
 

Added: cfe/trunk/test/Lexer/cxx1z-trigraphs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Lexer/cxx1z-trigraphs.cpp?rev=211392&view=auto
==============================================================================
--- cfe/trunk/test/Lexer/cxx1z-trigraphs.cpp (added)
+++ cfe/trunk/test/Lexer/cxx1z-trigraphs.cpp Fri Jun 20 14:23:57 2014
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -std=c++1z %s -verify
+// RUN: %clang_cc1 -std=c++1z %s -trigraphs -fsyntax-only
+
+??= define foo ; // expected-error {{}} expected-warning {{trigraph ignored}}
+
+static_assert("??="[0] == '#', ""); // expected-error {{failed}} expected-warning {{trigraph ignored}}
+
+// ??/
+error here; // expected-error {{}}





More information about the cfe-commits mailing list