<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">Yes, sorry about that, I did notice, just re-testing it, should have a fix for Windows bots in a few minutes.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 16, 2019 at 3:26 AM <<a href="mailto:douglas.yung@sony.com">douglas.yung@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Kristina,<br>
<br>
Your change does not seem to be working on Windows. Can you take a look?<br>
<br>
<a href="http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/6860" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/6860</a><br>
<br>
FAIL: Clang :: Preprocessor/file_name_macro.c (7959 of 14753)<br>
******************** TEST 'Clang :: Preprocessor/file_name_macro.c' FAILED ********************<br>
Script:<br>
--<br>
: 'RUN: at line 1';   c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe -cc1 -internal-isystem c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include -nostdsysteminc -E C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c -IC:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor/Inputs | c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\filecheck.exe -strict-whitespace C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c<br>
: 'RUN: at line 2';   c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe -cc1 -internal-isystem c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include -nostdsysteminc -fms-compatibility -DMS -E C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c -IC:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor/Inputs | c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\filecheck.exe -check-prefix=CHECK-MS -strict-whitespace C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c<br>
: 'RUN: at line 3';   c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe -cc1 -internal-isystem c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include -nostdsysteminc -E C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c -IC:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor/Inputs -DBADINC -verify<br>
--<br>
Exit Code: 1<br>
<br>
Command Output (stdout):<br>
--<br>
$ ":" "RUN: at line 1"<br>
$ "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe" "-cc1" "-internal-isystem" "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include" "-nostdsysteminc" "-E" "C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c" "-IC:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor/Inputs"<br>
$ "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\filecheck.exe" "-strict-whitespace" "C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c"<br>
# command stderr:<br>
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\Preprocessor\file_name_macro.c:22:11: error: CHECK: expected string not found in input<br>
<br>
// CHECK: {{^}}2: "file_name_macro.c"<br>
<br>
          ^<br>
<br>
<stdin>:12:1: note: scanning from here<br>
<br>
2: "C:\\b\\slave\\clang-x64-windows-msvc\\build\\llvm.src\\tools\\clang\\test\\Preprocessor\\file_name_macro.c"<br>
<br>
^<br>
<br>
<stdin>:12:87: note: possible intended match here<br>
<br>
2: "C:\\b\\slave\\clang-x64-windows-msvc\\build\\llvm.src\\tools\\clang\\test\\Preprocessor\\file_name_macro.c"<br>
<br>
                                                                                      ^<br>
<br>
<br>
error: command failed with exit status: 1<br>
<br>
Douglas Yung<br>
<br>
-----Original Message-----<br>
From: cfe-commits <<a href="mailto:cfe-commits-bounces@lists.llvm.org" target="_blank">cfe-commits-bounces@lists.llvm.org</a>> On Behalf Of Kristina Brooks via cfe-commits<br>
Sent: Wednesday, May 15, 2019 17:53<br>
To: <a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
Subject: r360833 - [Clang][PP] Add the __FILE_NAME__ builtin macro.<br>
<br>
Author: kristina<br>
Date: Wed May 15 17:52:41 2019<br>
New Revision: 360833<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=360833&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=360833&view=rev</a><br>
Log:<br>
[Clang][PP] Add the __FILE_NAME__ builtin macro.<br>
<br>
This patch adds the `__FILE_NAME__` macro that expands to the last component of the path, similar to `__FILE__` except with a guarantee that only the last path component (without the<br>
separator) will be rendered.<br>
<br>
I intend to follow through with discussion of this with WG14 as a potential inclusion in the C standard or failing that, try to discuss this with GCC developers since this extension is desired by GCC and Clang users/developers alike.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D61756" rel="noreferrer" target="_blank">https://reviews.llvm.org/D61756</a><br>
<br>
<br>
Added:<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_include.h<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/h<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h<br>
    cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h<br>
    cfe/trunk/test/Preprocessor/file_name_macro.c<br>
