<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54572>54572</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crashes at -O1 and above with -mllvm -opaque-pointers: Assertion `Val && "isa<> used on a null pointer"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhendongsu
</td>
</tr>
</table>
<pre>
```
[512] % clangtk -v
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 7a94fa58c4fbc495f19e4c812fa85b54e63e6b36)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
[513] %
[513] % clangtk -O1 small.c; ./a.out
[514] %
[514] % clangtk -O1 -mllvm -opaque-pointers small.c
clang-15: /local/suz-local/software/clangbuild/llvm-project/llvm/include/llvm/Support/Casting.h:104: static bool llvm::isa_impl_cl<To, const From*>::doit(const From*) [with To = llvm::Instruction; From = llvm::GlobalVariable]: Assertion `Val && "isa<> used on a null pointer"' failed.
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: /local/suz-local/software/local/clang-trunk/bin/clang-15 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model static -mframe-pointer=none -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=/local/suz-local/software/emitesting/bugs/20220326-clangtk-m64-O3-mllvm-opaque-pointers-build-170747/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0 -I /usr/local/include/csmith -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/15.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O1 -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20220326-clangtk-m64-O3-mllvm-opaque-pointers-build-170747/delta -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -mllvm -opaque-pointers -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-a30fe1.o -x c small.c
1. <eof> parser at end of file
2. Optimizer
#0 0x000055c1b4e2be5f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x000055c1b4e298cc SignalHandler(int) Signals.cpp:0:0
#2 0x00007f379c9a0980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#3 0x00007f379b651e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#4 0x00007f379b6537f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
#5 0x00007f379b6433fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
#6 0x00007f379b643472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#7 0x000055c1b259ce1c bool llvm::isa<llvm::Constant, llvm::User*>(llvm::User* const&) (.isra.727.part.728) GlobalOpt.cpp:0:0
#8 0x000055c1b46a1258 CleanupPointerRootUsers(llvm::GlobalVariable*, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>) GlobalOpt.cpp:0:0
#9 0x000055c1b46a6259 processGlobal(llvm::GlobalValue&, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>) GlobalOpt.cpp:0:0
#10 0x000055c1b46a89ee optimizeGlobalsInModule(llvm::Module&, llvm::DataLayout const&, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::BlockFrequencyInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>) GlobalOpt.cpp:0:0
#11 0x000055c1b46aa685 llvm::GlobalOptPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x336a685)
#12 0x000055c1b606bb01 llvm::detail::PassModel<llvm::Module, llvm::GlobalOptPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4d2bb01)
#13 0x000055c1b4586064 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3246064)
#14 0x000055c1b516c570 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile> >&) (.constprop.840) BackendUtil.cpp:0:0
#15 0x000055c1b516f542 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x3e2f542)
#16 0x000055c1b5e8a0eb clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b4a0eb)
#17 0x000055c1b6dd6569 clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x5a96569)
#18 0x000055c1b5e88c80 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4b48c80)
#19 0x000055c1b581a791 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x44da791)
#20 0x000055c1b57b4cea clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x4474cea)
#21 0x000055c1b58e8963 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x45a8963)
#22 0x000055c1b274ea81 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x140ea81)
#23 0x000055c1b274a909 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#24 0x000055c1b2692069 main (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x1352069)
#25 0x00007f379b634c87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#26 0x000055c1b274a47a _start (/local/suz-local/software/local/clang-trunk/bin/clang-15+0x140a47a)
clang-15: error: unable to execute command: Aborted
clang-15: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 7a94fa58c4fbc495f19e4c812fa85b54e63e6b36)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clang-15: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-15: note: diagnostic msg: /tmp/small-bd99e1.c
clang-15: note: diagnostic msg: /tmp/small-bd99e1.sh
clang-15: note: diagnostic msg:
********************
[515] %
[515] % cat small.c
struct A {};
struct {
int *b;
} static c;
int d;
int main() {
if (d) {
struct A e, *f = (struct A *)&c;
*f = e;
}
return 0;
}
```
Compiler Explorer: https://godbolt.org/z/3YWP7a4Yc
@nikic
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWt1T3DgS_2uGF5Wn_D32Aw_DwCRUkYMKJFt7L1OyLA_e2JZPkmHIX7_dkmewhwmQLNSl7rayYORW968_1N2SnIn84XgSu_0_93TizifRSeT5k-iUTPyIsIo2a_2NOHf2rfmb3HGpStEQL5q6UxcIk1utWzUJ5hN_Cf_Wpb7tsikTNfxRVXfbX04rxV-c6SkQkBlNw4JGCQuLjIVpVHgpD1ni-QVNoiwKeRzwOAviiZ9a2TdUrrkGIWSTxKs4dLrmWyPuG6cqm27jrJuup7uVnOakFjmvkLoVqtzYV-eN0rSqeH5aSnyFuASjFfxW3Xdn-yzaovv-HR6ysrETl6JrcsJok5c51Zx8WCxIaZlRDabomXVKIssyQyMwBj_LOIkHAP1l8g8Z9roPWcbvwHIKrn17trN3YPk-SHs3XfMK4pXnbwVxsQNXd5UucSIwmk6Ck0no1nH4HFXg92Tw8AzZZke32RLutHhOqFn4wXbhHxrbJYNLj6gaLDFlwAMY-Us6FZ0ezAkP8AkP8XFqTAzEES39T8edVpSNhuyy4_-YdRwvembJKlHoeyo5PBrqrCurfC_tPCajsmFVl_PHgeuubYVEigVVumzW01sQ5rkhigSv65KRTIiKGHrIc8G8VHRV1m21YpBlFjdi4i8IExAiZCkx8QHNmaXMRQmck_FLPyVglXvIlORGkElwOmCNaUp2zMbZiZmyR_GhEhmtvlJZ0qziYFjEOVeKS5xEIJt_pRXYCrJnDL98AAsgARHpFMQBkFDSdFVFeoMDycSfkYKWkByn1upXF2fz6zOiuqyGdE1J1q2J5GgmogX5uYyPNleq4woeCIQt6T1A9C0nTFJ1SzLKvmlJGUdDtiBICsYVolWik3YYZ1KlBCsphrPsGqKYLFvdQ77WwITkXd0iMjPkwqv0Soq1pDWBCtLVvNHqdZG0HbLxBy5pvvVFYTvmRcRhDMJYA4qK_7AyEYeDER2R_UUcp5a8ohsHfgJ_9JciTg4eAk86heQcWFacSgci0cl4ISR30DgclHdqWjZOAV5yGlrz7TIhhmfPzTGVbxu1Tl2A5ruVBWHUiAZEFDXVtw6XshHwR9E6EJ5ofiiwpxAeTtEIR2JChcXgIC1wMhGMgSkAXFVSxQF50TX3ZZM7GvGDYU99sIYp1Q5rO7SIE4cw1DXcDKx5w6UBZle-hmqtHQWWtgYoNzxHXChDOeCJBhCAgTjE35pLZAQDIGedZyCdCehG6Bp4i7otbXIGa6KiLzsYncLNeke_dmsMT9_1fTfwY6dPUw5kSOcysHD385Rj8ozjzdxZOIPJYHhNCbjWxiwC-eU4s1XFjMHvvtdyzgdlp5_2mM2YqjGhWKJXCt2uRMdo1NDKKdWD0rx-U-AvCTqo0bOkr6m5_nI6ffrjAPlTgXyDD-yp4Edr7_N5fvbPi7AFsjCR_1uFd2GXZ1ViYfBSGADtmdNvCwBaOPWnnlmcFdDlJV03AnAw9cN67xQ0z2E6rPTT1Qq6rdXH-dez1ekf889Lf7VYnq_m15-AM3AVaCgNKR50xfTn0MAtuDeFPLYhbNw5eJj9ofJxUWDxa6mEEkmoJphMRUEwk1pKHykvWw06fYc0acZAUOASd-PCf1HEvCzkfsajglxJgG2KzQ1WrOtyDf78CNWpwlKa3Iky72u8faWmrMWS5Jr_d7y9Pd5pwhjZZwaSXmTk94xmRTBLWUrdNHHJagVpCFI1X0HFBka7RXMg_uFFq82-aaoELpwTd-MBHne3-0IxwVBMFkceT2ZE0lJxYgLMtlxrYMac7t9dcH-9-9Of-hhAymixXYgQ9zlvMSohp2_swJ1BA8jgt2GNTeY88sYKh3tIglnhEZoJo-nrkOjcWsPMMkKSPSHRWEgYBAUFq1LTZq2wV1pl9PW623m7BysyHYuM90WGM_8VvmPotdh4LXBhyshrs2GU-VHKuHeomYVV8vj3Ais9xchbDKi-KIxI09j6yZNh2_2anjNFzNNSSTqd-bMpLDsNDwm-sJ0rLLTDkZyMlkRMPT9KyALaoaZrr2yy-CyERpFqBGKvI8bVN4QOXYrpp2FNFCNN7anCRZlJKh_Om0LYjnnAedlPtZoZ5V9UI91TIwa7k76jtVMPgq86bqT8BHJIQI2CHrF-Lfb3s8qrOJ-KumwopKUb6HT_sa0xibp7tk5SaKFFn8ntXHXefBJ5h3ExELYd2jP4KdX0gj7AhnYQ0f9lq72nr0-gc_i2lBzqccN-d2d7e86mcRI92RfD7CtIsnYImtLXeH0OdelBleoTbWA3IUdq9FMQ4Da5vc3m0WbsIEYtdjkb1fSHasZunGWuNwCbcw3Vxz6jpp_sWedTyCMVx8YZvbqCVoHLO55bM3D1C8YhuwOP397kYe6jRUcmD0aRFSVg9XBoITTzj4H-T5sr8EO0xshc4dBckRezaGZuAmgjmodadIrgAYVqzYFOalGewX4BD6nqrHr4yKsWlcDxz13Td95mf3NVthwaHEzWdhNp05Q9Apn3KWNBoIOzb6B5hNy1avXYJpLer9p7CVuglcJDhno0KecF7Sq9goXDNX9hYu8t65GX5N5Aa3XZ6bbTy9JGxmuE7s0aSLTNlClF0EG00yTErpz09viiy-pwqoz2PFREoU8GBkVv9Eys4LG9Tx93bWfN2rjDqD8g-Qj7BS6vOZXsFh2IJ1nDkjkgXUCG-sCbF6hsmXuB6AKeDpE82vJaw_5s_RmK0Wh4u67mewx_h8h68yXLffT3aMnGo4DgCXV5dsAO2Pt39XZt2o2o6Tzs6cOXptyLlPn1DczRfKPfJ1lnISIdqTLa08R5HkdxOlTlCjf6gGsM9JrXtA8W3P88_n5ryBFNEdEIcrJn_YTBHv3pCumj0K7QDWed5tvATN7FtohjBHS0d4kSj85Sbwh0KdHZu_UyRPo-GMMcIQwx-qOeP5plIeN0bEw8LePSXPg2UIIO2vPHSr1LHIczhDnSwxvbmidpHIxytEX8qM5df8g_Rv9E3f6C6W3xRxThjfCP-lR_FnKaQKwwb4X3FKOmZi4lffhs9gfslspt5p73m4nxGAwMztDeVg0vdBHlSI1gTw2auinZ2n7h3ZgkMVDmGs8Yv3K8CDmv2-qgTiaCclnecXmwPvujDsqPU9-FHIZ2e2uFgwhZjxTeO9oKQpbMyGqFR0lQmajUqx7Iq062mOq2R3r20bw0fMwpVxCGY9XjfXuHM0qs4Lf3NjLfKT-8Sjan2PjQNXhmhLea3PocPFnXUPjw5RzPB3n-zHT7UUzRZ5Dt3P4yleSd4WxPPlG7TnHi3Jkxzkk5WNJDjP-HH9kMjdsIbJ3m5PHugNRqbdj1UfQP_lkOw0vu-c3NfPGR3Hw8I8vLi4vLP87_9YEszy_OrsnNpRk--fKBfD67uvx8M9leLV8duqROFK77H15U7wgkJ-bCFt5SvWP5ShOM7z-yPE25d-hjiZ9loW5_wRNv5Q_8RiQ68N3IbgysNb7dsZfRBJDMTiazU_ygZTiOo_ZEFlYZJpZ5tiMB8u0NOdsNIlU--qsvY6YKDbgVuBzzvVFCdnjMrg_kFeazDfT5DqkpaVAdHqXizB0tHwyjSv2j5LqTDXGH-PuHvc_37JdBfT8ANaythDS9_P4XGyLPRKWnQuLlIK7D4M8_rmY0_JON_Bq6TfkNrHSUHwd5GqT0SJe64sc2SZlPN7jCGzW8rDRhn4k7TsyHLT-47Ju84bcq5KiT1fGvf4wShdHMP7o99pmfp0VWZK6XccbjvAi9NOZJnrtB7Lr5UUUzXqljiEgIx6PyeHuP6qVh5HlTN01oHtLYjcKMURqD3WCzAVtzFIxGPpLHBoO5hg3dqlRaPb6EXAH1gfMtf9rpWyGPv99CQRHNWnVHBvGxgfs39Y3bTw">