https://llvm.org/bugs/show_bug.cgi?id=31778
Bug ID: 31778 Summary: Vectorization interacts badly with ARM division lowering Product: libraries Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: Backend: ARM Assignee: compn...@compnerd.org Reporter: smee...@fb.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified % cat /tmp/crash.c void apply(short *a, short *b, int c) { while (c--) { *b = *a / 3; b++; } } % /path/to/llvm/build/bin/clang-5.0 -cc1 -triple thumbv7--windows-msvc18.0.0 -emit-obj -O1 -vectorize-loops -o /dev/null /tmp/crash.c clang-5.0: ../../../lib/Target/ARM/ARMISelLowering.cpp:7342: llvm::SDValue llvm::ARMTargetLowering::LowerDIV_Windows(llvm::SDValue, llvm::SelectionDAG&, bool) const: Assertion `Op.getValueType() == MVT::i32 && "unexpected type for custom lowering DIV"' failed. 0 clang-5.0 0x00000000015eed95 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37 1 clang-5.0 0x00000000015ece0e llvm::sys::RunSignalHandlers() + 62 2 clang-5.0 0x00000000015ecf72 3 libpthread.so.0 0x00007fe8f91c2370 4 libc.so.6 0x00007fe8f7fe41d7 gsignal + 55 5 libc.so.6 0x00007fe8f7fe58c8 abort + 328 6 libc.so.6 0x00007fe8f7fdd146 7 libc.so.6 0x00007fe8f7fdd1f2 8 clang-5.0 0x0000000000aee7bf llvm::ARMTargetLowering::LowerDIV_Windows(llvm::SDValue, llvm::SelectionDAG&, bool) const + 79 9 clang-5.0 0x0000000000b090a8 llvm::ARMTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const + 6376 10 clang-5.0 0x0000000001d00d43 11 clang-5.0 0x0000000001d02c9f llvm::SelectionDAG::LegalizeVectors() + 367 12 clang-5.0 0x0000000001cbdfd9 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 729 13 clang-5.0 0x0000000001cc6544 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 1604 14 clang-5.0 0x0000000001cc85ac 15 clang-5.0 0x0000000000abcad4 16 clang-5.0 0x0000000000f54c43 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 355 17 clang-5.0 0x0000000001233bd3 llvm::FPPassManager::runOnFunction(llvm::Function&) + 643 18 clang-5.0 0x0000000001233c7c llvm::FPPassManager::runOnModule(llvm::Module&) + 60 19 clang-5.0 0x00000000012344df llvm::legacy::PassManagerImpl::run(llvm::Module&) + 735 20 clang-5.0 0x000000000176056c 21 clang-5.0 0x0000000001761780 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) + 832 22 clang-5.0 0x0000000001d8450c 23 clang-5.0 0x0000000002195b62 clang::ParseAST(clang::Sema&, bool, bool) + 578 24 clang-5.0 0x0000000001d8272a clang::CodeGenAction::ExecuteAction() + 58 25 clang-5.0 0x0000000001a97b36 clang::FrontendAction::Execute() + 518 26 clang-5.0 0x0000000001a72796 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 358 27 clang-5.0 0x0000000001b22934 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1716 28 clang-5.0 0x0000000000a1bbd8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2168 29 clang-5.0 0x00000000009de5f6 main + 5510 30 libc.so.6 0x00007fe8f7fd0b35 __libc_start_main + 245 31 clang-5.0 0x0000000000a17729 Stack dump: 0. Program arguments: /path/to/llvm/build/bin/clang-5.0 -cc1 -triple thumbv7--windows-msvc18.0.0 -emit-obj -O1 -vectorize-loops -o /dev/null /tmp/crash.c 1. <eof> parser at end of file 2. Code generation 3. Running pass 'Function Pass Manager' on module '/tmp/crash.c'. 4. Running pass 'ARM Instruction Selection' on function '@apply' Removing `-vectorize-loops` fixes the crash. In particular, the problematic IR instruction appears to be sdiv <4 x i16> %2, <i16 3, i16 3, i16 3, i16 3> -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs