<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzNWN1z4jgS_2vgRRXKtow_HniAIdlNVbKTGnJTdfdCybYA7cgyJcnJsH_9dcs22CyZ9exdXR2VgN1qtX79qZayqjgtHnfknRMmZZUzwohkeg-vWrMTYaogf3BdEaGEFUwKw4mwk-ATzrBa7PdcAxORMifMGK6tqNSMvB6EITsmpCGVAlFlFDpR36MQ56rKElNrWCSraksqewApFpe1ZkYeYUZRCJSEzMKh0_zImSXvwh6IKQErrosQDZkEiWEnZPU9-PY8j3DJS66smQQpAeEkrwpO9lxxzWylyVFXRZ1zc1ZW1WUGAqsdMTAOA-8HkR8IKGFk9U5sRaqjFSVoP5t464m3HHxH3u9cfRPKTEIPTPAGkp5Z_nkDyOYkB9RsJmXLS1fkGRaX_HFNJhT-g9hyAxaNGwZT1Trn252QXLGStzxBwxM0PI2lSMEsk-yEFmy5-F05ocvqToCZ6TIK74QfJPAE33eKBg1tg7QrUeDJozwv5vx1x45AuiuYfhcq8GZ05p1nXXR5qFWOjiJLa7WBBcAp-5KXlZIncHOtYHLRsBd8JxQnb5UoCBgKNTLbbSb2G8vyb_4EUaWwPPXIJF41cwia0He42vCczFeJhx_ynQhQab5Gx0Ng7hUJu0nOiTdYXSh3kQzPOPWWwKVb9oZgDbZCBVoDxOu-PRiYQGQ1KNZqgdaMV7csQs5TfxA5Lqcgcsjf_TQrLLu0dAnJC3QSGPu3uvzKZI1g6Rqhfn01MyS-IvwI_jAULlzvzCgMVkhByCUOmuwPZAfJJCwk-REySxWQbz4GSZCi7XZdbGzWv0H-OZLAKAse_gGQgPmh0z54aOIeH-zpO_xQXbwwbSGtH6R8K3FA55cXoXJZo8yO8AlW-IUDwocNJL9bd738Bdc1swMuLTH4fC8K2gx-ebpfbu6hDGWlgAwlWb3HIlNpi-l-sPaI4Qzy4A_GzAwXmlV6D--ulrUQmvqimTmQDOLYapZ3RcIFNinq8oiSHMmDofRFV3vNSgyMuilTziV_yypZLWQBv5XBcZe5SBXKseS90uPj0l9qpYTakyMUa6w95_x9QcIzU2yPaRFj2S5dnUIuJySIW7WCW4KWS50foMo_KmN13fq980Qr8BwQWO1uVYD42m6u3mOBM6cyqyTBkugKPldu_4DiRw7sjRO0xl3DhIkNzsExTV6Wr78SCFKDRe6AcfsmdKXQ6uSNaQK1--np6_N288_n1eenx3_df9niFCBjFByhWLhwwC0vvTiRuNy8-fG-e83H9yhP_MQPHTacS5fmZJqHFw2CnZqvGC-g0IVJs_dtBUbkrHR5CDugsk1pXJF51DpzNAQvipNbEMCBG6htTP4KwSxd4CXdKrhDNK4erylPcjIQCPJ6wKnXFlEKIkUGMCwvt0fJLNSQclacgNgTyeg8SvMwJFsj9pBTEAp99cOBEHsAYxWtjKGQwM-DkLQc228CqinKCdJ2J5v3BeWdiGsFGQ2jNMEeJsP64EzU6RONlpBkUUK41m6-18yOxxk4TPLCS7yeH9ua2n8OklqBtRQvmoj5RK7fL9PXHGraU5UPqZv119cnYVqnJbO8ksUs6FzYQk5GxkQRxmEY_m8hg1-SNnTTsTD9Hc36GdLfPxoKdEgfoO3jAGjQZyqEEn2EsU9dYvf6he8m9NOAFbfbCb2_FoEIHiTbm7OmUdoVA2-sqmlBvb9S9ZlDS9hs-oO69JN4h-ZoiwDtEPvjEOcZD9KPnLPCrQ_qTAfcIXksj3IA21E7JMszEv9svGAslGLu5z8DZQSMIGyj1adjUdA4-MiFAxRvwgjYYqARHuBwFNyk_-yceVsT3ZY1BgvLsywcjWUAo98mXAPxaQdkPjKuKQuij4zyCC996ooZka_gLPFtAEjA0dZuhW1OiIMYb4YKbqF9bigKcnGLJ0JAPmDtqYX5AM9N28ukcQ_u7NDkypnmmK7z5_8CTlZVsueXpN3x_GisW9Liw-S9dstSyotnhoXn3KNeB0oUh-2e5MdjIcV-8deRomv1WcFB7ABnhm71AaQ_jZ0xBefGwE_GYQqjOAv6aXQlHDvzHqybeG4AoVFnm3QcjsRnu3nfNg8vuHR3Jvh5BLD9t13kyP0pCbw0GoOguUEZeqQlXYKja2FHbjWJn81pv75Lvmf5qe3XLzDcBtNB-TGENG73mGDcHhOk8zie56RkQjUWDILWiQHFLhOay2LYYQ4lQMNLix0NibGs7VNbF_xhDhO8nHH9q_tM4vv_8gHzB1cZ54uyabGgRUpTNmU1nOz0IueGab6b1louhofuPRz96gx60PICxh3zjrr6HZIWbwGMcV3Kw5z6UTg9LKLdLvXS3KOMJUlR-FnId7soSmlIwbpePJUs49IsJvPVZL6e_udLikXggZN8P_AT6tN05lMv3nlpkMx34Ig0A2tw8Kc8Xx9M9cKJxDsFGMRifrlbmEKcYYPJO4RWWMkX71pYPGz3r68MXplWg8vanNUGjseDu9ipA7xwaP8NHNFliA>53164</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            writing zeroinitialiser to large array causes llc assertion
        </td>
    </tr>

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

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

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

