<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzNWVtzozgW_jXOi8ouEFc_-MFx4u6uzW5Sbc--uoQQtmYAsUKkk_71eySBueTSmemkZ1yUEUKcc75z05GUiPRxtT8xREXKEK_RPZOPqOZFlbOZt545VzNnPQud9rKPeAsXUqxWC1pVXafHszJlGfp8vb66_nruhS5esnGv-VcMmBDF0MzbqMeKlaRgaD_zrtG94Kkhf8hyQRQvj4dK8FLNcDzDSzSLLi0FhPboYeZdnnlVkhwLgkRRIaJEwSlqqhRYdMNn-BKuwSfR1VAiwzcT4imf54TxNqYDBLbjz1RfGp6KJtFanY6fSAE4WJny7Hndm_8tl7VCR1YyqRVI0N3mM2pqYAZ2LApSpi_ZjuYEBs0pddE8E6B0UFXXmIPtay7KmXcVwOsHRK2-0FxJDv6AHuLwEPpzUsHDPCXyGy9dB94SeWRqTqsGuEuG0ZwVXM0rekJzgeC2UMBl4i5jscADSy16xYGNAnesRSMpQ5l-JkfCy78XEC9p3qTMYOoAWQ97DRKiktQnxMtMyAJ8QZQQYa8CgZfgpNuTKBjc6hPPFSclNK8EbQpWqhra97UOVmjk-X0xr6T4nVGIja2lAN08gf8dk5zk_LvhC8_r3f4rIymTO1VYQ3hrbwmeCCw73nDptyDCetB1_tI-6rYetZWi2CnJSAH-_PLwf4u0ydlWG3KGQ-P3a7SuayaNQgC_JrZThP6xqPl31gWfdwUXupPs_j9NoYfUOnyRa6mEcMPXD0oSxB4qyWpt5xoBwVpTmmEX3s9whDICnNOF1fHdzfV6d43qJgEHhbBJmiOSrBJSISXQSanKmMfkN3hXL7SGF0JqrSKIKtT6gXFRa9wEuIEUFOTeIBAEzEFBGpa2Lqy79ZekrgXlEK0pkg1IScEDVSuWAY_SpqjOzuEskPndSXGUpEDgka39O3P9I3zebcWE7MZEpnN3RSSYFgYiSGJIZCaE27wImc1BzoPT_bzAjygjSGvZOkv9WNvGnYScafSyt8qN-0GSfDuIuvW8UCvYzA3Lvx45hvY5cJpKewS0fiv5g-7gx5Lk9QIUAtyDMIB_1-0xuVNMbJmgCQBL4zN4Qg6BgWM91UCU_TKpQw9rqXuh8UToMPCfNcTXphzJXnfx-c5Sd-LaxLSMtKZ7ab2JtHFAAzTV6a_0At-Jxvr0WwmjzPPTJIvcKHDQ4QCZSUE4HaROqqC4bVNLyyP07Z0uarEAL750HnwMH-kMeaYajKkmLI4pUK3UCbw_PfzB8_xgajWNzc4wP2YTZ0BlxCacCh-SEB1rg_hNcsP4EcFoTDBIotRDJBFvUgOmMHpELp6SC7MEHcr8ACVWekhFAQXCgoo8fRN1-HhEfTmmHhJvGb6BkJfAuDMhnQdGyc2PXbIMUvTXJ9J6NINPJlM7l_7KYsHRBUMPdpT1_JBFceK8AvYTUzBdMwkedcVorukC2qbUTgZzYi60NB-Pp8USBW4whjPKh3EYswCiYgDnhnx_vM2ymqk7BZA2k5JJz0ITMBtbqQwt2mkAxNnZ6uBP6MaUTtf2C5iqf0TZTi4UqiL181pta4FBDzCC_ydsFyet1ig2KbLXrjfRrhczb6jdbVNSbSoN_4zwEtamY5TDYRaagRm-I1LrPxadZtNVyo4f9FOShuQPIUUpTrA_cpgdK4htfQHBSKl08dcDgEUxt845BGiVeCNo67ibF5WkcW9QIkT-9P6OYQQY7G3frtYHYAbqgWRnqqJBQAUT_TCfBc_r545JvUC606ve8tgz0BU9qOfvwhR6jjPBFA4xhWzphR59HtOaqtvyukxvMyj_yjo3aKCSgGRPjlrgid3PH-5_60b8i8My_kNwtwBdJ5rk9GiKj_jpn8T3s-XhD4V2nUkgxiOhUzcN3GQo9J1ZkQzae1HdsHuW2zgamuG2Iv9r2JMErwd-kqKpvrLMbN-EHxBrRrTu3s1TIVQYI7DLCVjKqPcqWLNV9C6IPxZpsNQLlPiMFDsTpHHIsidITZ5-EkhD-3ysnYB_55eBWRD0psLjAslnfpLRSYEElV-pIO2taV_iXT8w2ijWdr1rNHXsBk3Lpk8IYb-q0RjwFEMwxvAKgF8r-jJydVnXS-6NJXeZG4wk39jNRmlzf1eJTZX_MtR3jYgBuqlcZ9N42jS4T9bYHxfgyxTWnEOELZae4P25rIhfU8RP7ko8j2xvgnD7okwtTBx64ywwqiJcH3teBjMSdQ96yTfaFVpLSR5NutrQE5F9eajTF9RRoz7oeI8dmA6rAnR6XCr5vd6K2HYSdrD8eFxJ4HCMCxbcDkOddjauVdcA3a4gef5f4CrkFyhangX5Ph75BIttdHWwO9iZ0UCiCZCAEBdp6B8uSRyPJZluEtAg1DswetF-ANeW6kBBh4dWth9uE6Tw-XB1j5dT-qFDx_SNT_rOp5svl5sDXuBF8CZGQGfIaLxHqlWKswBZFi291_WasioXj7PzhlbKkkbrM9ERY7U7d33DvKXesw8u3Vlwpbd0l74XuQ76crtHHJxMNrTbXtL7w2a3mpn69AO2oycHJBfpykuX3pJckEadhFx1wC8ama_G2_ZHrk5NsqCi6BUw8S9e1w3TioIlvuNenFZ4GQfMpUmWJk5EgiDDmcswIxge0ijJLnKSsLxegXZmGFtg5nhBL_Fxl0uzcxLHoMKLnxeMr7CD4XICx_Fc7C6yLCYJBQN4wTLyWQi-BuUOz8_HFBdyZUjqswt4mfNa9WcYF6Q2GwrM4AAJFVc5W22M9cxhBkvRN30QZ08S9ZniyWya6MOR7nBueDD3DSCdDdod514YFCsD4f8-RGCx>53601</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang crashed when using PCH header to compile source file with c++ template
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            openmp,
            clang:frontend
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          shiltian
      </td>
    </tr>
</table>

<pre>
    The code is very simple:
```
// test.cpp
#ifndef HEADER
#define HEADER

template <typename T> void test_floating_point() {
  T x;
#pragma omp atomic update
  ++x;
}

void foo() {
  test_floating_point<float>();
  test_floating_point<double>();
}

#endif
```

First generate a PCH using command:
```
clang -cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-apple-darwin10 -target-cpu core2 -emit-pch -o pch.tmp test.cpp
```
Then compile the source file again:
```
clang -cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch pch.tmp atomic.cpp
```
The crash information is:
```
clang: /home/shiltian/Documents/vscode/llvm-project/clang/lib/Serialization/ASTReaderStmt.cpp:3928: clang::Stmt *clang::ASTReader::ReadStmtFromStream(clang::ASTReader::ModuleFile &): Assertion `StmtStack.size() == PrevNumStmts + 1 && "Extra expressions on stack!"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang -cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch pch.tmp atomic.cpp
1.      <eof> parser at end of file
 #0 0x0000000003547cea llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/shiltian/Documents/vscode/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x0000000003547e9b PrintStackTraceSignalHandler(void*) /home/shiltian/Documents/vscode/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x000000000354654a llvm::sys::RunSignalHandlers() /home/shiltian/Documents/vscode/llvm-project/llvm/lib/Support/Signals.cpp:97:5
 #3 0x00000000035485c5 SignalHandler(int) /home/shiltian/Documents/vscode/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f34dbf71750 __restore_rt (/usr/lib64/libc.so.6+0x42750)
 #5 0x00007f34dbfbe88c __pthread_kill_implementation (/usr/lib64/libc.so.6+0x8f88c)
 #6 0x00007f34dbf716a6 gsignal (/usr/lib64/libc.so.6+0x426a6)
 #7 0x00007f34dbf5b7d3 abort (/usr/lib64/libc.so.6+0x2c7d3)
 #8 0x00007f34dbf5b6fb _nl_load_domain.cold (/usr/lib64/libc.so.6+0x2c6fb)
 #9 0x00007f34dbf6a396 (/usr/lib64/libc.so.6+0x3b396)
#10 0x000000000481a95d clang::ASTReader::ReadStmtFromStream(clang::serialization::ModuleFile&) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Serialization/ASTReaderStmt.cpp:0:3
#11 0x00000000046e78b0 clang::ASTReader::GetExternalDeclStmt(unsigned long) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Serialization/ASTReader.cpp:7515:3
#12 0x000000000868e536 clang::LazyOffsetPtr<clang::Stmt, unsigned long, &(clang::ExternalASTSource::GetExternalDeclStmt(unsigned long))>::get(clang::ExternalASTSource*) const /home/shiltian/Documents/vscode/llvm-project/clang/include/clang/AST/ExternalASTSource.h:378:40
#13 0x00000000086838e3 clang::FunctionDecl::getBody(clang::FunctionDecl const*&) const /home/shiltian/Documents/vscode/llvm-project/clang/lib/AST/Decl.cpp:3045:5
#14 0x0000000007d2b246 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4815:13
#15 0x0000000007d2e4e5 clang::Sema::PerformPendingInstantiations(bool) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6300:13
#16 0x0000000006e9363c clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Sema/Sema.cpp:1070:3
#17 0x0000000006e93a4d clang::Sema::ActOnEndOfTranslationUnit() /home/shiltian/Documents/vscode/llvm-project/clang/lib/Sema/Sema.cpp:1105:5
#18 0x0000000006d1d51b clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Parse/Parser.cpp:696:5
#19 0x0000000006d1cec3 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Parse/Parser.cpp:592:8
#20 0x0000000006d186ef clang::ParseAST(clang::Sema&, bool, bool) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Parse/ParseAST.cpp:157:15
#21 0x00000000044e4bfc clang::ASTFrontendAction::ExecuteAction() /home/shiltian/Documents/vscode/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1076:1
#22 0x00000000044e45fc clang::FrontendAction::Execute() /home/shiltian/Documents/vscode/llvm-project/clang/lib/Frontend/FrontendAction.cpp:971:7
#23 0x000000000441e15c clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/shiltian/Documents/vscode/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1036:23
#24 0x000000000469d717 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/shiltian/Documents/vscode/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:263:8
#25 0x00000000014233fd cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/shiltian/Documents/vscode/llvm-project/clang/tools/driver/cc1_main.cpp:248:13
#26 0x0000000001416a0e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /home/shiltian/Documents/vscode/llvm-project/clang/tools/driver/driver.cpp:317:5
#27 0x0000000001415aa1 main /home/shiltian/Documents/vscode/llvm-project/clang/tools/driver/driver.cpp:388:5
#28 0x00007f34dbf5c560 __libc_start_call_main (/usr/lib64/libc.so.6+0x2d560)
#29 0x00007f34dbf5c60c __libc_start_main@GLIBC_2.2.5 (/usr/lib64/libc.so.6+0x2d60c)
#30 0x00000000014152f5 _start (/home/shiltian/Documents/deploy/llvm/debug/bin/clang-14+0x14152f5)
[1]    943710 IOT instruction (core dumped)  clang -cc1 -fopenmp -fopenmp-version=51 -x c++ -triple x86_64-apple-darwin10
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWVlz2zgS_jXyC0oq3seDHmTZTlLrXbtizb6qQBCUMEMSXAB07Pz6bQCkePiIZ2JnRsUSSRDs7q8vNJoZzx_XuyNFhOcUMYnuqXhEklVNSRf-ZuFcLJzNInK6w956V3AgRaVakabpB31W1Dkt0OfLzcXl19MoDLGaTkfNv6LABCuKFv5WPTa0xhVFu4V_ie45yw35fVFyrFh92Dec1WrhJQsvRYv43FJAaIceFv75iVcj8KHCiFcNwopXjKC2yYFFP33hncMxeiW-GEtk-BacP-XznDD-1gyAwHb-iepL03PeZlqr8_kzKQAHrXNWPK9783_FhFToQGsqtAIxut1-Rq0EZmDHqsJ1_pLtSIlh0pIQFy0LDkoHVfUXS7C9ZLxe-BchPH5AxOoLLZVg4A_oIYn2UbDEDdwscyy-sdp14CkWB6qWpGmBu6AeWtKKqWVDjmjJEZxWCrjM3GUqFnhgrUVvGLBR4I6St4JQVOh7fMCs_nsBsZqUbU4Nph6Q9bDXICEisDwiVhdcVOALvIYIexUIPAQnvTryisJJHlmpGK7h8oKTtqK1knB9L3WwwkVZ3lfLRvDfKYHYuLIUYJhl8H9HBcMl-274wv3mbveV4pyKO1VZQ_gbPwVPBJY9bzj0UxBhMxo6vWlv9bWedSV4dacExRX488vT_83ztqRX2pALLzJ-v0EbKakwCgH8mtidwuSPlWTfaR98_gUc6FbQ-_-0lZ4idfgi11KJ4ORdPiiBEX1oBJXazhIBQakpLTwXni-8GBUYOOcrq-Pb68vN3SWSbQYOCmGTtQckaMOFQoqjo1KNMY_Jb_BMrrSGV1xorSKIKtT5gXFRa9wMuIEUBOTeIhAEzEFAGpp3LqyH9ZtYSk4YRGuORAtSEvBA1YllwKO8rZqTczgrZH63gh8ErhB4ZGf_3lz_CJ93OzEhu1Fe6NzdYAGmhYkIkhjihQnhLi9CZnOQ8-D0Pz8MYkIx0lq2ziIfpb24FZAzjV52VrnJMEngb3suO8-LtILN2pD-9cgxtE-B0zbaI-Dqt5o96AF2qHEpV6AQ4B5GIfy77oDJnWOiaYZmACyNz-AJJQSGl-ilBqLsl0kd-Z6WehDamwkdhcGzhvja1hPZZR-f7yx1L65NTGmsNT1I68-kTUISorlOf6UXBE481WfQSRgXfpBnRezGoYP2e8hMCsJpL3RSBcVdtVJYHlFgz2Ql-Qq8-Nx5CDx4SWfIE9VwSjWjSUKAaqOO4P35_g9WlntTq2lsdoX5MZukACoTNtFc-AhH6CAN4jfJDfMnBOMpwTCLcx_hjL9JDR6B2RNyyZxcVGRoX5d7KLHyfc4rKBBWhJf5m6jDyxPq6ZR6hP00egMhP4N5J0I6D0ySW5C4OA1z9NcXUjlZwWeLqV1Lf2Wx4OiCYQA7yXpBROMkc14B-4kqWK6pAI-6oKTUdAFtW2sngzWx5Fqaj8fTYYlDN5zCmeTDJEpoCFExgnONvz_eFIWk6lYBpO2sZNKr0AzM1lYqY4v2GgBx7mx18Cd0Y0qnS_sGLNU_omwXFwJVkfp5rXa1wGgEGMH_E7aro1ZrnJgUOWjXn2nXT6g_1u5VWxNtKg3_hPAc9qZTlONpFpqBGb0jUus_Fp1m01fKThAOS5KGFIwhxbmXecHEYe5ohe3VFxAM10oXfwMA2BQz65xjgFaJ15x0jrt9UUka9xZlnJdPz-8YRoDBnnbdbn0EZqQeSHamKhoFVDjTDw1o-Lx-bqnQG6RbveutDwMDXdGDev4uTJHvODNM0RhTRFM_8snzmDZE3dSXdX5TQPlXy9KggUoCkj0-aIFndj-9uPutn_EvBtv4D8HdAXSdeJbT4zk-HOR_Et_Ploc_FNp1ZoGYTITO3Tx0s7HQt2ZHMrre8eaa3tPSxtHYDDcN_l9LnyR4PfGT4G3zlRamfRN9QKwZ0fpzv05FUGFMwKYzsIQS_1WwplX0Log_FmmY6g1KckLqOTOkSUSLJ0hNnn4SSGP7fKydgH_vl6HZEAym8qYFUkCDrCCzAgkqv1pB2tuQocS7fKCkVbQbetdo6tmNLi2bISFEw65GY_DmGMIphlcA_FrR09jVZd0guT-V3KVuOJF8a5uNwub-vhKbK_9lqO8aESN0c7lOpvG1abwhWXvBtABPc9hzjhF2WAaC96eyInlNET_ZlXge2c4E4dWLMnUwvcifZoFJFeEGnu8XsCIRd6-3fJOu0EYI_GjS1ZYcsRjKQ52-oI6ajMHAe3RgeqwK0Ol5uWD3uhVx1UvYwwqSaSXhRVNcsOF2KOq1s3Wtukbo7ipclv8Frlx8gaLlWZDv45FPsNiLvg52R50ZDSSeAQkxdpGG_uGSJMlUknmTgISR7sDoTfseXFuoPQEd7jvZftgmyOH18e7eS-f0I4dM6RufDJxP11_Ot3tv5a3CNzECOmNG0x6pVqlXhMiy6Oi9rtecNiV_XJwaWjnNWq3PTEeM1e7SDQzzjvrAPjx3F-GFbummgR-7Dvpys0MMnEy0pG8v6f6w6VZTU59-QDt69oHkLF_7eeqn-EwxVdL11jA0_XfYHn_T347sxy_9Gexo9vm6n99_Txp_S_rG1PEkQ_8F8qwV5Xra_T_AvDZbAYlBjzM3ZVK2VOs79CPHPTuuQw9jx0mzPMtS4gd-EGAS5WFeOJQmieedlTijpVyDkheeZ_VjvlLoToHXp-TitBZ4YIkztvYcDw4ndBzf9dxVUSQ4I2AFP0zjgEbgcFDzsPL0reJMrI2k-gMGPCyZVMOHjDMsTVeBGimAPm7VkYt170pnBtXaQPo_bSJK2Q">