<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Failure to expand a predefined macro"
   href="http://llvm.org/bugs/show_bug.cgi?id=15849">15849</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Failure to expand a predefined macro
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>eremeev@viva64.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>I am using Clang, built from trunk on a Windows system using Visual C++ 10
compiler. When running clang with the –E flag (preprocess only) on the
following code:
int _tmain(int argc, _TCHAR* argv[])
{
    char* A = __DATE__;
    char* B = ""__TIME__;
    char* C = ""__FILE__;
    char* D = "" __FILE__;
    return 0;
}

It generates the following output from the preprocessor:
int wmain(int argc, _TCHAR* argv[])
{
 char* A = "Apr 26 2013";
 char* B = ""__TIME__;
 char* C = ""__FILE__;
 char* D = "" "c:/Viva64SelfTester/src/fceu/testDate/testDate.cpp";
 return 0;
}

As evident, the predefine macros (__TIME__ and __FILE__) are not expanded by
the preprocessor at all. It happens when you place the string constant just
before the macro itself. Notice, that if you add a space between the macro and
the string, the macro is expanded properly.

We've encountered this bug on the latest release branch (3.2), as well as on
the current trunk. It was not present in the version we were utilizing before
(trunk 156904).</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>