<pre>
    If we alloca a large array and zero initialise it, we trigger an llc assertion. This fails on arm64 and x64, not sure about other targets. In addition, if we repeat with smaller arrays (say, 10,000 elements) the code generator produces a large number of stores which is slow to optimise.


`jenkins@server MacOS % cat a.ll
; ModuleID = 'test'
source_filename = "test"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-darwin20.3.0"

; Function Attrs: argmemonly nounwind
define void @tests__bigStack1() #0 {
  %1 = alloca [800000 x i32], align 4
  store [800000 x i32] zeroinitializer, [800000 x i32]* %1, align 4
  ret void
}

attributes #0 = { argmemonly nounwind }
jenkins@server MacOS % llc a.ll                                                         
Assertion failed: (NumValues == VTs.NumVTs && "NumValues wasn't wide enough for its operands!"), function SDNode, file /Users/jenkins/source/styx/3rdParty/llvm/src/llvm/include/llvm/CodeGen/SelectionDAGNodes.h, line 1062.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /Users/jenkins/source/styx/3rdParty/llvm/build/osx/arm64/bin/llc a.ll
1.      Running pass 'Function Pass Manager' on module 'a.ll'.
2.      Running pass 'AArch64 Instruction Selection' on function '@tests__bigStack1'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  llc                      0x0000000103e81814 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  llc                      0x0000000103e80678 llvm::sys::RunSignalHandlers() + 128
2  llc                      0x0000000103e81e8c SignalHandler(int) + 304
3  libsystem_platform.dylib 0x00000001a3569c44 _sigtramp + 56
4  libsystem_pthread.dylib  0x00000001a3521c24 pthread_kill + 292
5  libsystem_c.dylib        0x00000001a3469864 abort + 104
6  libsystem_c.dylib        0x00000001a3468b68 err + 0
7  llc                      0x00000001048cd080 llvm::SDNode::SDNode(unsigned int, unsigned int, llvm::DebugLoc, llvm::SDVTList) (.cold.2) + 0
8  llc                      0x0000000103d47444 llvm::SDNode::SDNode(unsigned int, unsigned int, llvm::DebugLoc, llvm::SDVTList) + 188
9  llc                      0x0000000103d1f3b8 llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc const&, llvm::SDVTList, llvm::ArrayRef<llvm::SDValue>, llvm::SDNodeFlags) + 1696
10 llc                      0x0000000103d19d30 llvm::SelectionDAG::getMergeValues(llvm::ArrayRef<llvm::SDValue>, llvm::SDLoc const&) + 336
11 llc                      0x0000000103cbe298 llvm::SelectionDAGBuilder::getValueImpl(llvm::Value const*) + 3196
12 llc                      0x0000000103cbd51c llvm::SelectionDAGBuilder::getValue(llvm::Value const*) + 248
13 llc                      0x0000000103cb3720 llvm::SelectionDAGBuilder::visitStore(llvm::StoreInst const&) + 352
14 llc                      0x0000000103cacbb4 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) + 132
15 llc                      0x0000000103d3a260 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) + 84
16 llc                      0x0000000103d39d98 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 6740
17 llc                      0x0000000103d371d0 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 2104
18 llc                      0x0000000103467b24 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 360
19 llc                      0x000000010381af50 llvm::FPPassManager::runOnFunction(llvm::Function&) + 744
20 llc                      0x0000000103820960 llvm::FPPassManager::runOnModule(llvm::Module&) + 68
21 llc                      0x000000010381b53c llvm::legacy::PassManagerImpl::run(llvm::Module&) + 976
22 llc                      0x000000010295775c main + 7220
23 libdyld.dylib            0x00000001a353df34 start + 4
zsh: abort      ~/source/styx/3rdParty/llvm/build/osx/arm64/bin/llc a.ll
jenkins@server MacOS % 
`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWEtv4zgS_jXOhYghiXoefLDbyUyAZDroZBvYvRiURNucpiiDpJL2_PqpoiRb8jg96sFisUZiS2Sx-NW7yLwuj4uHLXnnhElZF4wwIpnewavW7EiYKskfXNdEKGEFk8JwIuws-IQrrBa7HddARKQsCDOGaytqNSeve2HIlglpSK2AVRWHjtX3OMS1qrbENBo2yevGktrugYvFba2ZkwdYUZYCOSGxcOg0P3Bmybuwe2IqwIr7IkRDZkFq2BFJfQ--Pc8jXPKKK2tmQUaAOSnqkpMdV1wzW2ty0HXZFNychFVNlQPDeksMzMPE-14UewJCGFm_E1uT-mBFBdLPZ9565i1H37H3O1ffhDKz0AMVvAGnJ1Z8fgFkESkANZtL2dHSFXmCzSV_WJMZhf8gsdyARpOWwNSNLvhmKyRXrOIdTdDSBC1NqylSMsskO6IGOyp-W83osr4VoGa6jMNb4QcpPMH3raJBO_aCYxeswJIHedrM2euWHWDotmT6XajAm9O5d1p1luW-UQUaiiyt1QY2AKPsKl7VSh7BzI2CxWVLXvKtUJy81aIkoCiUyGw2udi9WFZ882eIKoPtqUdmyapdQ1CFvsPVuecsWqUefsh3IkCkaI2GB8fcKRL2i5wRr5A6V-49GZ5x6TWGS7ftFcYadIUCdApI1kN9MFCByBsQrJMCtZmsrmmEnJb-wHNcTIHnkH_6aXdY9mHpApKXaCRQ9m9N9ZXJBsHSNUL9-mrmOPiK8GP4Q1c4U70zo9BZIQQhljhIstuTLQSTsBDkB4gsVUK8-egkQYa62_a-8bL-DeLPDQn0suD-XwAJiO976YP71u_xwR6_ww_V5TPTFsL6Xsq3Cid0cX4RqpAN8uwHPsEOv3BAeP8Cwe_2XS9_wX3NfI9bS3Q-34uDLoKfH--WL3eQhvJKQISSvNlhkqm1xXDfW3tAdwZ-8AdzZo4bzWu9g3eXyzoIbX7RzOxJDn5sNSv6JOEcm5RNdUBObsiDqexZ1zvNKnSMpk1TziT_SCt5I2QJv7XBeRe5OCqUIykGqcfHrb80Sgm1IwdI1ph7TvH7jANPTLEdhkWCabtyeQqpHJMg6cQKrjFaLnWxhyz_oIzVTWf33hIdw5NDYLa7lgGSS725fI8JzhyrvJYEU6JL-Fy5-gHJj-zZGyeojduWCAMbjINzmjwvX38l4KQGk9we_fZN6Fqh1skb0wRy9-Pj16fNy7-fVp8fH_5z92WDS2AYveAAycK5A5a87GxE4mLz6sf77rUf36M89VM_dNhwLV2ao2kfnjUwdmK-or-AQGcizd43NSiRs8rFIVRAZdvUuCJR3BlzMgQvTtJrEMCAL5DbmPwVnFk6x0v7XbBCtKaeLilPCzJiCPwGwKnXJVEKLEUOMCyvNgfJLOSQal4eYXDAktEozoowJBsjdhBT4ApD8cMRE7sHZZUdjzGTwC-CkHQUm28CsinyCbKukkVDRkXP4lJARsM4S7GHyTE_OBX18sSTOaR5nBKutVvvtauTaQoO06L0Um9gxy6nDp-DtFGgLcXL1mM-kcv38_I1h5z2WBfj0Zf119dHYTqjpfOiluU86E3YQU4n-kQZJmEY_m8hg13SznWzqTD9Lc2HETKsH-0IdEgfoB3iAGjQZyqEEn-EcTi6xO71C9_O6KcRKZbbGb27ZIEI7iXbmZOkcdYnA2-qqFlJvb8T9YlDS9gW_VFe-km8Y3V0SYD2iP1piIucB9lHxllh6YM80wN3SB6qgxzBdqM9kuUJiX9SXjAVShn5xc9AmQAjCDtv9elUFDQJPjLhCMWbMAJKDDTCIxxuBIv0X40TdTnRlawpWFiR5-FkLCMYwzbhEohPeyDRRL-mLIg_UsoDvAxHV8yIYgVniW8jQAKOtnYjbHtCHPl4O1VyC-1zO6IgFjd4IgTkI9KBWBgP8Ny2vUwa9-DODm2snMYc0WX8_F_AyetaDuySdhXPj6eaJSs_DN5LsyylPFtmnHhOPeqlo8RJ2NUkP5kKKfHLv_cU3ajPCg5iezgz9LuPIP1l7oQpODUGfjoNUxgneTAMowvm2JkPYF3FcwUIjXvdZNNwpD7bRkPd3D_j1v2Z4OcRQPnvusiJ9SkNvCyegqC9QRlbpBs6O0ffwk4sNamfR3SY3yXfseLY9etnGK7A9FB-DCFLuhoTTKsxQRYlSVSQignVajAIOiMGFLtMaC7LcYc55gANLy23NCTGsq5P7Uzwh9nP8HLG9a_uM0vu_ssHzB9cZZwuym7KBS0zmrEbK6zki3ctLB4jhxczBi8D69E1ZMEaAwe_0S3jTaPlYnxO38Fpscmhba3O-N3J8KDr3yHO8eLAGNfY3EfUj8Ob_WKbh34R5l6RUF4kUVLwNN16vs-gNntlFN5IlnNpFrNoNYvWN2IReGAV3w_8lPo0m_vUS7ZeFqTRFjSf5SA-BwPK033BjV44DHiJAJOYvc-XCTcgDnaUvOfPGjjw6kXBDdN8e-PgLhzWPwHQkVAz">