<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/79725>79725</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Internal Compiler Error On Invalid Code and MS Compatibility
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
geometrian
</td>
</tr>
</table>
<pre>
Test-case, manually prettified from output of C-Reduce:
```cpp
namespace {
template<class T>
struct Foo
{
~Foo();
};
template<class T> using Bar = Foo<T>;
int main()
{
goto EXIT;
Bar<int> bar;
EXIT:
return 0;
}
//Note missing close-brace for `namespace` here
```
Compile with:
```txt
clang -fms-compatibility crash.cpp
```
Produces:
```txt
crash.cpp:13:2: warning: jump from this goto statement to its label is a Microsoft extension [-Wmicrosoft-goto]
goto EXIT;
^
crash.cpp:15:11: note: jump bypasses variable with a non-trivial destructor
Bar<int> bar;
^
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /usr/lib/llvm-16/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name crash.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/home/[username] -resource-dir /usr/lib/llvm-16/lib/clang/16 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/x86_64-linux-gnu/c++/13 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/backward -internal-isystem /usr/lib/llvm-16/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir=/home/[username] -ferror-limit 19 -fms-compatibility -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/crash-812a0f.o -x c++ crash.cpp
1. <eof> parser at end of file
2. crash.cpp:1:1: parsing namespace '(anonymous)'
3. crash.cpp:12:1: parsing function body '(anonymous namespace)::main'
#0 0x00007f1272dbb75a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:567:13
#1 0x00007f1272db9994 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:105:18
#2 0x00007f1272dbbf2b SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:412:1
#3 0x00007f127189b910 (/lib/x86_64-linux-gnu/libc.so.6+0x42910)
#4 0x00007f127b441fa2 distance build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:0:0
#5 0x00007f127b441fa2 addAutomaticObjDtors build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:1905:19
#6 0x00007f127b441fa2 addAutomaticObjHandling build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:1830:5
#7 0x00007f127b43dc43 VisitGotoStmt build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:3464:18
#8 0x00007f127b43b709 VisitCompoundStmt build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:2823:9
#9 0x00007f127b433b03 buildCFG build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:1569:7
#10 0x00007f127b433b03 clang::CFG::buildCFG(clang::Decl const*, clang::Stmt*, clang::ASTContext*, clang::CFG::BuildOptions const&) build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/CFG.cpp:5234:18
#11 0x00007f127b409aec clang::AnalysisDeclContext::getCFG() build-llvm/tools/clang/stage2-bins/clang/lib/Analysis/AnalysisDeclContext.cpp:218:5
#12 0x00007f127a76d9b9 CheckFallThrough build-llvm/tools/clang/stage2-bins/clang/lib/Sema/AnalysisBasedWarnings.cpp:405:8
#13 0x00007f127a76d9b9 CheckFallThroughForBody build-llvm/tools/clang/stage2-bins/clang/lib/Sema/AnalysisBasedWarnings.cpp:690:11
#14 0x00007f127a76d9b9 clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::sema::FunctionScopeInfo*, clang::Decl const*, clang::QualType) build-llvm/tools/clang/stage2-bins/clang/lib/Sema/AnalysisBasedWarnings.cpp:2400:5
#15 0x00007f127a7e35d0 clang::Sema::PopFunctionScopeInfo(clang::sema::AnalysisBasedWarnings::Policy const*, clang::Decl const*, clang::QualType) build-llvm/tools/clang/stage2-bins/clang/lib/Sema/Sema.cpp:0:22
#16 0x00007f127a985563 ~unique_ptr /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/unique_ptr.h:403:6
#17 0x00007f127a985563 clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) build-llvm/tools/clang/stage2-bins/clang/lib/Sema/SemaDecl.cpp:15818:3
#18 0x00007f127a1185c1 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseStmt.cpp:2460:18
#19 0x00007f127a1328f4 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:0:0
#20 0x00007f127a081152 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseDecl.cpp:2136:18
#21 0x00007f127a131a0c clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:0:10
#22 0x00007f127a13141d clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:1226:12
#23 0x00007f127a1306bc clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:0:14
#24 0x00007f127a09acbd ~AttributePool build-llvm/tools/clang/stage2-bins/clang/include/clang/Sema/ParsedAttr.h:821:22
#25 0x00007f127a09acbd ~ParsedAttributes build-llvm/tools/clang/stage2-bins/clang/include/clang/Sema/ParsedAttr.h:1023:7
#26 0x00007f127a09acbd clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseDeclCXX.cpp:262:5
#27 0x00007f127a09a65e Exit build-llvm/tools/clang/stage2-bins/clang/include/clang/Parse/Parser.h:1141:15
#28 0x00007f127a09a65e clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseDeclCXX.cpp:241:18
#29 0x00007f127a07f406 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseDecl.cpp:0:0
#30 0x00007f127a12ffda clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:0:3
#31 0x00007f127a12ea7e clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:743:10
#32 0x00007f127a12e4e2 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/Parser.cpp:591:26
#33 0x00007f127a06cdd5 clang::ParseAST(clang::Sema&, bool, bool) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseAST.cpp:161:5
#34 0x00007f127bcac2a9 clang::FrontendAction::Execute() build-llvm/tools/clang/stage2-bins/clang/lib/Frontend/FrontendAction.cpp:1062:10
#35 0x00007f127bc27184 getPtr build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Error.h:275:12
#36 0x00007f127bc27184 operator bool build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Error.h:235:16
#37 0x00007f127bc27184 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) build-llvm/tools/clang/stage2-bins/clang/lib/Frontend/CompilerInstance.cpp:1046:23
#38 0x00007f127bd25a64 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) build-llvm/tools/clang/stage2-bins/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:264:25
#39 0x000055789d037d86 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) build-llvm/tools/clang/stage2-bins/clang/tools/driver/cc1_main.cpp:251:15
#40 0x000055789d034e00 ExecuteCC1Tool build-llvm/tools/clang/stage2-bins/clang/tools/driver/driver.cpp:360:12
#41 0x000055789d034b03 clang_main(int, char**) build-llvm/tools/clang/stage2-bins/clang/tools/driver/driver.cpp:435:12
#42 0x00007f12718810d0 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#43 0x00007f1271881189 call_init ./csu/../csu/libc-start.c:128:20
#44 0x00007f1271881189 __libc_start_main ./csu/../csu/libc-start.c:347:5
#45 0x000055789d0313a5 _start (/usr/lib/llvm-16/bin/clang+0x103a5)
clang: error: unable to execute command: Segmentation fault
```
`clang --version` reports itself as:
```txt
Ubuntu clang version 16.0.6 (15)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW81y27iyfhp6g4KKBH8kLbyQJSvHVZkT39hnZnYuEGxKSEiAA4COvJlnvwWQlEhKVpxEnlu3TsqWKZJofP11o7vxE6o13wiAay--8eLVFa3NVqrrDcgSjOJUXKUye7l-BG0woxo8skQlFTUtihdUKTCG5xwylCtZIlmbqjZI5miJP0NWM_DCheevPH_hJX7zw6qquSNoCbqiDJA3vWlfcp8GyqqgBrxwyQqqNXr0wtvmkTaqZgatpWwbdC1R--9v-4jMPDL3wk7odHW4fr0DVGsuNuiGKuSFK9dFuHQ9DxtzYVBJuWh7OQ1jI41Et3_ePY4ad89vqPLCJRfGdpzaLydfaySMbiowtRLIHyjYa-yRtUfW_5YGUMm1U4oVUgNOlSU7lwp5ib9n30t8tAUFIzM1X5eyrHgB6Bs322NTmp1p7rCCig3Ceakxk2VFDU95wc0LYorq7WRv8pH0eyWtj-hzkvcCwkUQeuGCeOECfaNKcLGxl1_qsmqcz2y5bojXhhooQRhkJOJGo4KmUCCuEUW_caaklrlBsDMgNJcCefEN_qPsHmArw4tX37No98SLb09gje1HYBEKaT2tRZq-VFRr0OiZKk7TllpEkZACG8WfOS1QBo2fS9X29Kq7oPG_PZj7j7eLh1uk67TkBlGU1hukoJLKkbI1pnK0O1_ZcLOt0wmTpUfWRfHc_cGVkl-AGY-sudY1aI-sERUZ4oIVdQbIbKExMUop-2qsf9n4UCmolGSgNWRIy1o1t21LqrVknBrIkKoF0kzxykwayA-Gsq8oq8tq7xD-BN0ruVG0RFRtamtTCxt5ZF1rZWHytAMbJB5Zp3Zgrlt_ZCxAltSqALSbJU9JhCuGCy7qHd6IGmEoucEy_YJwqaCgO0yLAuGMa2sZnCsAhFkBVGGqDU4hlwqwVRVEdnjP9f4MygZC5W4zqjL8TIsasBtnCNuIgXNeNDcO46LpWTJquBS4lBkUqOIM4YozXMAzFIg0X7jGFQeEy1zREnAluTCgvHDlMOclNVsMSgmJcJ5XmElh7WG8cCUFwrmQWMlaZFxssH0X4ZJJ0fkZpgWn1i1xXotvXGTYWNW0F64IwoaqDRjMqtrSiJMIYVMLcDc2IEBZwKWlwdIN1GDNaNFwyHeQWVy2D43bgYtwBmm92YCygtxIXm2yFOGcyWdQdAMujvCioSXjVk-PrLeyBOuy8U2tQVkmvXiFsILGyeyLr7tG8925hkfWQYKwY1DQAnP9og2Uh7aNG00m-2Ybxjyybp1o70FWTti9OPpox4jt0iM37mcdhP9Ypyda_Z_g6HdqZVP29RtV2bn-v2e4g_yzUiSjxdtevYDCJ9497thmHCXYMYDXzXa-9Y93gXCeQaWA2RCMS8qUdLfSevNDQy5vhnTBbXYJ5qdyP87Zbodhx6CyIm1sGXxhspAKZ5xuhNSGM3uPZpnSfIPw6unpw3L59K_F77dPqz8Wn9fkabm-e1o8_OaFqwBhaTUzZWUdw8ZSPAsI9fOJRHiHWp8bVx_BpM2R4RJkblNpRZUGhahBNqDLHNkI3bxM2pcHSb39de1sGOuVsGTqkRkVUryUsta2MiTTRlJ4ShIZi8prwSwzyJbbY3GHjlxhu_DCRVOCtl0gj4Q-8ne-7_vTPCBTkqXpNKbIJXP3vn7RzcW94sK4VPvY5OvZ4SVFvz1JbUN46ZHE5mxbc5A5SmteZLgtDYyUhe6NSG3oBghOudC9-sENpIe6siWHR9b_EXxnb_CNoIWecMG8cBEn06au22sRjLSYz-fRKS0-16IR9S8qsgKUbsrxCwDtELaG8l0hNzsgJGOec5KiAZb3YitqvWYPJexDCWbzdB74yBHRCjwRlQqesomWk8QjN_4uIvPA309jrMyoLzONoiCnBGVcGyoY_Ihm3d0GyULQ4kVz-2C5_tCS67vffdfxqa5pli1qI0tqOPuUflkZqfSFYQTzxsg9FpI3QHHWtkP3wmhmoeUlPoCZDsGEGYtC9DvX3HyQRj6Y0lwYQhgl0cjrZyMM6dSfNxjsFNEWlu-Ag8yInfL17DIfwQhTP2w6Xa4_XNoQcWJj7bSbVYeBf6r3RpILSsv1h-aiQ-SRWe_xCliBXNHtkYUNrr1nlr3ju4uHx6UUBnYnnu07u7GdfWrTais--cFY-AY6YhL2ncLyEQz58OcU2AB-K8cq3unhHmzANOxcCuaJnjofCmaH0WRBD-I3nSbZPJ2j5RbY1zUtisetkvVm-_OgHqCkPUA3VEP2RzPr6XJK5MJNj8fwLZDWUt3Y0uA9kSVzv1m22EOLTkHrmVhboQNjD-Q2j-60rmF_azAm3tT-XhacvYz8_9By3ZZOD0xWcCdyeTxYzg29_6lp8fhSwS_54hvIJZHvD10xHpILYZz5g6CwV_FeVie0_EkiXyPinyLJ_ulVAIQcGBnkXTqfxXESor9rwf-q4akyR7P7S85MubGID31Ntm6s2gyUHBBOTyE8abMFM5_Emguut53t7AA-zglns0EqZXEp0m1n--Q2c4ExPGg2SPE0CGYxC_qg7t1kqXe998huufWt6h1Jcj79q1nLSer-Wgb34y7xR4lrPlQ1JLM8epOqK8i54PZqqOd9M4uz6lJFjVTt9OmczOyx3Yawg7mXuF9t9ZEaaFoujFEfeTtOL0WZOq7K7XRnUPRQfxYEMTmrlyXhg5J19SpFDxWwY1UP5O1rnmMqnOo8rQ3oYwkPbhXwY7uaet7v1lJ9pmIDd4JflsbeICNBmAw9jwQjzwuoz77L5ifV87-7dqnnmN3z5LztjbMWWjAGWttnbqn7fVwv6PkeGbMVBdl32bI-xKUYkPbqoL04Z0cl_HtzFhCSNCtKe9rCEW1-kp53sttd41M9-v4Zqt7FgaIDE8Py1Z9Tlmbo7z3KeymLn0HQKyLaO22WPbDgqocZCYYFDolPAhqT956YAt9Nqg_TWpKcwnTOXe6EAPXvw5JkbwXxoaRF8Tu4vUu3u35KyLB9U8suUVR74e0gD9bCnU3ImlXIs6H-x93xhhZUMMhW4BaxQT0qyr6CumgZ4uajf_7Z5YOEDCYAZDpmPokB3e74Ty2kHDvAaIg46wdR0GxP70HMToE4Z_6-5X8gf3_PZOPn72SDRv9eSh4Wg_40j_zkrUnmsgxcIsqeqIHeobIZ1ojDvQcakDzP6H9PwjnMocJReUeATs-PpUdZfYRnKJqJUp-BTxX9q4Z7M4qj--r6M-ReeHvCAfYT0N9kVhdwV1ZSGTdHu2ho6xiYRuGwagvJmIQIzs8Y1lxp8_-fiXjusv1hsWC4QUP9hGVZfMTE4uFxqG-Tt5PD7P8CqwADwIuHx654TIJBRhpt_zDKCB2s962VjWwiW7jKurl3uwNWW05_bTm3E927bHrZb8W59Nn3tOGOESPTYBahDZh78zObcIcE2t447MfdKiWbBEqm8bDaHu0VtSBkBS4ROMu9G5bQYek53PQUlv6mQXOeT92JZkNvYMDWpgNfHNn7F4dNz8RjJHsjR4nT7KDTcOspIzFNBjq16A8Cn_fJb3ZO9V9MB50uj25orl9Fsa_9IvvZG2pd3RHH09k888NpNksQY8FTe7r0UFQvlKIvLsot2ZaqwxqtjXpLNLxHluhZ8uzn1eveyhR_tuXwusPUaRKPKsjIH2kSge-jjpBl8PiTs6wjIM1Ft0nZrOodBmIUjGHst-c6Srt5xJYqx8_FKBogi8JRiIjIcKN-FviZj56eCp6yJ22oMk-MFoVDiSa2H11369X6RWdQ2c5EZYp2A3_cyEWDaTSoRaJw3GkwmyPXhAtuxv00l1Y4dsInzOkwswY_RNwoOiV0oMkpJU4KD6PpIPdE8ch-QUhj1EhtTzV898ynO9QQ-CGN94cauhCA3Ikle1ELd_DWSASNjyImy5KKzD58gE0Jwrihi3JaF-bk0WUv8Z1ghPEzKG2jTeK3B2w14kZDkSN67mTzf9JamLrxT9TKQEEy8SeJ1TY4aPDojl9acCcOsbavbBXQDLnzo-5UkdR81zxy8a4oIFtxNTg6a2kbYrvKrsNsHs7pFVwHUz-JiB_74dX2OvHTBFiUzv0wy2kQMpYkNJ5FNEzmNEvoFb8mPon8gMz8OAqicALZLIxYNkuTnEHAQi_yoaS8mFizTaTaXLkTxdfT-ZTEV-58tnb_BYEQAd-Qe-gR4sWrK3XtTJ3WG-1FfsG10QcphpsCrrs1UdSFX-SSJPok0J14pgXP0FJm4E4g__bg3tqfU7uqVXH98-ehnQL_GwAA__8xRkhV">