<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/144279>144279</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AggressiveInstCombine] assertion failure loading from large zero field of global struct containing undef
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```llvm
@0 = constant { i72, i1 } { i72 0, i1 undef }
define void @f() {
  %1 = load i1, ptr @0
  ret void
}
```
```
$ opt --version
LLVM (http://llvm.org/):
  LLVM version 20.1.7
  DEBUG build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: znver5
$ opt -S -passes aggressive-instcombine reduced.ll
opt: llvm/lib/Support/APInt.cpp:457: APInt llvm::APInt::extractBits(unsigned int, unsigned int) const: Assertion `bitPosition < BitWidth && (numBits + bitPosition) <= BitWidth && "Illegal bit extraction"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: 20.x-Debug/bin/opt -passes aggressive-instcombine reduced.ll -S
1.      Running pass "function(aggressive-instcombine)" on module "reduced.ll"
2.      Running pass "aggressive-instcombine" on function "f"
 #0 0x00007f6af9311bc6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm/lib/Support/Unix/Signals.inc:799:11
 #1 0x00007f6af931212f PrintStackTraceSignalHandler(void*) llvm/lib/Support/Unix/Signals.inc:875:1
 #2 0x00007f6af93101a0 llvm::sys::RunSignalHandlers() llvm/lib/Support/Signals.cpp:105:5
 #3 0x00007f6af931275e SignalHandler(int) llvm/lib/Support/Unix/Signals.inc:415:1
 #4 0x00007f6af8b56750 (/usr/lib64/libc.so.6+0x3d750)
 #5 0x00007f6af8bafa9c (/usr/lib64/libc.so.6+0x96a9c)
 #6 0x00007f6af8b56616 raise (/usr/lib64/libc.so.6+0x3d616)
 #7 0x00007f6af8b3e28d abort (/usr/lib64/libc.so.6+0x2528d)
 #8 0x00007f6af8b3e1f5 __assert_perror_fail (/usr/lib64/libc.so.6+0x251f5)
 #9 0x00007f6af91021db llvm::APInt::extractBits(unsigned int, unsigned int) const llvm/lib/Support/APInt.cpp:0:3
