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

    <tr>
        <th>Summary</th>
        <td>
            Opt -instcombine crashed. "llvm::Constant* llvm::Constant::getAggregateElement(unsigned int) const: Assertion `(getType()->isAggregateType() || getType()->isVectorTy()) && "Must be an aggregate/vector constant"' failed."
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    link: https://gcc.godbolt.org/z/q6P9e3n44

Test case:
```
define void @arm_cmplx_dot_prod_f32() {
entry:
  %new0 = shl i1 0, 1
  %last = zext i1 %new0 to i32                                         
  %var27 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %last)
  %var33 = call <4 x float> @llvm.arm.mve.vcmlaq.predicated.v4f32.v4i1(i32 0, <4 x float> zeroinitializer, <4 x float> zeroinitializer, <4 x float> zeroinitializer, <4 x i1> %var27)
  ret void
}

declare <4 x i1> @llvm.arm.mve.vctp32(i32)
declare <4 x float> @llvm.arm.mve.vcmlaq.predicated.v4f32.v4i1(i32, <4 x float>, <4 x float>, <4 x float>, <4 x i1>)
```

It is weird because I tried to replace `%new0` with an add instruction, or both `%new0` and `%last` with function arguments. However, neither of them could trigger the crash.

Error message:
```
opt: /home/spica/GitRepo/llvm-project/llvm/lib/IR/Constants.cpp:411: llvm::Constant* llvm::Constant::getAggregateElement(unsigned int) const: Assertion `(getType()->isAggregateType() || getType()->isVectorTy()) && "Must be an aggregate/vector constant"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: opt /home/spica/test.ll -instcombine
 #0 0x00007f5bfd703ad4 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00007f5bfd700b14 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f5bfd1050c0 (/lib/x86_64-linux-gnu/libc.so.6+0x430c0)
 #3 0x00007f5bfd10503b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #4 0x00007f5bfd0e4859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
 #5 0x00007f5bfd0e4729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
 #6 0x00007f5bfd0e4729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
 #7 0x00007f5bfd0f6006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #8 0x00007f5bfd963c5f llvm::Constant::getAggregateElement(unsigned int) const (/usr/local/bin/../lib/libLLVMCore.so.15git+0x176c5f)
 #9 0x00007f5bfe054b11 (anonymous namespace)::ConstantFoldFixedVectorCall(llvm::StringRef, unsigned int, llvm::FixedVectorType*, llvm::ArrayRef<llvm::Constant*>, llvm::DataLayout const&, llvm::TargetLibraryInfo const*, llvm::CallBase const*) ConstantFolding.cpp:0:0
