<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Sorry to revive an old thread, but just to confirm, was it intentional for the fundamental typeinfo for char8_t to be always emitted, even when not building with -fchar8_t?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">cfe-commits <cfe-commits-bounces@lists.llvm.org> on behalf of Richard Smith via cfe-commits <cfe-commits@lists.llvm.org><br>
<b>Reply-To: </b>Richard Smith <richard-llvm@metafoo.co.uk><br>
<b>Date: </b>Monday, April 30, 2018 at 10:06 PM<br>
<b>To: </b>"cfe-commits@lists.llvm.org" <cfe-commits@lists.llvm.org><br>
<b>Subject: </b>r331244 - Implement P0482R2, support for char8_t type.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Author: rsmith<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 331244<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D331244-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7fyjnMpg8tSWIPmJ46q5iSAomEeeXb5iAHykEvjG-Bs&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D331244-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7fyjnMpg8tSWIPmJ46q5iSAomEeeXb5iAHykEvjG-Bs&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Log:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Implement P0482R2, support for char8_t type.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This is not yet part of any C++ working draft, and so is controlled by the flag<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-fchar8_t rather than a -std= flag. (The GCC implementation is controlled by a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">flag with the same name.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This implementation is experimental, and will be removed or revised<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">substantially to match the proposal as it makes its way through the C++<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">committee.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/CodeGenCXX/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/Lexer/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/SemaCXX/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/AST/ASTContext.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/AST/BuiltinTypes.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/AST/Type.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Basic/LangOptions.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Basic/Specifiers.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Basic/TokenKinds.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Driver/Options.td<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Sema/DeclSpec.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Sema/Initialization.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/include/clang/Serialization/ASTBitCodes.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/ASTContext.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/ExprConstant.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/ItaniumMangle.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/MicrosoftMangle.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/NSAPI.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/Type.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/AST/TypeLoc.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Analysis/PrintfFormatString.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Basic/IdentifierTable.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/CodeGen/CodeGenTypes.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Driver/ToolChains/Clang.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Format/FormatToken.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Frontend/CompilerInvocation.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Frontend/InitPreprocessor.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Index/USRGeneration.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Lex/PPExpressions.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Parse/ParseDecl.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Parse/ParseExpr.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Parse/ParseExprCXX.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Parse/ParseTentative.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/DeclSpec.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaDecl.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaDeclCXX.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaExpr.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaInit.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaOverload.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaTemplate.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Sema/SemaType.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Serialization/ASTCommon.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Serialization/ASTReader.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/Lexer/cxx-features.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/AST/ASTContext.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_ASTContext.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=9xFtO5gx5AjdOJolymIqhtKCHN79DrOyjXIADk5NNOA&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_ASTContext.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=9xFtO5gx5AjdOJolymIqhtKCHN79DrOyjXIADk5NNOA&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/AST/ASTContext.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/AST/ASTContext.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -999,6 +999,7 @@ public:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType WCharTy;  // [C++ 3.9.1p5].<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType WideCharTy; // Same as WCharTy in C++, integer type in C99.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType WIntTy;   // [C99 7.24.1], integer type unchanged by default promotions.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  CanQualType Char8Ty;  // [C++20 proposal]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType Char16Ty; // [C++0x 3.9.1p5], integer type in C99.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType Char32Ty; // [C++0x 3.9.1p5], integer type in C99.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   CanQualType SignedCharTy, ShortTy, IntTy, LongTy, LongLongTy, Int128Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/AST/BuiltinTypes.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_BuiltinTypes.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=nVLJ5LpyHD_3I5wUoW4iW0yLjw4tuOCRr9ho0zcUwSQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_BuiltinTypes.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=nVLJ5LpyHD_3I5wUoW4iW0yLjw4tuOCRr9ho0zcUwSQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/AST/BuiltinTypes.def (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/AST/BuiltinTypes.def Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -72,6 +72,9 @@ UNSIGNED_TYPE(UChar, UnsignedCharTy)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// 'wchar_t' for targets where it's unsigned<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">SHARED_SINGLETON_TYPE(UNSIGNED_TYPE(WChar_U, WCharTy))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// 'char8_t' in C++20 (proposed)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+UNSIGNED_TYPE(Char8, Char8Ty)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// 'char16_t' in C++<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">UNSIGNED_TYPE(Char16, Char16Ty)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/AST/Type.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_Type.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=2uiDKJ1TYftSa5kjrUkp-8_xvI3vNA4fdrpDVMCx8wc&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_Type.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=2uiDKJ1TYftSa5kjrUkp-8_xvI3vNA4fdrpDVMCx8wc&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/AST/Type.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/AST/Type.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1777,6 +1777,7 @@ public:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isBooleanType() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isCharType() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isWideCharType() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  bool isChar8Type() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isChar16Type() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isChar32Type() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool isAnyCharacterType() const;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_DiagnosticSemaKinds.td-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=71MfUp9muqJq_fGX1RDWoXGMia1DMIn_VMmdEvZ0RlE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_DiagnosticSemaKinds.td-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=71MfUp9muqJq_fGX1RDWoXGMia1DMIn_VMmdEvZ0RlE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2421,6 +2421,9 @@ def err_template_different_associated_co<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def warn_cxx98_compat_unicode_type : Warning<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   "'%0' type specifier is incompatible with C++98">,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   InGroup<CXX98Compat>, DefaultIgnore;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def warn_cxx17_compat_unicode_type : Warning<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  "'char8_t' type specifier is incompatible with C++ standards before C++20">,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  InGroup<CXXPre2aCompat>, DefaultIgnore;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// __make_integer_seq<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def err_integer_sequence_negative_length : Error<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -5822,6 +5825,13 @@ def err_array_init_wide_string_into_char<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   "initializing char array with wide string literal">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def err_array_init_incompat_wide_string_into_wchar : Error<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   "initializing wide char array with incompatible wide string literal">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def err_array_init_plain_string_into_char8_t : Error<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  "initializing 'char8_t' array with plain string literal">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def note_array_init_plain_string_into_char8_t : Note<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  "add 'u8' prefix to form a 'char8_t' string literal">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def err_array_init_utf8_string_into_char : Error<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  "initialization of char array with UTF-8 string literal is not permitted "<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  "by '-fchar8_t'">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def err_array_init_different_type : Error<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   "cannot initialize array %diff{of type $ with array of type $|"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   "with different type of array}0,1">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Basic/LangOptions.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_LangOptions.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=runF5kQwpvGO2zD2V0tQQ-OkczIU0zO5yo6YFYHzysk&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_LangOptions.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=runF5kQwpvGO2zD2V0tQQ-OkczIU0zO5yo6YFYHzysk&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Basic/LangOptions.def (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Basic/LangOptions.def Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -106,6 +106,7 @@ LANGOPT(LineComment       , 1, 0, "'//'<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">LANGOPT(Bool              , 1, 0, "bool, true, and false keywords")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">LANGOPT(Half              , 1, 0, "half keyword")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">LANGOPT(WChar             , 1, CPlusPlus, "wchar_t keyword")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+LANGOPT(Char8             , 1, 0, "char8_t keyword")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">LANGOPT(DeclSpecKeyword   , 1, 0, "__declspec keyword")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">BENIGN_LANGOPT(DollarIdents   , 1, 1, "'$' in identifiers")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Basic/Specifiers.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_Specifiers.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=im9MYO4ZJYhTyZGB43sN1QSMaDtQH80G3YjmDvMfZTE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_Specifiers.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=im9MYO4ZJYhTyZGB43sN1QSMaDtQH80G3YjmDvMfZTE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Basic/Specifiers.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Basic/Specifiers.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -47,6 +47,7 @@ namespace clang {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_void,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_char,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_wchar,        // C++ wchar_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    TST_char8,        // C++20 char8_t (proposed)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_char16,       // C++11 char16_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_char32,       // C++11 char32_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     TST_int,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Basic/TokenKinds.def<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_TokenKinds.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=WKP42u-fM1k_elNke1VNZiQl3FEMVH9eL4-KY5LAiFQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_TokenKinds.def-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=WKP42u-fM1k_elNke1VNZiQl3FEMVH9eL4-KY5LAiFQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Basic/TokenKinds.def (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Basic/TokenKinds.def Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -260,6 +260,7 @@ PUNCTUATOR(caretcaret,            "^^")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">//   BOOLSUPPORT - This is a keyword if 'bool' is a built-in type<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">//   HALFSUPPORT - This is a keyword if 'half' is a built-in type<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">//   WCHARSUPPORT - This is a keyword if 'wchar_t' is a built-in type<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//   CHAR8SUPPORT - This is a keyword if 'char8_t' is a built-in type<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">KEYWORD(auto                        , KEYALL)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">KEYWORD(break                       , KEYALL)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -380,6 +381,9 @@ KEYWORD(co_yield                    , KE<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">MODULES_KEYWORD(module)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">MODULES_KEYWORD(import)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// C++ char8_t proposal<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+KEYWORD(char8_t                     , CHAR8SUPPORT)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// C11 Extension<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">KEYWORD(_Float16                    , KEYALL)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Driver/Options.td<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Driver_Options.td-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=H9sO5F67IvVzUZ2PVjcjdf6-RmvvMLIdADPwTqsmppE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Driver_Options.td-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=H9sO5F67IvVzUZ2PVjcjdf6-RmvvMLIdADPwTqsmppE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Driver/Options.td (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Driver/Options.td Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1525,6 +1525,10 @@ def frtti : Flag<["-"], "frtti">, Group<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def : Flag<["-"], "fsched-interblock">, Group<clang_ignored_f_Group>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def fshort_enums : Flag<["-"], "fshort-enums">, Group<f_Group>, Flags<[CC1Option]>,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   HelpText<"Allocate to an enum type only as many bytes as it needs for the declared range of possible values">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def fchar8__t : Flag<["-"], "fchar8_t">, Group<f_Group>, Flags<[CC1Option]>,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  HelpText<"Enable C++ builtin type char8_t">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+def fno_char8__t : Flag<["-"], "fno-char8_t">, Group<f_Group>,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  HelpText<"Disable C++ builtin type char8_t">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def fshort_wchar : Flag<["-"], "fshort-wchar">, Group<f_Group>,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   HelpText<"Force wchar_t to be a short unsigned int">;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">def fno_short_wchar : Flag<["-"], "fno-short-wchar">, Group<f_Group>,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Sema/DeclSpec.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Sema_DeclSpec.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=u5pfyoU8ST3absjsbc9CFlX5-EggS_makjnJBk69D-w&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Sema_DeclSpec.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=u5pfyoU8ST3absjsbc9CFlX5-EggS_makjnJBk69D-w&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Sema/DeclSpec.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Sema/DeclSpec.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -273,6 +273,7 @@ public:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_void = clang::TST_void;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_char = clang::TST_char;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_wchar = clang::TST_wchar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  static const TST TST_char8 = clang::TST_char8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_char16 = clang::TST_char16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_char32 = clang::TST_char32;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   static const TST TST_int = clang::TST_int;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Sema/Initialization.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Sema_Initialization.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=wTYWJmCLg0Q-0gQ_mxBXbnAgcxX6IT9bzm9u6DFVm80&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Sema_Initialization.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=wTYWJmCLg0Q-0gQ_mxBXbnAgcxX6IT9bzm9u6DFVm80&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Sema/Initialization.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Sema/Initialization.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -952,6 +952,12 @@ public:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     /// literal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     FK_IncompatWideStringIntoWideChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    /// \brief Initializing char8_t array with plain string literal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    FK_PlainStringIntoUTF8Char,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    /// \brief Initializing char array with UTF-8 string literal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    FK_UTF8StringIntoPlainChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     /// \brief Array type mismatch.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     FK_ArrayTypeMismatch,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/include/clang/Serialization/ASTBitCodes.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Serialization_ASTBitCodes.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=C8nZZiGcPF9OUoIDB9mUwWmY6VGNKkWhpS_KDCy-MZY&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Serialization_ASTBitCodes.h-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=C8nZZiGcPF9OUoIDB9mUwWmY6VGNKkWhpS_KDCy-MZY&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/include/clang/Serialization/ASTBitCodes.h (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/include/clang/Serialization/ASTBitCodes.h Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -936,6 +936,9 @@ namespace serialization {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       /// \brief The '_Float16' type<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       PREDEF_TYPE_FLOAT16_ID = 44,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      /// \brief The C++ 'char8_t' type.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      PREDEF_TYPE_CHAR8_ID = 45,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       /// \brief OpenCL image types with auto numeration<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       PREDEF_TYPE_##Id##_ID,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/ASTContext.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ASTContext.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=cOs6KUZnMwaVJUQGRo6uR7eweOZPXmmluCQuOWNhrPU&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ASTContext.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=cOs6KUZnMwaVJUQGRo6uR7eweOZPXmmluCQuOWNhrPU&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/ASTContext.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/ASTContext.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1151,6 +1151,9 @@ void ASTContext::InitBuiltinTypes(const<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   WIntTy = getFromTargetType(Target.getWIntType());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  // C++20 (proposed)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  InitBuiltinType(Char8Ty,              BuiltinType::Char8);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.CPlusPlus) // C++0x 3.9.1p5, extension for C++<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     InitBuiltinType(Char16Ty,           BuiltinType::Char16);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   else // C99<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1739,6 +1742,7 @@ TypeInfo ASTContext::getTypeInfoImpl(con<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::UChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::SChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Width = Target->getCharWidth();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Align = Target->getCharAlign();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -5456,6 +5460,7 @@ QualType ASTContext::getPromotedIntegerT<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     // FIXME: Is there some better way to compute this?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (BT->getKind() == BuiltinType::WChar_S ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         BT->getKind() == BuiltinType::WChar_U ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        BT->getKind() == BuiltinType::Char8 ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         BT->getKind() == BuiltinType::Char16 ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         BT->getKind() == BuiltinType::Char32) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       bool FromIsSigned = BT->getKind() == BuiltinType::WChar_S;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -6202,6 +6207,7 @@ static char getObjCEncodingForPrimitiveK<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     switch (kind) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Void:       return 'v';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Bool:       return 'B';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::UChar:      return 'C';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/ExprConstant.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ExprConstant.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=H9oTx0hxRV2YiaqRaAT62rPqwLaeI6qSx1Jnr4eq33k&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ExprConstant.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=H9oTx0hxRV2YiaqRaAT62rPqwLaeI6qSx1Jnr4eq33k&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/ExprConstant.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/ExprConstant.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -7326,6 +7326,7 @@ static int EvaluateBuiltinClassifyType(c<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return pointer_type_class;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::ObjCId:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ItaniumMangle.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=8sy6OE5pi8Ry9q6y17BaUw30pa7hvsxmLVOkx_e3JOI&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_ItaniumMangle.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=8sy6OE5pi8Ry9q6y17BaUw30pa7hvsxmLVOkx_e3JOI&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/ItaniumMangle.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2525,6 +2525,9 @@ void CXXNameMangler::mangleType(const Bu<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Out << 'w';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    Out << "Du";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Out << "Ds";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_MicrosoftMangle.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Oe755zBOlULArIedwdkG4ESB44N3II4b8ks8mqhWBXg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_MicrosoftMangle.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Oe755zBOlULArIedwdkG4ESB44N3II4b8ks8mqhWBXg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1918,6 +1918,7 @@ void MicrosoftCXXNameMangler::mangleType<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Out << "$$T";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Float16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     mangleArtificalTagType(TTK_Struct, "_Float16", {"__clang"});<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/NSAPI.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_NSAPI.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=LszgOQ0OAtQi2smrBjINDfOOO0JW2QALu8AnaRQYETw&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_NSAPI.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=LszgOQ0OAtQi2smrBjINDfOOO0JW2QALu8AnaRQYETw&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/NSAPI.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/NSAPI.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -436,6 +436,7 @@ NSAPI::getNSNumberFactoryMethodKind(Qual<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Void:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Int128:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/Type.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_Type.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=orhBoXrhRRVshKrjW77pTveqJpEGpXW8tXyGtGjSeW4&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_Type.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=orhBoXrhRRVshKrjW77pTveqJpEGpXW8tXyGtGjSeW4&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/Type.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/Type.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1763,6 +1763,12 @@ bool Type::isWideCharType() const {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   return false;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+bool Type::isChar8Type() const {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (const BuiltinType *BT = dyn_cast<BuiltinType>(CanonicalType))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return BT->getKind() == BuiltinType::Char8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  return false;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">bool Type::isChar16Type() const {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (const auto *BT = dyn_cast<BuiltinType>(CanonicalType))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return BT->getKind() == BuiltinType::Char16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1785,6 +1791,7 @@ bool Type::isAnyCharacterType() const {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::UChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2419,6 +2426,7 @@ bool Type::isPromotableIntegerType() con<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::UShort:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::WChar_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return true;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2655,6 +2663,8 @@ StringRef BuiltinType::getName(const Pri<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case WChar_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return Policy.MSWChar ? "__wchar_t" : "wchar_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return "char8_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return "char16_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/AST/TypeLoc.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_TypeLoc.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=czE7uVgwmaS0tL19k_4O_a107woTNWonZBuYRyuuFCE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_TypeLoc.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=czE7uVgwmaS0tL19k_4O_a107woTNWonZBuYRyuuFCE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/AST/TypeLoc.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/AST/TypeLoc.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -317,6 +317,8 @@ TypeSpecifierType BuiltinTypeLoc::getWri<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return TST_char;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return TST_char8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return TST_char16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Analysis/PrintfFormatString.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Analysis_PrintfFormatString.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=SMqf7-kzif3FR52t2zKRcorAotHjhJwTrs_EM_cSzmg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Analysis_PrintfFormatString.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=SMqf7-kzif3FR52t2zKRcorAotHjhJwTrs_EM_cSzmg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Analysis/PrintfFormatString.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Analysis/PrintfFormatString.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -647,6 +647,7 @@ bool PrintfSpecifier::fixType(QualType Q<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::WChar_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8: // FIXME: Treat like 'char'?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::UInt128:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Basic/IdentifierTable.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Basic_IdentifierTable.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=vs1ezrBwj1inarHICFoMMpHzh-isKMrQ_oIWI4tDT68&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Basic_IdentifierTable.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=vs1ezrBwj1inarHICFoMMpHzh-isKMrQ_oIWI4tDT68&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Basic/IdentifierTable.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Basic/IdentifierTable.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -115,14 +115,15 @@ namespace {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     KEYNOOPENCL = 0x02000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     WCHARSUPPORT = 0x04000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     HALFSUPPORT = 0x08000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYCONCEPTS = 0x10000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYOBJC2    = 0x20000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYZVECTOR  = 0x40000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYCOROUTINES = 0x80000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYMODULES = 0x100000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYCXX2A = 0x200000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    CHAR8SUPPORT = 0x10000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYCONCEPTS = 0x20000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYOBJC2    = 0x40000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYZVECTOR  = 0x80000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYCOROUTINES = 0x100000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYMODULES = 0x200000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYCXX2A = 0x400000,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     KEYALLCXX = KEYCXX | KEYCXX11 | KEYCXX2A,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    KEYALL = (0x3fffff & ~KEYNOMS18 &<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    KEYALL = (0x7fffff & ~KEYNOMS18 &<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">               ~KEYNOOPENCL) // KEYNOMS18 and KEYNOOPENCL are used to exclude.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   };<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -151,6 +152,7 @@ static KeywordStatus getKeywordStatus(co<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.Bool && (Flags & BOOLSUPPORT)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.Half && (Flags & HALFSUPPORT)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.WChar && (Flags & WCHARSUPPORT)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (LangOpts.Char8 && (Flags & CHAR8SUPPORT)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.AltiVec && (Flags & KEYALTIVEC)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.OpenCL && (Flags & KEYOPENCL)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (!LangOpts.CPlusPlus && (Flags & KEYNOCXX)) return KS_Enabled;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_CGDebugInfo.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ZLy817Da-x4STf9aqJo412qutq_dVtNvTJTDN6SMGa8&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_CGDebugInfo.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ZLy817Da-x4STf9aqJo412qutq_dVtNvTJTDN6SMGa8&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -665,6 +665,7 @@ llvm::DIType *CGDebugInfo::CreateType(co<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::SChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Encoding = llvm::dwarf::DW_ATE_signed_char;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Encoding = llvm::dwarf::DW_ATE_UTF;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_CodeGenTypes.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=OsF-jtYC21lQFNgvkQz4Mtp8zxviWAfMSwftzmhvVk4&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_CodeGenTypes.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=OsF-jtYC21lQFNgvkQz4Mtp8zxviWAfMSwftzmhvVk4&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/CodeGen/CodeGenTypes.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/CodeGen/CodeGenTypes.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -437,6 +437,7 @@ llvm::Type *CodeGenTypes::ConvertType(Qu<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::ULongLong:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::WChar_S:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::WChar_U:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       ResultType = llvm::IntegerType::get(getLLVMContext(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_ItaniumCXXABI.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=w7v8KExQASD3UZXlqrj_pT-FocBs0XOblzHJE0C1nQ8&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_CodeGen_ItaniumCXXABI.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=w7v8KExQASD3UZXlqrj_pT-FocBs0XOblzHJE0C1nQ8&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2706,6 +2706,7 @@ static bool TypeInfoIsInStandardLibrary(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::LongDouble:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Float16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Float128:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case BuiltinType::Int128:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3567,7 +3568,8 @@ void ItaniumCXXABI::EmitFundamentalRTTID<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       getContext().UnsignedInt128Ty,   getContext().HalfTy,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       getContext().FloatTy,            getContext().DoubleTy,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       getContext().LongDoubleTy,       getContext().Float128Ty,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      getContext().Char16Ty,           getContext().Char32Ty<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      getContext().Char8Ty,            getContext().Char16Ty,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      getContext().Char32Ty<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   };<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   for (const QualType &FundamentalType : FundamentalTypes)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     EmitFundamentalRTTIDescriptor(FundamentalType, DLLExport);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_ToolChains_Clang.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=l3k9g0qkBeeGNJH0MzNw2aLvT4MjrQaWH0LPy60rACk&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_ToolChains_Clang.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=l3k9g0qkBeeGNJH0MzNw2aLvT4MjrQaWH0LPy60rACk&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2687,6 +2687,9 @@ static void RenderCharacterOptions(const<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     CmdArgs.push_back("-fno-signed-char");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (Args.hasFlag(options::OPT_fchar8__t, options::OPT_fno_char8__t, false))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    CmdArgs.push_back("-fchar8_t");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (const Arg *A = Args.getLastArg(options::OPT_fshort_wchar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                      options::OPT_fno_short_wchar)) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (A->getOption().matches(options::OPT_fshort_wchar)) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Format/FormatToken.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Format_FormatToken.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=HunWUFE1inKqgXgyZVZw51ADzS6j-VrgTcnDwcyCBjE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Format_FormatToken.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=HunWUFE1inKqgXgyZVZw51ADzS6j-VrgTcnDwcyCBjE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Format/FormatToken.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Format/FormatToken.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -57,6 +57,7 @@ bool FormatToken::isSimpleTypeSpecifier(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw___underlying_type:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::annot_typename:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_typeof:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_CompilerInvocation.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7znGHdt6Gx2p7G7J6VutLbCsv3KOG4dsrbo-JCCQnEg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_CompilerInvocation.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7znGHdt6Gx2p7G7J6VutLbCsv3KOG4dsrbo-JCCQnEg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -2362,6 +2362,7 @@ static void ParseLangArgs(LangOptions &O<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Opts.ImplicitModules = !Args.hasArg(OPT_fno_implicit_modules);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Opts.CharIsSigned = Opts.OpenCL || !Args.hasArg(OPT_fno_signed_char);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Opts.WChar = Opts.CPlusPlus && !Args.hasArg(OPT_fno_wchar);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  Opts.Char8 = Args.hasArg(OPT_fchar8__t);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (const Arg *A = Args.getLastArg(OPT_fwchar_type_EQ)) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Opts.WCharSize = llvm::StringSwitch<unsigned>(A->getValue())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                          .Case("char", 1)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_InitPreprocessor.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7_7ZBPRO2eOpiTYqmJZnpn225YJ9GnSXs6EY6Zqid7k&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_InitPreprocessor.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7_7ZBPRO2eOpiTYqmJZnpn225YJ9GnSXs6EY6Zqid7k&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -559,6 +559,10 @@ static void InitializeCPlusPlusFeatureTe<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Builder.defineMacro("__cpp_experimental_concepts", "1");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (LangOpts.CoroutinesTS)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Builder.defineMacro("__cpp_coroutines", "201703L");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  // Potential future breaking changes.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (LangOpts.Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    Builder.defineMacro("__cpp_char8_t", "201803");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">static void InitializePredefinedMacros(const TargetInfo &TI,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -939,6 +943,8 @@ static void InitializePredefinedMacros(c<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                        InlineWidthBits));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DEFINE_LOCK_FREE_MACRO(BOOL, Bool);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DEFINE_LOCK_FREE_MACRO(CHAR, Char);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (LangOpts.Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      DEFINE_LOCK_FREE_MACRO(CHAR8_T, Char); // Treat char8_t like char.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DEFINE_LOCK_FREE_MACRO(CHAR16_T, Char16);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DEFINE_LOCK_FREE_MACRO(CHAR32_T, Char32);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DEFINE_LOCK_FREE_MACRO(WCHAR_T, WChar);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Index/USRGeneration.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Index_USRGeneration.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=iaA8AE4rUs7fxePml91TsFyZuYPIQiiPkq9jg6p_OWA&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Index_USRGeneration.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=iaA8AE4rUs7fxePml91TsFyZuYPIQiiPkq9jg6p_OWA&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Index/USRGeneration.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Index/USRGeneration.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -650,6 +650,8 @@ void USRGenerator::VisitType(QualType T)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           c = 'b'; break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         case BuiltinType::UChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           c = 'c'; break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+          c = 'u'; break; // FIXME: Check this doesn't collide<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           c = 'q'; break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         case BuiltinType::Char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Lex/PPExpressions.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Lex_PPExpressions.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=y3T-FtrrSX9hUEjHNWN7vbMn7ohLi0CiIPIkWpN10NM&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Lex_PPExpressions.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=y3T-FtrrSX9hUEjHNWN7vbMn7ohLi0CiIPIkWpN10NM&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Lex/PPExpressions.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Lex/PPExpressions.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -363,7 +363,7 @@ static bool EvaluateValue(PPValue &Resul<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       NumBits = TI.getChar16Width();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     else if (Literal.isUTF32())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       NumBits = TI.getChar32Width();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    else<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    else // char or char8_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       NumBits = TI.getCharWidth();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     // Set the width.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Parse/ParseDecl.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseDecl.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=JETiLJ2JJZew97WRGygVfliAtpFP_vU4QiO_uxN9fgs&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseDecl.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=JETiLJ2JJZew97WRGygVfliAtpFP_vU4QiO_uxN9fgs&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Parse/ParseDecl.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Parse/ParseDecl.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3587,6 +3587,10 @@ void Parser::ParseDeclarationSpecifiers(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       isInvalid = DS.SetTypeSpecType(DeclSpec::TST_wchar, Loc, PrevSpec,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                      DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char8, Loc, PrevSpec,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+                                     DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char16, Loc, PrevSpec,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                      DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -4585,6 +4589,7 @@ bool Parser::isKnownToBeTypeSpecifier(co<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_void:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_int:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -4661,6 +4666,7 @@ bool Parser::isTypeSpecifierQualifier()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_void:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_int:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -4817,6 +4823,7 @@ bool Parser::isDeclarationSpecifier(bool<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_void:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Parse/ParseExpr.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseExpr.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=o9piOSg8qMz3jcWdNM9WswEP9GEvhTU5ua3VUXgIY50&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseExpr.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=o9piOSg8qMz3jcWdNM9WswEP9GEvhTU5ua3VUXgIY50&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Parse/ParseExpr.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Parse/ParseExpr.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1224,6 +1224,7 @@ ExprResult Parser::ParseCastExpression(b<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::annot_decltype:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Parse/ParseExprCXX.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseExprCXX.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=zKt34YjbbgQyQ60QkfX56mZ9aaxCFdCNPHiGH3Pvhvk&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseExprCXX.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=zKt34YjbbgQyQ60QkfX56mZ9aaxCFdCNPHiGH3Pvhvk&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Parse/ParseExprCXX.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Parse/ParseExprCXX.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1962,6 +1962,9 @@ void Parser::ParseCXXSimpleTypeSpecifier<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DS.SetTypeSpecType(DeclSpec::TST_wchar, Loc, PrevSpec, DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    DS.SetTypeSpecType(DeclSpec::TST_char8, Loc, PrevSpec, DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     DS.SetTypeSpecType(DeclSpec::TST_char16, Loc, PrevSpec, DiagID, Policy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Parse/ParseTentative.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseTentative.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Kjv0sVWEWMY5a-cD5HbDWDKgy8RgNaeeUqYVpKQNp3o&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Parse_ParseTentative.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Kjv0sVWEWMY5a-cD5HbDWDKgy8RgNaeeUqYVpKQNp3o&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Parse/ParseTentative.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Parse/ParseTentative.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1052,6 +1052,7 @@ Parser::isExpressionOrTypeSpecifierSimpl<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_class:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_typename:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw__Decimal32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1523,6 +1524,7 @@ Parser::isCXXDeclarationSpecifier(Parser<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1614,6 +1616,7 @@ bool Parser::isCXXDeclarationSpecifierAT<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     // simple-type-specifier<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_wchar_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char16_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_char32_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/DeclSpec.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_DeclSpec.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7JM56_ix2gNtPCip2NIpLaav4fNaxgM52IceZYELzK4&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_DeclSpec.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=7JM56_ix2gNtPCip2NIpLaav4fNaxgM52IceZYELzK4&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/DeclSpec.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/DeclSpec.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -329,6 +329,7 @@ bool Declarator::isDeclarationOfFunction<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_auto_type:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_bool:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case TST_char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case TST_class:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -499,6 +500,7 @@ const char *DeclSpec::getSpecifierName(D<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_void:        return "void";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_char:        return "char";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_wchar:       return Policy.MSWChar ? "__wchar_t" : "wchar_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case DeclSpec::TST_char8:       return "char8_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_char16:      return "char16_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_char32:      return "char32_t";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_int:         return "int";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1202,7 +1204,9 @@ void DeclSpec::Finish(Sema &S, const Pri<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       StorageClassSpec == SCS_auto)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     S.Diag(StorageClassSpecLoc, diag::warn_auto_storage_class)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       << FixItHint::CreateRemoval(StorageClassSpecLoc);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  if (TypeSpecType == TST_char16 || TypeSpecType == TST_char32)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (TypeSpecType == TST_char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    S.Diag(TSTLoc, diag::warn_cxx17_compat_unicode_type);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  else if (TypeSpecType == TST_char16 || TypeSpecType == TST_char32)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     S.Diag(TSTLoc, diag::warn_cxx98_compat_unicode_type)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       << (TypeSpecType == TST_char16 ? "char16_t" : "char32_t");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (Constexpr_specified)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaDecl.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaDecl.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=y6ZC3DCP6eCdpsRRIElnBYTc5KGKuhrPswm3WpSYNzI&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaDecl.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=y6ZC3DCP6eCdpsRRIElnBYTc5KGKuhrPswm3WpSYNzI&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -148,6 +148,9 @@ bool Sema::isSimpleTypeSpecifier(tok::To<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case tok::kw_decltype:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return getLangOpts().CPlusPlus;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case tok::kw_char8_t:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    return getLangOpts().Char8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   default:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaDeclCXX.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=CtLS4Lx-tZbXXK6Khnd0CIThVGp9DlccpL4nV1YjlTM&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaDeclCXX.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=CtLS4Lx-tZbXXK6Khnd0CIThVGp9DlccpL4nV1YjlTM&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -13187,6 +13187,7 @@ bool Sema::CheckLiteralOperatorDeclarati<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         Context.hasSameType(ParamType, Context.CharTy) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         Context.hasSameType(ParamType, Context.WideCharTy) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        Context.hasSameType(ParamType, Context.Char8Ty) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         Context.hasSameType(ParamType, Context.Char16Ty) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         Context.hasSameType(ParamType, Context.Char32Ty)) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -13247,10 +13248,12 @@ bool Sema::CheckLiteralOperatorDeclarati<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     QualType InnerType = PointeeType.getUnqualifiedType();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // Only const char *, const wchar_t*, const char16_t*, and const char32_t*<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // are allowed as the first parameter to a two-parameter function<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    // Only const char *, const wchar_t*, const char8_t*, const char16_t*, and<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    // const char32_t* are allowed as the first parameter to a two-parameter<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    // function<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (!(Context.hasSameType(InnerType, Context.CharTy) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           Context.hasSameType(InnerType, Context.WideCharTy) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+          Context.hasSameType(InnerType, Context.Char8Ty) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           Context.hasSameType(InnerType, Context.Char16Ty) ||<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           Context.hasSameType(InnerType, Context.Char32Ty))) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Diag((*Param)->getSourceRange().getBegin(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaExpr.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaExpr.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ElnAWz8X1dNDLTHspCPCEGHxPhlzr2tlWKv_DVCyyYE&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaExpr.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ElnAWz8X1dNDLTHspCPCEGHxPhlzr2tlWKv_DVCyyYE&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1535,6 +1535,8 @@ Sema::ActOnStringLiteral(ArrayRef<Token><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     CharTy = Context.getWideCharType();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Kind = StringLiteral::Wide;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   } else if (Literal.isUTF8()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (getLangOpts().Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      CharTy = Context.Char8Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Kind = StringLiteral::UTF8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   } else if (Literal.isUTF16()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     CharTy = Context.Char16Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3094,6 +3096,8 @@ ExprResult Sema::ActOnCharacterConstant(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   QualType Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (Literal.isWide())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Ty = Context.WideCharTy; // L'x' -> wchar_t in C and C++.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  else if (Literal.isUTF8() && getLangOpts().Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    Ty = Context.Char8Ty; // u8'x' -> char8_t when it exists.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   else if (Literal.isUTF16())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Ty = Context.Char16Ty; // u'x' -> char16_t in C11 and C++11.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   else if (Literal.isUTF32())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaInit.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaInit.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=nfOMGV34mBHPLOheqEMqEg-QzZZRJIs0gAhlU1DRCA8&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaInit.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=nfOMGV34mBHPLOheqEMqEg-QzZZRJIs0gAhlU1DRCA8&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaInit.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaInit.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -49,6 +49,8 @@ enum StringInitFailureKind {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   SIF_NarrowStringIntoWideChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   SIF_WideStringIntoChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   SIF_IncompatWideStringIntoWideChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  SIF_UTF8StringIntoPlainChar,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  SIF_PlainStringIntoUTF8Char,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   SIF_Other<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">};<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -77,12 +79,21 @@ static StringInitFailureKind IsStringIni<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Context.getCanonicalType(AT->getElementType()).getUnqualifiedType();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   switch (SL->getKind()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  case StringLiteral::Ascii:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case StringLiteral::UTF8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    // char8_t array can be initialized with a UTF-8 string.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (ElemTy->isChar8Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      return SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    LLVM_FALLTHROUGH;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case StringLiteral::Ascii:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     // char array can be initialized with a narrow string.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     // Only allow char x[] = "foo";  not char x[] = L"foo";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (ElemTy->isCharType())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      return SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      return (SL->getKind() == StringLiteral::UTF8 &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+              Context.getLangOpts().Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+                 ? SIF_UTF8StringIntoPlainChar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+                 : SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (ElemTy->isChar8Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      return SIF_PlainStringIntoUTF8Char;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (IsWideCharCompatible(ElemTy, Context))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_NarrowStringIntoWideChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     return SIF_Other;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -94,7 +105,7 @@ static StringInitFailureKind IsStringIni<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case StringLiteral::UTF16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (Context.typesAreCompatible(Context.Char16Ty, ElemTy))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    if (ElemTy->isCharType())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (ElemTy->isCharType() || ElemTy->isChar8Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_WideStringIntoChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (IsWideCharCompatible(ElemTy, Context))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_IncompatWideStringIntoWideChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -102,7 +113,7 @@ static StringInitFailureKind IsStringIni<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case StringLiteral::UTF32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (Context.typesAreCompatible(Context.Char32Ty, ElemTy))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    if (ElemTy->isCharType())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (ElemTy->isCharType() || ElemTy->isChar8Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_WideStringIntoChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (IsWideCharCompatible(ElemTy, Context))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_IncompatWideStringIntoWideChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -110,7 +121,7 @@ static StringInitFailureKind IsStringIni<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case StringLiteral::Wide:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (Context.typesAreCompatible(Context.getWideCharType(), ElemTy))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_None;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    if (ElemTy->isCharType())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (ElemTy->isCharType() || ElemTy->isChar8Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_WideStringIntoChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (IsWideCharCompatible(ElemTy, Context))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       return SIF_IncompatWideStringIntoWideChar;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3185,6 +3196,8 @@ bool InitializationSequence::isAmbiguous<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_NarrowStringIntoWideCharArray:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_WideStringIntoCharArray:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_IncompatWideStringIntoWideChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case FK_PlainStringIntoUTF8Char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case FK_UTF8StringIntoPlainChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_AddressOfOverloadFailed: // FIXME: Could do better<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_NonConstLValueReferenceBindingToTemporary:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_NonConstLValueReferenceBindingToBitfield:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -5362,6 +5375,12 @@ void InitializationSequence::InitializeF<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       case SIF_IncompatWideStringIntoWideChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         SetFailed(FK_IncompatWideStringIntoWideChar);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      case SIF_PlainStringIntoUTF8Char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        SetFailed(FK_PlainStringIntoUTF8Char);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      case SIF_UTF8StringIntoPlainChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        SetFailed(FK_UTF8StringIntoPlainChar);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       case SIF_Other:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -7591,6 +7610,17 @@ bool InitializationSequence::Diagnose(Se<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     S.Diag(Kind.getLocation(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">            diag::err_array_init_incompat_wide_string_into_wchar);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case FK_PlainStringIntoUTF8Char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    S.Diag(Kind.getLocation(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+           diag::err_array_init_plain_string_into_char8_t);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    S.Diag(Args.front()->getLocStart(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+           diag::note_array_init_plain_string_into_char8_t)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      << FixItHint::CreateInsertion(Args.front()->getLocStart(), "u8");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case FK_UTF8StringIntoPlainChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    S.Diag(Kind.getLocation(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+           diag::err_array_init_utf8_string_into_char);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_ArrayTypeMismatch:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case FK_NonConstantArrayInit:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     S.Diag(Kind.getLocation(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -8000,6 +8030,14 @@ void InitializationSequence::dump(raw_os<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       OS << "incompatible wide string into wide char array";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case FK_PlainStringIntoUTF8Char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      OS << "plain string literal into char8_t array";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case FK_UTF8StringIntoPlainChar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      OS << "u8 string literal into char array";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case FK_ArrayTypeMismatch:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       OS << "array type mismatch";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaOverload.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaOverload.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Xyb-pH6U7SxviRPH8q6LtfA1TSlDPK48o7OhPL3_mDU&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaOverload.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Xyb-pH6U7SxviRPH8q6LtfA1TSlDPK48o7OhPL3_mDU&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaOverload.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -7707,6 +7707,8 @@ class BuiltinOperatorOverloadBuilder {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.BoolTy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.CharTy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.WCharTy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    if (S.Context.getLangOpts().Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      ArithmeticTypes.push_back(S.Context.Char8Ty);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.Char16Ty);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.Char32Ty);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ArithmeticTypes.push_back(S.Context.SignedCharTy);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaTemplate.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=BwDZsshgTv-SOm9V8XtDq3ngpCd2-Tl7M5RqZFKqokg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaTemplate.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=BwDZsshgTv-SOm9V8XtDq3ngpCd2-Tl7M5RqZFKqokg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaTemplate.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaTemplate.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -6771,11 +6771,11 @@ Sema::BuildExpressionFromIntegralTemplat<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   Expr *E;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (T->isAnyCharacterType()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // This does not need to handle u8 character literals because those are<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    // of type char, and so can also be covered by an ASCII character literal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     CharacterLiteral::CharacterKind Kind;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (T->isWideCharType())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Kind = CharacterLiteral::Wide;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    else if (T->isChar8Type() && getLangOpts().Char8)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      Kind = CharacterLiteral::UTF8;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     else if (T->isChar16Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Kind = CharacterLiteral::UTF16;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     else if (T->isChar32Type())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaTemplateVariadic.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=5sAxYmhvbFZFsSG2w6UAxJb2UWCDNXnr6NhasUxo8eQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaTemplateVariadic.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=5sAxYmhvbFZFsSG2w6UAxJb2UWCDNXnr6NhasUxo8eQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -822,6 +822,7 @@ bool Sema::containsUnexpandedParameterPa<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_void:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_char:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_wchar:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case TST_char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_char32:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case TST_int:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Sema/SemaType.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaType.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=v4N-hM8981PVhUSFCHLRoAU2C7Yrp4TZE9wz-fkg44o&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Sema_SemaType.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=v4N-hM8981PVhUSFCHLRoAU2C7Yrp4TZE9wz-fkg44o&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Sema/SemaType.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Sema/SemaType.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -1277,6 +1277,11 @@ static QualType ConvertDeclSpecToType(Ty<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       Result = Context.getUnsignedWCharType();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case DeclSpec::TST_char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      assert(DS.getTypeSpecSign() == DeclSpec::TSS_unspecified &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+        "Unknown TSS value");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      Result = Context.Char8Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case DeclSpec::TST_char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       assert(DS.getTypeSpecSign() == DeclSpec::TSS_unspecified &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         "Unknown TSS value");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Serialization/ASTCommon.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Serialization_ASTCommon.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=1Ced23lnNUeyI8mznsAgC0O9r0GUrksuJa9hAAbUGbg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Serialization_ASTCommon.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=1Ced23lnNUeyI8mznsAgC0O9r0GUrksuJa9hAAbUGbg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Serialization/ASTCommon.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Serialization/ASTCommon.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -100,6 +100,9 @@ serialization::TypeIdxFromBuiltin(const<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::NullPtr:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ID = PREDEF_TYPE_NULLPTR_ID;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  case BuiltinType::Char8:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    ID = PREDEF_TYPE_CHAR8_ID;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   case BuiltinType::Char16:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     ID = PREDEF_TYPE_CHAR16_ID;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Serialization/ASTReader.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Serialization_ASTReader.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=jnN3vLu7Zv-1U_yxrPd2R42rUGgkRrtLoOZLWSERX6c&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Serialization_ASTReader.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=jnN3vLu7Zv-1U_yxrPd2R42rUGgkRrtLoOZLWSERX6c&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Serialization/ASTReader.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -6841,6 +6841,9 @@ QualType ASTReader::GetType(TypeID ID) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case PREDEF_TYPE_NULLPTR_ID:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       T = Context.NullPtrTy;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    case PREDEF_TYPE_CHAR8_ID:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      T = Context.Char8Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+      break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     case PREDEF_TYPE_CHAR16_ID:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       T = Context.Char16Ty;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       break;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added: cfe/trunk/test/CodeGenCXX/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_CodeGenCXX_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=MoKjiPjZzK0StEH2CQ55s-YPCjOQQHQpxf31MiKyT10&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_CodeGenCXX_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=MoKjiPjZzK0StEH2CQ55s-YPCjOQQHQpxf31MiKyT10&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/CodeGenCXX/char8_t.cpp (added)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/CodeGenCXX/char8_t.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -0,0 +1,8 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-linux %s -o - | FileCheck %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK: define void @_Z1fDu(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void f(char8_t c) {}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK: define void @_Z1gIiEvDTplplcvT__ELA4_KDuELDu114EE<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+template<typename T> void g(decltype(T() + u8"foo" + u8'r')) {}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+template void g<int>(const char8_t*);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added: cfe/trunk/test/Lexer/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Lexer_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Zb62FtQQjtoSNLTqSWC9WHbbLfN1YusE5sPBUEtRkGc&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Lexer_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=Zb62FtQQjtoSNLTqSWC9WHbbLfN1YusE5sPBUEtRkGc&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/Lexer/char8_t.cpp (added)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/Lexer/char8_t.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -0,0 +1,17 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -std=c++2a -verify %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -std=c++2a -verify %s -fchar8_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#if defined(__cpp_char8_t) && __is_identifier(char8_t)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#error char8_t is an identifier under -fchar8_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#if !defined(__cpp_char8_t) && !__is_identifier(char8_t)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#error char8_t is a keyword under -fno-char8_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char8_t c8t;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#ifndef __cpp_char8_t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// expected-error@-2 {{unknown type}}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#else<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// expected-no-diagnostics<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/test/Lexer/cxx-features.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Lexer_cxx-2Dfeatures.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=UsA_oc3SRYnQgfwr049yl_Duag5PIWCtfeybnw72qcs&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Lexer_cxx-2Dfeatures.cpp-3Frev-3D331244-26r1-3D331243-26r2-3D331244-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=UsA_oc3SRYnQgfwr049yl_Duag5PIWCtfeybnw72qcs&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/Lexer/cxx-features.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/Lexer/cxx-features.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -6,6 +6,7 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// RUN: %clang_cc1 -std=c++1z -fcxx-exceptions -fsized-deallocation -fconcepts-ts -DCONCEPTS_TS=1 -verify %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// RUN: %clang_cc1 -fno-rtti -fno-threadsafe-statics -verify %s -DNO_EXCEPTIONS -DNO_RTTI -DNO_THREADSAFE_STATICS -fsized-deallocation<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// RUN: %clang_cc1 -fcoroutines-ts -DNO_EXCEPTIONS -DCOROUTINES -verify -fsized-deallocation %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -fchar8_t -DNO_EXCEPTIONS -DCHAR8_T -verify -fsized-deallocation %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// expected-no-diagnostics<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -242,3 +243,9 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">#if defined(COROUTINES) ? check(coroutines, 201703L, 201703L, 201703L, 201703L) : check(coroutines, 0, 0, 0, 0)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">#error "wrong value for __cpp_coroutines"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">#endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// --- not-yet-standard features --<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#if defined(CHAR8_T) ? check(char8_t, 201803, 201803, 201803, 201803) : check(char8_t, 0, 0, 0, 0)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#error "wrong value for __cpp_char8_t"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+#endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added: cfe/trunk/test/SemaCXX/char8_t.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_SemaCXX_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ZQcYylCZw3ovwuOxxeGvdRpfNDzYwKXm1uUIaBv8pYM&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_SemaCXX_char8-5Ft.cpp-3Frev-3D331244-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=ZQcYylCZw3ovwuOxxeGvdRpfNDzYwKXm1uUIaBv8pYM&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/SemaCXX/char8_t.cpp (added)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/SemaCXX/char8_t.cpp Mon Apr 30 22:02:45 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -0,0 +1,44 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -fchar8_t -std=c++2a -verify %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char8_t a = u8'a';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char8_t b[] = u8"foo";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char8_t c = 'a';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char8_t d[] = "foo"; // expected-error {{initializing 'char8_t' array with plain string literal}} expected-note {{add 'u8' prefix}}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char e = u8'a';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char f[] = u8"foo"; // expected-error {{initialization of char array with UTF-8 string literal is not permitted by '-fchar8_t'}}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char g = 'a';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+char h[] = "foo";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void disambig() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  char8_t (a) = u8'x';<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void operator""_a(char);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void operator""_a(const char*, decltype(sizeof(0)));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void test_udl1() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  int &x = u8'a'_a; // expected-error {{no matching literal operator}}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  float &y = u8"a"_a; // expected-error {{no matching literal operator}}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+int &operator""_a(char8_t);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+float &operator""_a(const char8_t*, decltype(sizeof(0)));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void test_udl2() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  int &x = u8'a'_a;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  float &y = u8"a"_a;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+template<typename E, typename T> void check(T &&t) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  using Check = E;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  using Check = T;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+void check_deduction() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  check<char8_t>(u8'a');<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  check<const char8_t(&)[5]>(u8"a\u1000");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+static_assert(sizeof(char8_t) == 1);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+static_assert(char8_t(-1) > 0);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+static_assert(u8"\u0080"[0] > 0);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">cfe-commits mailing list<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=-qncxcIFlvfjr6Ao4_qXDgclh3aD5UCirU2Jz4TmNlQ&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=1yVxc98c1AfALi19DC1J845Xm76O2Y-TVidL7ln97Ng&s=-qncxcIFlvfjr6Ao4_qXDgclh3aD5UCirU2Jz4TmNlQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>