#10 0x00007f6afaa4c319 (anonymous namespace)::ReadDataFromGlobal(llvm::Constant*, unsigned long, unsigned char*, unsigned int, llvm::DataLayout const&) llvm/lib/Analysis/ConstantFolding.cpp:445:45
#11 0x00007f6afaa4c68b (anonymous namespace)::ReadDataFromGlobal(llvm::Constant*, unsigned long, unsigned char*, unsigned int, llvm::DataLayout const&) llvm/lib/Analysis/ConstantFolding.cpp:478:32
#12 0x00007f6afaa4d3ee (anonymous namespace)::FoldReinterpretLoadFromConst(llvm::Constant*, llvm::Type*, long, llvm::DataLayout const&) llvm/lib/Analysis/ConstantFolding.cpp:622:7
#13 0x00007f6afaa4cf72 llvm::ConstantFoldLoadFromConst(llvm::Constant*, llvm::Type*, llvm::APInt const&, llvm::DataLayout const&) llvm/lib/Analysis/ConstantFolding.cpp:723:19
#14 0x00007f6afc550eb3 foldPatternedLoads(llvm::Instruction&, llvm::DataLayout const&) llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp:910:15
#15 0x00007f6afc54dca8 foldUnusualPatterns(llvm::Function&, llvm::DominatorTree&, llvm::TargetTransformInfo&, llvm::TargetLibraryInfo&, llvm::AAResults&, llvm::AssumptionCache&, bool&) llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp:1253:21
#16 0x00007f6afc54d9bd runImpl(llvm::Function&, llvm::AssumptionCache&, llvm::TargetTransformInfo&, llvm::TargetLibraryInfo&, llvm::DominatorTree&, llvm::AAResults&, bool&) llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp:1278:17
#17 0x00007f6afc54d855 llvm::AggressiveInstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp:1290:7
#18 0x00007f6aff99a1d8 llvm::detail::PassModel<llvm::Function, llvm::AggressiveInstCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm/include/llvm/IR/PassManagerInternal.h:91:17
#19 0x00007f6af9de0ed2 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm/include/llvm/IR/PassManagerImpl.h:85:5
#20 0x00007f6b06c0be58 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm/include/llvm/IR/PassManagerInternal.h:91:17
#21 0x00007f6af9ddf7f5 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm/lib/IR/PassManager.cpp:124:38
#22 0x00007f6b06c2d648 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm/include/llvm/IR/PassManagerInternal.h:91:17
#23 0x00007f6af9ddfdf2 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) llvm/include/llvm/IR/PassManagerImpl.h:85:5
#24 0x00007f6b088241ce llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::__1::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) llvm/tools/opt/NewPMDriver.cpp:541:3
#25 0x00007f6b08861f85 optMain llvm/tools/opt/optdriver.cpp:739:12
#26 0x00005575215c34a9 main llvm/tools/opt/opt.cpp:25:42
#27 0x00007f6af8b403fb (/usr/lib64/libc.so.6+0x273fb)
#28 0x00007f6af8b404ab __libc_start_main (/usr/lib64/libc.so.6+0x274ab)
#29 0x00005575215c33b5 _start (20.x-Debug/bin/opt+0x23b5)
```
Also repros at 087a6ac420ad99c523b9dd517351e0c6d1f1a980.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1z4ygW_TXkhYoLkNDHQx4Upz2T2s5uqpOefXQhgWxmMKgApZP59VsgOZbVzoy7J_3QW-UqSwjOvedydLkC5pzcaCGuAL0G9OaC9X5r7NXvrDG1ekEXteEvVyBDw0-ppx1AFUgRgiC5gY3RzjPtIcivocwJIEsoMQT5zb4ForGt11y04QlAFRet1AI-GckhSFELSAFIGYYAVEEICMURXhnGocQBofM2dEWxgxU-Dg6uRMBXB-fXJIWm8_Dy8klYJ40GqPr48bc7CEix9b4DSQXICpBVILYwdhPvytAc7MSu40hI0AIv8th-8-H68y-w7qXi8Iv0W8icE9ZLo91i6CBa1isPPbMb4UFSweciW2fpZa__0OaLvlRS98-XG93H7r8a5-Hy_nPo-Kd-EpZOfX-Al10w4CDbbKxwTj6JS6mdb8yuDnG0gveN4AulAKpMF-3FmSIrJWtAVg991xnrAVlV97faL5ouME9pHnrGpqF_UoGkivfDpXj2ljX-WnoHSNHrKBUOpfZhSo7vy0EMEXEfDQgyVEt_b5wcbpMlvJb-v5L7LQQkAyQLM6H7XTABAbmGk-5REskyCOHrQeRWKbFhKgyAo59xDAEkhy2TSvAwF_cfP1QPH6Dr6530kMG630ArQjSgNzBowL2KYCP9tq8XjdmNihj_LjtrfhdNiJ90rhcOkBVkOhBvVM8F9FsBG8vcFtas-SP4IoLtB8-aPyDvd90gKLQAqLy3ZmPZDjK76XdC-2A-aOv58kbUfRBgLTUgqzj15847vHwAqMIB_1OvtdQbGIaGOLW9HiNTnIYJeicEGg13hvdKhEETRRECUEVOIb8FF7H2ZqMLAwgEJEEQPSOEUN5mrC0TjOsmm2jPvbjh4t5K7WP8HkM0ASkOnSz7sjbOW8F2UQ7LvQDf0PxnLZ9Dg9xoptxC6gYkVV6Gtxzj0S8884tg0sKZEwPAr0xzJSwgRcxApPpWy0VOg-XRMJkZRpihUwH51Osj-27MmW9Y3psc3nSMgkk6mkzmXHMq4Jzcd4Q0xVNi6dRKUdMspwhGp1e9swNmlg7_zcKZRQbINXpOeE5RkOSAQo9RWMvK5gyUMmNlc0DJ5r5kOIOWSSfO8ijD2QErP8ZKBCk4ZHVIKH-PRSgp-AGrmGPhlsL1elhN1p2w1th1yGVnQeOWHqDLo0nGiGBev1uSP2d1QSCpkriMJfjorWcsbRJcBkpMG_2yM72Dmu2E6-KbXo6CF4zfMM9W1ux-UaZm6igJLMfKI76AEzeV0ZujhmbL7LzTyO2AFgx9ZC-m9-MqFvLKTP2VZurFyZD898ZXRnGpN_v1NKVxVR1J4znprKj_D0nnRZhoMpImM9I8EeLvSAfAT0JqL2xnhf9oGA_8l4NPb9M_PHh86cS-cQzFO9PMCAmLxsgymU9tmxP4tZ8B4h-yOX5hJwTenWFOkpC9y5HiUfpuKEWiTmBrFL9n3gurRWTmjhjdaudtP1Yb3-Hjo2XatcbugpfVa3URYJf74uJ0-8ihxCHr4P0bSI85pLxhReTwWfeuZ2qkckxi9VovzRmYndTMG_tohfjq6WOs9F8Z3OrWvNHno6wtsy8ne1TVJ-F6FTLx_Ilz_a4Lji1Zs93br41RPySSmNAgB4LHUGbzUJY1h7bXt7tOnRe-0wTeO4B_PUnz8P7A8MW0iPcJI5-Hr6B06tcpqHvmxtrP9vrMGI8v-R3TbCMsSJYnBiUffhDlEk1S5FFp05Ylw7yYeMqFZ1KNtT5z7s5woU77e8zwzUh9VyDC78dHePxMPHxU3n4CZBVpDzC3Ye3TTC22MYlNlXNcx3GBBJ8uNROQc6L3k4Vl1w0hKfafL-GDaVJM1ihrUC3oeyjrh0Xyp56BN4VJjr-YOW_zdprS7uJewqPZ2w6gFWedN_Y0s2HAN_Eah5xOaHMqr2kqDfVqMbIgx2IiPEu_TUx7t5dncv8Ocm9p4f0i9k90kMx1wNtzEtSpuP084TiZmNKploqCpLgRE0dsH4VwLzuh4nI68f3BW6k3n0R7SkhvlEF3rNlGnPnnw7xIGmq0eS9j1H963_V-JdUJkH_0-A06lbXsJbRO5yDGRPUbqb9Olof-zvOhbb3Gw8XrvmayHM4RpvEMoNe9VFzYYWpP5WLT-bUPFWC8G-j8S2r-V71-E1a2Uth9v6GC_Nb_V6UFYDds9gKy-rf4cn93Y-XTa7aiKT5soxB6LLAMtwWFpvN3TOrTiKbzfIqXJ3HXc_xaJ_uqntKcEkybJGUl3P0V2ohD4k7HHma2JZaipK3P2bHKk7YedqwCSjFHSVkN1-swZu08s34dPTsHN2UT3HJOMqkpHBAD2Omt9wEoqccdtemZUqWcgVZ01jjIPERFzjLWpAQxXpYNJUldck5xnlAsUJNx3GJWFmhxwa8SXiYluxBXOKcIEUwxudhe5azFKWtpQRAu2zTNUiKyQmRlTjJWUn4hrwgiFGWYEowoJoumTAitc8YZFYTiFKRI7JhUi_0x1kU8p7jCaUry8kKxWigXT_gI0eILjE8BIYDeXNireMRR9xsHUqSk8-4A46VX8Wjw9BcBvTmcfMUzl96KeGgn9Qa21uygCskI_imsga0UikPTwk3c2ILDXgFsjPZMxoOFeER40Vt19f3nMiPlpyvyvwAAAP__MSDtgA">