<html>
    <head>
      <base href="https://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 --- - Template compilation failure with -fdelayed-template-parsing when compiling an AST loaded from a PCH/AST file"
   href="https://llvm.org/bugs/show_bug.cgi?id=23388">23388</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Template compilation failure with -fdelayed-template-parsing when compiling an AST loaded from a PCH/AST file
          </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>Linux
          </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>thonermann@coverity.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>The following test demonstrates a compilation failure that occurs only when the
code is first emitted to a .ast file, and then compiled.  Direct compilation
succeeds.  Tested with Clang 3.7.0 trunk (r234313), but this reproduces back to
Clang 3.4.

$ cat t.cpp
int f(int p) {
    return p;
}
template<int N>
struct S {
    static int smf() {
        return f(static_cast<int>(N));
    }
};
auto a = S<0>::smf();

$ clang -c -std=c++11 -fdelayed-template-parsing t.cpp; echo $?
0

$ clang -emit-ast -std=c++11 -fdelayed-template-parsing t.cpp; echo $?
0

$ clang -c t.ast; echo $?
/nfs/thonermann/tmp/t.cpp:7:18: error: use of undeclared identifier
'static_cast'
        return f(static_cast<int>(N));
                 ^
/nfs/thonermann/tmp/t.cpp:7:33: error: expected '(' for function-style cast or
type construction
        return f(static_cast<int>(N));
                             ~~~^
2 errors generated.
1

It seems some state is not being preserved in .ast files.</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>