#10 0x00007f5bfe05524e llvm::ConstantFoldCall(llvm::CallBase const*, llvm::Function*, llvm::ArrayRef<llvm::Constant*>, llvm::TargetLibraryInfo const*) (/usr/local/bin/../lib/libLLVMAnalysis.so.15git+0x1bc24e)
#11 0x00007f5bfe058bfe llvm::ConstantFoldInstruction(llvm::Instruction*, llvm::DataLayout const&, llvm::TargetLibraryInfo const*) (/usr/local/bin/../lib/libLLVMAnalysis.so.15git+0x1bfbfe)
#12 0x00007f5bfec009ee prepareICWorklistFromFunction(llvm::Function&, llvm::DataLayout const&, llvm::TargetLibraryInfo const*, llvm::InstructionWorklist&) InstructionCombining.cpp:0:0
#13 0x00007f5bfec1705d combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, unsigned int, llvm::LoopInfo*) InstructionCombining.cpp:0:0
#14 0x00007f5bfec17a81 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/bin/../lib/libLLVMInstCombine.so.15git+0x50a81)
#15 0x00007f5c0049b2b6 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/bin/../lib/libLLVMPasses.so.15git+0xa52b6)
#16 0x00007f5bfdac8d34 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/bin/../lib/libLLVMCore.so.15git+0x2dbd34)
#17 0x00007f5c004951f6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/bin/../lib/libLLVMPasses.so.15git+0x9f1f6)
#18 0x00007f5bfdac7866 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/bin/../lib/libLLVMCore.so.15git+0x2da866)
#19 0x00007f5c0049d876 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/bin/../lib/libLLVMPasses.so.15git+0xa7876)
#20 0x00007f5bfdac5901 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/bin/../lib/libLLVMCore.so.15git+0x2d8901)
#21 0x0000563a1a5f5dec llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/usr/local/bin/opt+0x33dec)
#22 0x0000563a1a5e5c73 main (/usr/local/bin/opt+0x23c73)
#23 0x00007f5bfd0e60b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#24 0x0000563a1a5e66fe _start (/usr/local/bin/opt+0x246fe)
Aborted (core dumped)
```

cc @regehr 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWVtT4zoS_jXhRUXKd8cPeQgBdtiFGgqo2ceUbLWNFtvySHIG5tdvS87FdgIDZzhbe-pQwRddWt1ff2q15FSwl3nJ66eJvyCPWjcKHybeJf6KLJsWgqWi1FMhCyz5if_fo9sE_DoIJs75xFl01wdQmmRUgenclUfO5mdfGeS8BrIWnJFJ4FBZrbKqKZ9XTOhVIwVb5b438WYTLyGT-KzrBLWWLzuJhEy8sIYfDpn450Q9loS7xJl4S-L2GpQUNTENfsKzNi22nbQg3PfIe_96ItdUerGVmdGyxIdlQJ5R9MS_MLaU5bqaokHTag3TdaYba4gZa6MO2jSU5vsH0vJSUH1cYFXS79NGAuMZ1cCm6wChwisq0A1jMRjL-QlS8JprTkuOz5_eZGP-Bp2eiRK0dfOGBvF5nycMspJKeD-GO8Gjnr-B1xE7P1xkFd_pNuJ6d71C9inyA7hkJIWMtgrIFdGSAzNclNCUNEN7sFfHUHwiP7h-JLQmlDHCa6Vlm2kuajOykCQVWDvsQGu2KbFM24rI29p2JFQWbYXzSE3JF_ED1p0Pa8BGIInICd4rkom2ZEa3osBSLCKZpOpx2rfnQkpUoQKlaPHqNBeNNnEEw8SjqABvqkEv4P0fXN9BI_DJeOsUZ_x_INObV3PjKV6v7vCyFGg4NSpnTYPSAtc1Mm1DHNZfbBtMvKOl9q0AvSgKCQVS4KIEAwF6v60VL2ow2JpZiXZjHyN8oRRIC5gFc4bdH14a6ALSKfqaq524fQVGqiX-yJHW39A6IR9eujLb1ovwhzfvpsUQlYL181Yo2r22XTqdrHXI1JjklJdI4g7e2-uLxf0FUW1acU0oSdvCEElIbSg1it7o4jadZqLqoTzEnivVgsIHSyNeZ2XLYO9-ktLsSUtk6Wb4e40FhLVVs_O_g1XJrRSFpNWebAZSpMIRHmhcKKYY9k4Nu1G3FFeFTeSYeL5DnGcH_-I8THMWOz5lAbmV6C079IPR5R49SMsvqHFpyDyzscZbGIi7qi1vHPu_k-2OZDupG5CxsA0v3hTkDQS5TuhkuCQZP29Y_DyLVlFwiotq-3xa1G1XkU2VmCIFzpznwMcu-5CJMv0DmX5KJOUYM7B32vKSGZcaMafqJj_758Pu1Zv6rgHYqowP06l5e1EMGuPatubPXcHa6oE64d2KnmZoWGgml7vXJBho4kAwCxNCU0Ox92qiWYeD7WUHmZlB4v0g4XiQGEHHWbTq9F4pKAyPVmtatu9GAH1n7MdgzSpVYOzv7HMSo8B-7OjY2Ku6XJmOmI5UlNe_N2QSG8b4wX7MeDhmHjlO9DHK-AF2GVBmNpCZRH4W5p8RDjd6tUpayzJLKpymW2p1CuP1-vrbzVJIMEq6IYYbq6gbR6jIQNOkryk4YZC6Ji2b0VrUL5VoFakprisNTm7Tb6D-pSjZJX8G1gXUJaZM2HNv5j0uWnVxB7lZ1ob2LHto9ER0kXoxrF9ISV-MFH95dJ3ZrP77unOq6TV9Ea3eLCImuvcbPGAwBH3NU0nly1Wdi2270cjGojNMnHvVCelbj-YdxiETz5wRrKEXwBECGBkHsB0ZdQDXJn34fZzegiH5ENUWGN5eFFcjuqUZmr3PxBAXd4TLDK-v4HLVT7F68AzKF5_o-c8xOUeLBiYPliTIHCcBIJgCN5gxXy3_LeRTyZW-lKLae3Z2zN3Rn8TyHqBbbayshPRqljYdeJXv_tBIN3ZCRjYpRE-K-opJ7sfMfE27AfMXd6DaEnObgzmBWVTVWANo9gi_xuiVFpjd1CoXsjra5lxUvKYmfkk4HOMrjl_xn9RocQcVlU8XmCFqk9OMWp4h6Z4uJXxvoc426owMwnQux6Tzvq2qncaLt-PrtRDNruFHnBqMnUpn7sgznQS4pUp1hbJ9p1-38-eG1rhnkYOgtetkIlb00ZnZ02s4OUMHDRjMzV6ugxMzSFIvjXo6MtCY4W-ARxNvBIPyuKYHnO0jM_Ig4H5mDaxDANQfw8X8_k8ANzbCKBDSEKEcYD3M7Wg2Y5jP9mAx-L6l2l8dpcN0zGMpYjAAKR4RMnTzzyDknwbu35DZSY4-GThtNmJ2PIv6TkMntSU8iK0qRuiC0QbXi-OGdh0-ZOamy6cRk6IJAxuTETHZLP4YMbdGLd-JzGcxa4_Ma7z6H8N9NFrGCGcfb88ZcSpMHPcdE_oYyn8pdI6RcYa2D8DZ7iLCyKcuDfOQQdbTDU0w-NzyBkpzhPXqnvSXVnbJ3w2mjlbO4hfJ41XVlIethCi_trpp9SUvjwj5repXzDm6Fdy3HQfuo80thGVb8PqgvWj0SqNi3Vun3r94zd5q9Q0kzznIbbvU1Lz7_haJzLm2PYbxkQYDnnhDnkCYxT7ZnCH9SprnY-OBNH90OBU5qU9WK3MWtMJdq9SrjxxPZardToDusWtr5NiDKj_wzHU_fDAyJopw69wN_B5zgqi3L12Y0z_cK2C_DCecPTYG9vY3kywz33MkFPAoyQnM3ShMojgMw9kJm_ss8RN6orkuYY4bnsEZcndiDWxqDtj_5p8KPO-kleX8j38OCKMkCE8e5z6CH0DoppEPXhxBnDHfy3LHzdNZ5ITxSUlTKNV8Ep5NwvMTPvccz3NmTugEYeJG0ywBj7GABmE6y1IvRN_i3pSXU_vFTsjiRM6tDmlbKPMhDzfeal-JwcG4ALbyaasfhZx_oVq1NdgvCidW57lV-L9YNWAR">