<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149078>149078</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] Compiling empty file traps ubsan
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tbaederr
</td>
</tr>
</table>
<pre>
If clang is compiled with ubsan:
```
$ touch foo.cpp && bin/clang -c foo.cpp
```
traps ubsan:
```
/home/tbaeder/code/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:387:46: runtime error: addition of unsigned offset to 0x7c7447de6e40 overflowed to 0x7c7447de6dd7
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/tbaeder/code/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:387:46
```
Backtrace:
```
* frame #0: 0x00000000003dfd00 clang`__ubsan_on_report
frame #1: 0x00000000003d9c1f clang`__ubsan::Diag::~Diag() + 255
frame #2: 0x00000000003df3ae clang`handlePointerOverflowImpl(__ubsan::PointerOverflowData*, unsigned long, unsigned long, __ubsan::ReportOptions) + 1134
frame #3: 0x00000000003df408 clang`__ubsan_handle_pointer_overflow_abort + 56
frame #4: 0x00007fffa36258c6 libLLVM.so.22.0git`llvm::MutableArrayRef<char>::slice(this=0x00007bff82317b30, N=18446744073709551511, M=105) const at ArrayRef.h:387:46
frame #5: 0x00007fffaf0f5aae libLLVM.so.22.0git`llvm::MCAssembler::layout(this=0x00007d2f833e4800) at MCAssembler.cpp:714:25
frame #6: 0x00007fffaf0f6a85 libLLVM.so.22.0git`llvm::MCAssembler::Finish(this=0x00007d2f833e4800) at MCAssembler.cpp:732:3
frame #7: 0x00007fffaf25ac4e libLLVM.so.22.0git`llvm::MCObjectStreamer::finishImpl(this=0x00007e2f833e5500) at MCObjectStreamer.cpp:803:18
frame #8: 0x00007fffaf1e7032 libLLVM.so.22.0git`llvm::MCELFStreamer::finishImpl(this=0x00007e2f833e5500) at MCELFStreamer.cpp:370:27
frame #9: 0x00007fffaf2f9274 libLLVM.so.22.0git`llvm::MCStreamer::finish(this=0x00007e2f833e5500, EndLoc=(Ptr = 0x0000000000000000)) at MCStreamer.cpp:1109:3
frame #10: 0x00007fffa7fdcd28 libLLVM.so.22.0git`llvm::AsmPrinter::doFinalization(this=0x00007d8f8341a780, M=0x00007d7f833e4c80) at AsmPrinter.cpp:2777:16
frame #11: 0x00007fffa45e1433 libLLVM.so.22.0git`llvm::FPPassManager::doFinalization(this=0x00007d3f833e2640, M=0x00007d7f833e4c80) at LegacyPassManager.cpp:1462:41
frame #12: 0x00007fffa45d0c67 libLLVM.so.22.0git`(anonymous namespace)::MPPassManager::runOnModule(this=0x00007d4f833e3780, M=0x00007d7f833e4c80) at LegacyPassManager.cpp:1549:41
frame #13: 0x00007fffa45ceef2 libLLVM.so.22.0git`llvm::legacy::PassManagerImpl::run(this=0x00007d8f83416180, M=0x00007d7f833e4c80) at LegacyPassManager.cpp:531:44
frame #14: 0x00007fffa45e19e2 libLLVM.so.22.0git`llvm::legacy::PassManager::run(this=0x00007bff8234e020, M=0x00007d7f833e4c80) at LegacyPassManager.cpp:1640:14
frame #15: 0x00007fffe4398bc7 libclang-cpp.so.22.0git`(anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(this=0x00007bff82476b30, Action=Backend_EmitObj, OS=0x00007bff82476bf0, DwoOS=nullptr) at BackendUtil.cpp:1260:19
frame #16: 0x00007fffe437ed7a libclang-cpp.so.22.0git`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x00007bff82476b30, Action=Backend_EmitObj, OS=unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> > @ 0x00007bff82476bf0, BC=0x00007d3f833e1a40) at BackendUtil.cpp:1284:3
frame #17: 0x00007fffe437b883 libclang-cpp.so.22.0git`clang::emitBackendOutput(CI=0x00007d2f833e26c0, CGOpts=0x00007dcf833e0a90, TDesc=(Data = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", Length = 79), M=0x00007d7f833e4c80, Action=Backend_EmitObj, VFS=(Obj = 0x00007d2f833e1380), OS=nullptr, BC=0x00007d3f833e1a40) at BackendUtil.cpp:1449:13
frame #18: 0x00007fffe5966eaa libclang-cpp.so.22.0git`clang::BackendConsumer::HandleTranslationUnit(this=0x00007d3f833e1a40, C=0x00007e9f833e0200) at CodeGenAction.cpp:316:3
frame #19: 0x00007fffdc66c9bd libclang-cpp.so.22.0git`clang::ParseAST(S=0x00007e8f833e5200, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:183:13
frame #20: 0x00007fffe93574d5 libclang-cpp.so.22.0git`clang::ASTFrontendAction::ExecuteAction(this=0x00007d0f833e3240) at FrontendAction.cpp:1342:3
frame #21: 0x00007fffe59756f5 libclang-cpp.so.22.0git`clang::CodeGenAction::ExecuteAction(this=0x00007d0f833e3240) at CodeGenAction.cpp:1111:30
frame #22: 0x00007fffe9355aa0 libclang-cpp.so.22.0git`clang::FrontendAction::Execute(this=0x00007d0f833e3240) at FrontendAction.cpp:1222:3
frame #23: 0x00007fffe9031273 libclang-cpp.so.22.0git`clang::CompilerInstance::ExecuteAction(this=0x00007d2f833e26c0, Act=0x00007d0f833e3240) at CompilerInstance.cpp:1056:33
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WFtv27gS_jX0C5GAN90e_KDY9W6B5CSo2wXOk0FJQ5tdmdKRqLbZh_PbD0hJiS05l23PGrYhiebw-74Zzowp21bvDcASBTcoWC9kZw9Vs7SZhAKaZpFVxePyo8J5Kc0e6xbn1bHWJRT4u7YH3GWtNIiniPh3SIY3SRET2FZdfsCqqq7zusaIhYiFONMGsU1v7yofRyezbSPr9lXrm0N1BMQ2A1Jnsircg7L8dryqm-or5Ha4RWyjTV52T-OIbdL1Z_fdNPLxE6jrA-IpjyPEUxEinuKmM1YfAUPTVI17IItCW10ZXCncGS9agSulWrDYVpj8iPJIiKiAEATB1TdoVFl9h2IyWBQRIun2y91d-unfzu4XU4DSBoobOMhvumq20mir_wK_ajeOXmXDMP5nqU9kJumNzP-0jcxh8MPJKEYsxaqRR8CIceLwkh_k6cULVRDSRw4KyW7n3bmrzK6Bumqss4DxswE6N5DkVE0NOBw8XWu576_-6y9ZjFiCEbvBLAimltkFaFzCk-WDNEUJD5U2Fpr7wXUfj3WJWHy26uQna2klYiliq-eQKCuzv_jgzNAnr8B97SKqHZFTysUUOr8AXZB4pmpPYVf3AHdj_O1kVjXWWw-cc58Ni2fDkVJK8pAFcR7iUme3t3_cXbfVNWPXZK8tCokPHA_8rrMyK2EMHsRX-UE2iH_oh9tS54BYbA-6RXw92M-UihmnUcaJU-JfiK9pLEQYCUEiHpEkCGhAqRu7c2MkcJLklWktlha_FKlnQgUTPoqoQEp4k88qbVs4ZqXfb4inpXysOjujUDAVcw4iJsRhkxafzPQJjKcRdaKyWfiFc2ihjIO_DW2jjW4PPwfN7wE-RRZNkbFA5uIdot1nLsdsbQPyOMJTHt6wbc4hQg8xCE4gnpsYcMbEBTyNp0DjKVAKEeHsbaAfbje_hPJk_gCRRy7TsWgKMZlpqRIWibchXsL3OrYV_mCK2ypHfI1Y_GAbjPj6LEv0L8SSJyITFpSS5FJEUDKhEakiL1j8Fo20PT40Pvf090W10UaW-i_pUtw8ZmMVc0FlFJNx148jUR_NeTw64dn0gJ1FkQtcOssBlE7AiwCo4Pwt8JuHB9m2d9LI_Xvxc4-SheJt_Lewl_njyQqjC0ToNqWgMxpsRqMgeRhdpoFYLE1lHo9V12Ijj9DWrlqzZIivObemM_fmriq6cp6qC-Hh8_c45kVigUguE-MzYjmAenMbl36hoQQ_L-c38cjopRAL6S8wCXxTImZVmU6rpwu0BH6WyMsk-sopgLBfcIcLUhduMxaTmgmCJ3GW-zjz_cVVXtd_K9g-HLUdSs_j71DWI7VPnVlVBezBPOgaSm1e6BFEFA49Qpr7fcfXrv8EU-yc6fvsqxu7316Ypvy09ffKj5quLGvbDMoMNr5YXY6asNBrksw0CWeaRFBE8v-vCZw8_2U1OqP_08HOUear53hr5Pdd_b3RFnatz_9uQmuLIceBkl1pdwWUYOGNifwD9h9B8GXpb1az9EilIK-4IBYXK1A090AWx_wVD_TN8JOqw1r3na19J7f6OGuWWJh70Kvf7mt7mjRyP0xk4oc_r6Edqqzr9X2ZRYzBlZMJrmrme4G-t2Lulp7fuqtQ-K8r_XRBWdzzv1IxGa5M3Fe0YXoorrbuZ4w5GLdg9vbgV48SX9RfTgWvB8sfm21P5z77etI0jLJQHpPB_vk2-gn3Cl8E6Ny_k14OgiQMQb62w078Oyy0qkzbPfVMv_s_P58badrS1-svRl9o4U9Rr_AJH0h6r7Onxs9lq9_A9FKOjV_vnhmfSeNX5GGYJ1nxPj4Psmkh3X5GLD7JahD33R7ruz3f_myt9JGqZNmCe7r9U9ebzniIN1Wh4WTUkxhtjx6J-UWHsEnLBwkPIlEE7yOQbj9vmspYMMUYeD7r_YC8szA8mrmC9F0GewqgcxsjYi4u_m1hdBZCURCqdyI-8-3Pob0UHpT69pOTGVo21zeQkrwP7Svi_rSsjF2WlU-BEk5Z9M7Mu-oPBpuPprXS9OdFbyp7no3T3L6u-vkKIx0S-I3JJ8eEi2LJi4QncgFLGgUsDIMk4ovDUuY5hJFSjEacqSST0t1LyXnGWKyyhV4ywgIS0ZBSnrD4WiUhJZmMQcUqCbhCgsBR6vLaVczrqtkvdNt2sKQiIVG8KGUGZeuPVBnrJWIMBetFs_RHdFm3b5EgpW5t-2zCalv6c9h-RrAeCGuzx3Cs7SNWugR8cjS66JpyebC2bp3YbIPYZq_tocuu8-r4fN43ORb0UFvENgPab0v2vwAAAP__Zl5zhg">