<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 21, 2014 at 2:38 PM, Smith, Kevin B <span dir="ltr"><<a href="mailto:kevin.b.smith@intel.com" target="_blank">kevin.b.smith@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I was playing around with CLANG for windows (clang-cl.exe) and noticed that this doesn't support<br>
_int64, but that it does support __int64.  For Microsoft compiler both __int64 and _int64 are recognized<br>
as a keyword and basic type.  This simple program demonstrates that<br>
<br>
$ cat xxy.cpp<br>
typedef unsigned __int64 bb1;<br>
<br>
typedef unsigned _int64 bb2;<br>
<br>
when preprocessed with the VS 2012 C++ compiler, using cl -E xxy.cpp, this yields:<br>
$ cl -E xxy.cpp<br>
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86<br>
Copyright (C) Microsoft Corporation.  All rights reserved.<br>
<br>
xxy.cpp<br>
#line 1 "xxy.cpp"<br>
typedef unsigned __int64 bb1;<br>
<br>
typedef unsigned _int64 bb2;<br>
<br>
showing that the Microsoft compiler hasn't simply created a #define _int64 __int64 instead of treating _int64 as a keyword.<br>
So, I expect clang-cl should do the same thing.  The following simple patch for CLANG is probably the correct way<br>
to remedy this, and it seemed to work for me.  FWIW, I found this in the SPEC 2000 INT program 186.crafty, which uses the<br>
_int64 type directly.<br>
<br>
$ svn diff<br>
Index: include/clang/Basic/TokenKinds.def<br>
===================================================================<br>
--- include/clang/Basic/TokenKinds.def  (revision 216129)<br>
+++ include/clang/Basic/TokenKinds.def  (working copy)<br>
@@ -558,6 +558,7 @@<br>
 ALIAS("_uuidof"          , __uuidof   , KEYMS | KEYBORLAND)<br>
 ALIAS("_inline"          , inline     , KEYMS)<br>
 ALIAS("_declspec"        , __declspec , KEYMS)<br>
+ALIAS("_int64"           , __int64    , KEYMS)<br>
<br>
 // Borland Extensions which should be disabled in strict conformance mode.<br>
 ALIAS("_pascal"      , __pascal   , KEYBORLAND)</blockquote><div><br></div><div>This patch looks like the right approach to me. Are there other keywords that need this treatment? This change will also need a testcase before we can accept it.</div>
</div></div></div>