Modified:<br>
    cfe/trunk/include/clang/Lex/Preprocessor.h<br>
    cfe/trunk/lib/Lex/PPMacroExpansion.cpp<br>
<br>
Modified: cfe/trunk/include/clang/Lex/Preprocessor.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=360833&r1=360832&r2=360833&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=360833&r1=360832&r2=360833&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Lex/Preprocessor.h (original)<br>
+++ cfe/trunk/include/clang/Lex/Preprocessor.h Wed May 15 17:52:41 2019<br>
@@ -147,6 +147,7 @@ class Preprocessor {<br>
   IdentifierInfo *Ident__DATE__, *Ident__TIME__;   // __DATE__, __TIME__<br>
   IdentifierInfo *Ident__INCLUDE_LEVEL__;          // __INCLUDE_LEVEL__<br>
   IdentifierInfo *Ident__BASE_FILE__;              // __BASE_FILE__<br>
+  IdentifierInfo *Ident__FILE_NAME__;              // __FILE_NAME__<br>
   IdentifierInfo *Ident__TIMESTAMP__;              // __TIMESTAMP__<br>
   IdentifierInfo *Ident__COUNTER__;                // __COUNTER__<br>
   IdentifierInfo *Ident_Pragma, *Ident__pragma;    // _Pragma, __pragma<br>
<br>
Modified: cfe/trunk/lib/Lex/PPMacroExpansion.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=360833&r1=360832&r2=360833&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=360833&r1=360832&r2=360833&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Lex/PPMacroExpansion.cpp (original)<br>
+++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp Wed May 15 17:52:41 2019<br>
@@ -363,6 +363,7 @@ void Preprocessor::RegisterBuiltinMacros<br>
   }<br>
<br>
   // Clang Extensions.<br>
+  Ident__FILE_NAME__      = RegisterBuiltinMacro(*this, "__FILE_NAME__");<br>
   Ident__has_feature      = RegisterBuiltinMacro(*this, "__has_feature");<br>
   Ident__has_extension    = RegisterBuiltinMacro(*this, "__has_extension");<br>
   Ident__has_builtin      = RegisterBuiltinMacro(*this, "__has_builtin");<br>
@@ -1474,7 +1475,8 @@ void Preprocessor::ExpandBuiltinMacro(To<br>
     // __LINE__ expands to a simple numeric value.<br>
     OS << (PLoc.isValid()? PLoc.getLine() : 1);<br>
     Tok.setKind(tok::numeric_constant);<br>
-  } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__) {<br>
+  } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ ||<br>
+             II == Ident__FILE_NAME__) {<br>
     // C99 6.10.8: "__FILE__: The presumed name of the current source file (a<br>
     // character string literal)". This can be affected by #line.<br>
     PresumedLoc PLoc = SourceMgr.getPresumedLoc(Tok.getLocation());<br>
@@ -1495,7 +1497,21 @@ void Preprocessor::ExpandBuiltinMacro(To<br>
     // Escape this filename.  Turn '\' -> '\\' '"' -> '\"'<br>
     SmallString<128> FN;<br>
     if (PLoc.isValid()) {<br>
-      FN += PLoc.getFilename();<br>
+      // __FILE_NAME__ is a Clang-specific extension that expands to the<br>
+      // the last part of __FILE__.<br>
+      if (II == Ident__FILE_NAME__) {<br>
+        // Try to get the last path component.<br>
+        StringRef PLFileName = PLoc.getFilename(); <br>
+        size_t LastSep = PLFileName.find_last_of('/');        <br>
+        // Skip the separator and get the last part, otherwise fall back on<br>
+        // returning the original full filename.<br>
+        if (LastSep != StringRef::npos)<br>
+          FN += PLFileName.substr(LastSep+1);<br>
+        else<br>
+          FN += PLFileName;<br>
+      } else {<br>
+        FN += PLoc.getFilename();<br>
+      }<br>
       Lexer::Stringify(FN);<br>
       OS << '"' << FN << '"';<br>
     }<br>
<br>
Added: cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_include.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_include.h?rev=360833&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_include.h?rev=360833&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_include.h (added)<br>
+++ cfe/trunk/test/Preprocessor/Inputs/include-subdir/file_name_macro_in<br>
+++ clude.h Wed May 15 17:52:41 2019<br>
@@ -0,0 +1,6 @@<br>
+3: __FILE_NAME__<br>
+4: "file_name_macro_include.h"<br>
+#ifdef MS<br>
+// Should be the same even when included with backslash.<br>
+5: __FILE_NAME__<br>
+#endif<br>
<br>
Added: cfe/trunk/test/Preprocessor/Inputs/include-subdir/h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/h?rev=360833&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/h?rev=360833&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/Inputs/include-subdir/h (added)<br>
+++ cfe/trunk/test/Preprocessor/Inputs/include-subdir/h Wed May 15 <br>
+++ 17:52:41 2019<br>
@@ -0,0 +1 @@<br>
+6: __FILE_NAME__<br>
<br>
Added: cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h?rev=360833&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h?rev=360833&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h (added)<br>
+++ cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr1.h Wed <br>
+++ May 15 17:52:41 2019<br>
@@ -0,0 +1 @@<br>
+7: __FILE_NAME__<br>
<br>
Added: cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h?rev=360833&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h?rev=360833&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h (added)<br>
+++ cfe/trunk/test/Preprocessor/Inputs/include-subdir/subdir1/hdr2.h Wed <br>
+++ May 15 17:52:41 2019<br>
@@ -0,0 +1 @@<br>
+8: __FILE_NAME__<br>
<br>
Added: cfe/trunk/test/Preprocessor/file_name_macro.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/file_name_macro.c?rev=360833&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/file_name_macro.c?rev=360833&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/file_name_macro.c (added)<br>
+++ cfe/trunk/test/Preprocessor/file_name_macro.c Wed May 15 17:52:41 <br>
+++ 2019<br>
@@ -0,0 +1,44 @@<br>
+// RUN: %clang_cc1 -E %s -I%S/Inputs | FileCheck -strict-whitespace %s <br>
+// RUN: %clang_cc1 -fms-compatibility -DMS -E %s -I%S/Inputs | <br>
+FileCheck -check-prefix=CHECK-MS -strict-whitespace %s // RUN: <br>
+%clang_cc1 -E %s -I%S/Inputs -DBADINC -verify<br>
+<br>
+#ifdef BADINC<br>
+<br>
+// Paranoia.<br>
+<br>
+__FILE_NAME__<br>
+#include <include-subdir/> // expected-error {{file not found}} <br>
+__FILE_NAME__<br>
+<br>
+#else<br>
+<br>
+// Reference.<br>
+1: "file_name_macro.c"<br>
+<br>
+// Ensure it expands correctly for this file.<br>
+2: __FILE_NAME__<br>
+<br>
+// CHECK: {{^}}1: "file_name_macro.c"<br>
+// CHECK: {{^}}2: "file_name_macro.c"<br>
+<br>
+// Test if inclusion works right.<br>
+#ifdef MS<br>
+#include <include-subdir\file_name_macro_include.h><br>
+// MS compatibility allows for mixed separators in paths.<br>
+#include <include-subdir/subdir1\hdr1.h> #include <br>
+<include-subdir\subdir1/hdr2.h> #else #include <br>
+<include-subdir/file_name_macro_include.h><br>
+#endif<br>
+<br>
+#include <include-subdir/h><br>
+<br>
+// CHECK: {{^}}3: "file_name_macro_include.h"<br>
+// CHECK: {{^}}4: "file_name_macro_include.h"<br>
+// CHECK-NOT: {{^}}5: "file_name_macro_include.h"<br>
+// CHECK-MS: {{^}}5: "file_name_macro_include.h"<br>
+// CHECK: {{^}}6: "h"<br>
+// CHECK-MS: {{^}}7: "hdr1.h"<br>
+// CHECK-MS: {{^}}8: "hdr2.h"<br>
+<br>
+#endif<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>