Okay, this is horrible. There are a TON of failures in the LLVM ARM tests. It’s obvious people aren’t testing their patches before merging them. Your build should have assertions enabled.
Could you please be more elaborate? Which tests are failing? Are you sure it’s not your local issue? Buildbot is quite green.
I had to revert a change over the weekend that was causing even more failures. I don’t have anything else in this tree that would interfere with the ARM tests.
********************
********************
Failed Tests (267):
Clang :: CodeGen/arm_neon_intrinsics.c
LLVM :: Analysis/CostModel/ARM/control-flow.ll
LLVM :: Analysis/CostModel/ARM/gep.ll
LLVM :: Analysis/CostModel/ARM/immediates.ll
LLVM :: Analysis/CostModel/ARM/mve-gather-scatter-cost.ll
LLVM :: CodeGen/ARM/2007-03-13-InstrSched.ll
LLVM :: CodeGen/ARM/2007-05-23-BadPreIndexedStore.ll
LLVM :: CodeGen/ARM/2007-08-15-ReuseBug.ll
LLVM :: CodeGen/ARM/2008-04-10-ScavengerAssert.ll
LLVM :: CodeGen/ARM/2009-07-18-RewriterBug.ll
LLVM :: CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll
LLVM :: CodeGen/ARM/2011-03-15-LdStMultipleBug.ll
LLVM :: CodeGen/ARM/2011-04-07-schediv.ll
LLVM :: CodeGen/ARM/2011-04-11-MachineLICMBug.ll
LLVM :: CodeGen/ARM/2013-02-27-expand-vfma.ll
LLVM :: CodeGen/ARM/MachO-subtypes.ll
LLVM :: CodeGen/ARM/MergeConsecutiveStores.ll
LLVM :: CodeGen/ARM/ParallelDSP/multi-use-loads.ll
LLVM :: CodeGen/ARM/ParallelDSP/unroll-n-jam-smlad.ll
LLVM :: CodeGen/ARM/a15-partial-update.ll
LLVM :: CodeGen/ARM/adv-copy-opt.ll
LLVM :: CodeGen/ARM/aes-erratum-fix.ll
LLVM :: CodeGen/ARM/align-sp-adjustment.ll
LLVM :: CodeGen/ARM/and-cmp0-sink.ll
LLVM :: CodeGen/ARM/apcs-vfp.ll
LLVM :: CodeGen/ARM/arm-and-tst-peephole.ll
LLVM :: CodeGen/ARM/arm-half-promote.ll
LLVM :: CodeGen/ARM/arm-negative-stride.ll
LLVM :: CodeGen/ARM/arm-post-indexing-opt.ll
LLVM :: CodeGen/ARM/arm-shrink-wrapping-linux.ll
LLVM :: CodeGen/ARM/arm-shrink-wrapping.ll
LLVM :: CodeGen/ARM/avoid-cpsr-rmw.ll
LLVM :: CodeGen/ARM/branch-on-zero.ll
LLVM :: CodeGen/ARM/call_nolink.ll
LLVM :: CodeGen/ARM/cfi-alignment.ll
LLVM :: CodeGen/ARM/cmpxchg-idioms.ll
LLVM :: CodeGen/ARM/code-placement.ll
LLVM :: CodeGen/ARM/commute-movcc.ll
LLVM :: CodeGen/ARM/consthoist-icmpimm.ll
LLVM :: CodeGen/ARM/copy-cpsr.ll
LLVM :: CodeGen/ARM/crash-greedy-v6.ll
LLVM :: CodeGen/ARM/cse-flags.ll
LLVM :: CodeGen/ARM/cxx-tlscc.ll
LLVM :: CodeGen/ARM/dagcombine-concatvector.ll
LLVM :: CodeGen/ARM/darwin-tls-preserved.ll
LLVM :: CodeGen/ARM/darwin-tls.ll
LLVM :: CodeGen/ARM/dsp-loop-indexing.ll
LLVM :: CodeGen/ARM/eh-resume.ll
LLVM :: CodeGen/ARM/eh-resume2.ll
LLVM :: CodeGen/ARM/fast-isel-vaddd.ll
LLVM :: CodeGen/ARM/fastcc-tailcall.ll
LLVM :: CodeGen/ARM/fp16-vld.ll
LLVM :: CodeGen/ARM/fpclamptosat.ll
LLVM :: CodeGen/ARM/half.ll
LLVM :: CodeGen/ARM/ifconv-regmask.ll
LLVM :: CodeGen/ARM/ifcvt-iter-indbr.ll
LLVM :: CodeGen/ARM/ifcvt-regmask-noreturn.ll
LLVM :: CodeGen/ARM/ifcvt11.ll
LLVM :: CodeGen/ARM/indirect-hidden.ll
LLVM :: CodeGen/ARM/jump-table-islands-split.ll
LLVM :: CodeGen/ARM/large-vector.ll
LLVM :: CodeGen/ARM/ldrd.ll
LLVM :: CodeGen/ARM/ldst-f32-2-i32.ll
LLVM :: CodeGen/ARM/loop-align-cortex-m.ll
LLVM :: CodeGen/ARM/loop-indexing.ll
LLVM :: CodeGen/ARM/lsr-code-insertion.ll
LLVM :: CodeGen/ARM/lsr-icmp-imm.ll
LLVM :: CodeGen/ARM/lsr-scale-addr-mode.ll
LLVM :: CodeGen/ARM/lsr-setupcost.ll
LLVM :: CodeGen/ARM/lsr-unfolded-offset.ll
LLVM :: CodeGen/ARM/machine-licm.ll
LLVM :: CodeGen/ARM/macho-embedded-float.ll
LLVM :: CodeGen/ARM/mbp.ll
LLVM :: CodeGen/ARM/memset-inline.ll
LLVM :: CodeGen/ARM/misched-copy-arm.ll
LLVM :: CodeGen/ARM/neon-spfp.ll
LLVM :: CodeGen/ARM/no-fpscr-liveness.ll
LLVM :: CodeGen/ARM/no-tail-call.ll
LLVM :: CodeGen/ARM/nonreserved-callframe-with-basereg.mir
LLVM :: CodeGen/ARM/optimize-dmbs-v7.ll
LLVM :: CodeGen/ARM/overflow-intrinsic-optimizations.ll
LLVM :: CodeGen/ARM/pr13249.ll
LLVM :: CodeGen/ARM/shifter_operand.ll
LLVM :: CodeGen/ARM/sjlj-prepare-critical-edge.ll
LLVM :: CodeGen/ARM/sjljehprepare-lower-empty-struct.ll
LLVM :: CodeGen/ARM/ssat-unroll-loops.ll
LLVM :: CodeGen/ARM/stack-protector-bmovpcb_call.ll
LLVM :: CodeGen/ARM/static-addr-hoisting.ll
LLVM :: CodeGen/ARM/swift-return.ll
LLVM :: CodeGen/ARM/swift-vldm.ll
LLVM :: CodeGen/ARM/swiftself.ll
LLVM :: CodeGen/ARM/swifttailcc-call.ll
LLVM :: CodeGen/ARM/t2-shrink-ldrpost.ll
LLVM :: CodeGen/ARM/tail-dup-bundle.mir
LLVM :: CodeGen/ARM/tail-dup.ll
LLVM :: CodeGen/ARM/tailcc-call.ll
LLVM :: CodeGen/ARM/tailcc-notail.ll
LLVM :: CodeGen/ARM/test-sharedidx.ll
LLVM :: CodeGen/ARM/thumb-big-stack.ll
LLVM :: CodeGen/ARM/thumb2-size-reduction-internal-flags.ll
LLVM :: CodeGen/ARM/v7k-abi-align.ll
LLVM :: CodeGen/ARM/v7k-libcalls.ll
LLVM :: CodeGen/ARM/v7k-sincos.ll
LLVM :: CodeGen/ARM/vector-load.ll
LLVM :: CodeGen/ARM/vfp-libcalls.ll
LLVM :: CodeGen/ARM/vfp-reg-stride.ll
LLVM :: CodeGen/Thumb/2009-12-17-pre-regalloc-taildup.ll
LLVM :: CodeGen/Thumb/arm_q15_to_q31.ll
LLVM :: CodeGen/Thumb/asmprinter-bug.ll
LLVM :: CodeGen/Thumb/branch-to-return.ll
LLVM :: CodeGen/Thumb/consthoist-physical-addr.ll
LLVM :: CodeGen/Thumb/mvn.ll
LLVM :: CodeGen/Thumb/stm-merge.ll
LLVM :: CodeGen/Thumb/thumb-shrink-wrapping.ll
LLVM :: CodeGen/Thumb/uxth.ll
LLVM :: CodeGen/Thumb2/2009-07-17-CrossRegClassCopy.ll
LLVM :: CodeGen/Thumb2/2009-08-01-WrongLDRBOpc.ll
LLVM :: CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll
LLVM :: CodeGen/Thumb2/2009-12-01-LoopIVUsers.ll
LLVM :: CodeGen/Thumb2/2010-02-11-phi-cycle.ll
LLVM :: CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll
LLVM :: CodeGen/Thumb2/2010-08-10-VarSizedAllocaBug.ll
LLVM :: CodeGen/Thumb2/2012-01-13-CBNZBug.ll
LLVM :: CodeGen/Thumb2/2013-02-19-tail-call-register-hint.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/arm_cmplx_dot_prod_f32.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/cond-vector-reduce-mve-codegen.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/constbound.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/exitcount.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/extending-loads.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/inlineasm.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/loop-guards.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/memcall.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/minloop.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/mov-operand.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/mve-float-loops.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/mve-tail-data-types.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/no-dec-le-simple.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/predicated-liveout-unknown-lanes.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/reductions.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/remat-vctp.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/sibling-loops.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/spillingmove.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tail-pred-disabled-in-loloops.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-add-sat.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-fabs.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-round.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-sub-sat.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/tp-multiple-vpst.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/unpredload.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/varying-outer-2d-reduction.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/vcmp-vpst-combination.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/vector-arith-codegen.ll
LLVM :: CodeGen/Thumb2/LowOverheadLoops/while-loops.ll
LLVM :: CodeGen/Thumb2/active_lane_mask.ll
LLVM :: CodeGen/Thumb2/aligned-nonfallthrough.ll
LLVM :: CodeGen/Thumb2/crash.ll
LLVM :: CodeGen/Thumb2/lsr-deficiency.ll
LLVM :: CodeGen/Thumb2/machine-licm.ll
LLVM :: CodeGen/Thumb2/mve-blockplacement.ll
LLVM :: CodeGen/Thumb2/mve-float16regloops.ll
LLVM :: CodeGen/Thumb2/mve-float32regloops.ll
LLVM :: CodeGen/Thumb2/mve-fma-loops.ll
LLVM :: CodeGen/Thumb2/mve-fp16convertloops.ll
LLVM :: CodeGen/Thumb2/mve-gather-increment.ll
LLVM :: CodeGen/Thumb2/mve-gather-ptrs.ll
LLVM :: CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
LLVM :: CodeGen/Thumb2/mve-gather-scatter-ptr-address.ll
LLVM :: CodeGen/Thumb2/mve-gather-scatter-tailpred.ll
LLVM :: CodeGen/Thumb2/mve-gather-tailpred.ll
LLVM :: CodeGen/Thumb2/mve-laneinterleaving-reduct.ll
LLVM :: CodeGen/Thumb2/mve-memtp-branch.ll
LLVM :: CodeGen/Thumb2/mve-memtp-loop.ll
LLVM :: CodeGen/Thumb2/mve-nounrolledremainder.ll
LLVM :: CodeGen/Thumb2/mve-pipelineloops.ll
LLVM :: CodeGen/Thumb2/mve-postinc-dct.ll
LLVM :: CodeGen/Thumb2/mve-postinc-distribute.ll
LLVM :: CodeGen/Thumb2/mve-postinc-lsr.ll
LLVM :: CodeGen/Thumb2/mve-pred-threshold.ll
LLVM :: CodeGen/Thumb2/mve-pred-vctpvpsel.ll
LLVM :: CodeGen/Thumb2/mve-qrintr.ll
LLVM :: CodeGen/Thumb2/mve-qrintrsplat.ll
LLVM :: CodeGen/Thumb2/mve-satmul-loops.ll
LLVM :: CodeGen/Thumb2/mve-scatter-increment.ll
LLVM :: CodeGen/Thumb2/mve-scatter-ptrs.ll
LLVM :: CodeGen/Thumb2/mve-shifts-scalar.ll
LLVM :: CodeGen/Thumb2/mve-tailpred-loopinvariant.ll
LLVM :: CodeGen/Thumb2/mve-tailpred-nonzerostart.ll
LLVM :: CodeGen/Thumb2/mve-useafterloop.ll
LLVM :: CodeGen/Thumb2/mve-vabdus.ll
LLVM :: CodeGen/Thumb2/mve-vecreduce-loops.ll
LLVM :: CodeGen/Thumb2/mve-vhadd.ll
LLVM :: CodeGen/Thumb2/mve-vldshuffle.ll
LLVM :: CodeGen/Thumb2/mve-vldst4.ll
LLVM :: CodeGen/Thumb2/mve-vmaxnma-commute.ll
LLVM :: CodeGen/Thumb2/mve-vmaxnma-tailpred.ll
LLVM :: CodeGen/Thumb2/mve-vmla.ll
LLVM :: CodeGen/Thumb2/mve-vmovlloop.ll
LLVM :: CodeGen/Thumb2/mve-vmulh.ll
LLVM :: CodeGen/Thumb2/mve-vmull-loop.ll
LLVM :: CodeGen/Thumb2/mve-vqdmulh-minmax.ll
LLVM :: CodeGen/Thumb2/mve-vqdmulh.ll
LLVM :: CodeGen/Thumb2/pacbti-m-varargs-1.ll
LLVM :: CodeGen/Thumb2/pacbti-m-vla.ll
LLVM :: CodeGen/Thumb2/thumb2-cpsr-liveness.ll
LLVM :: CodeGen/Thumb2/v8_IT_6.ll
LLVM :: DebugInfo/ARM/illegal-fragment.ll
LLVM :: DebugInfo/ARM/move-dbg-value-after-value-list.mir
LLVM :: DebugInfo/ARM/move-dbg-value-lists.mir
LLVM :: DebugInfo/ARM/move-dbg-value-same-reg.mir
LLVM :: DebugInfo/ARM/move-dbg-values.mir
LLVM :: DebugInfo/ARM/salvage-debug-info.ll
LLVM :: DebugInfo/ARM/sdag-split-arg.ll
LLVM :: DebugInfo/COFF/ARMNT/arm-register-variables.ll
LLVM :: DebugInfo/MIR/ARM/larger-subregister.mir
LLVM :: DebugInfo/MIR/ARM/split-superreg-complex.mir
LLVM :: DebugInfo/MIR/ARM/split-superreg-piece.mir
LLVM :: DebugInfo/MIR/ARM/split-superreg.mir
LLVM :: DebugInfo/MIR/ARM/subregister-full-piece.mir
LLVM :: Transforms/AtomicExpand/ARM/cmpxchg-weak.ll
LLVM :: Transforms/ConstantHoisting/ARM/const-addr-no-neg-offset.ll
LLVM :: Transforms/ConstantHoisting/ARM/const-hoist-gep-overindexing.ll
LLVM :: Transforms/ConstantHoisting/ARM/const-hoist-gep.ll
LLVM :: Transforms/ConstantHoisting/ARM/is-legal-addressing-imm.ll
LLVM :: Transforms/HardwareLoops/ARM/calls-codegen.ll
LLVM :: Transforms/HardwareLoops/ARM/simple-do.ll
LLVM :: Transforms/HardwareLoops/ARM/structure.ll
LLVM :: Transforms/InstCombine/debuginfo_add.ll
LLVM :: Transforms/InstCombine/ffs-1.ll
LLVM :: Transforms/LoopStrengthReduce/ARM/2012-06-15-lsr-noaddrmode.ll
LLVM :: Transforms/LoopStrengthReduce/ARM/addrec-is-loop-invariant.ll
LLVM :: Transforms/LoopStrengthReduce/ARM/complexity.ll
LLVM :: Transforms/LoopStrengthReduce/ARM/illegal-addr-modes.ll
LLVM :: Transforms/LoopStrengthReduce/ARM/ivchain-ARM.ll
LLVM :: Transforms/LoopStrengthReduce/post-inc-optsize.ll
LLVM :: Transforms/LoopUnroll/ARM/instr-size-costs.ll
LLVM :: Transforms/LoopUnroll/ARM/loop-unrolling.ll
LLVM :: Transforms/LoopUnroll/ARM/multi-blocks.ll
LLVM :: Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll
LLVM :: Transforms/LoopVectorize/ARM/arm-unroll.ll
LLVM :: Transforms/LoopVectorize/ARM/gather-cost.ll
LLVM :: Transforms/LoopVectorize/ARM/gcc-examples.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-gather-scatter-tailpred.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-icmpcost.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-interleaved-cost.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-maskedldst.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-multiexit.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-qabs.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-recurrence.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-reduction-predselect.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-reduction-types.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-reductions.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-selectandorcost.ll
LLVM :: Transforms/LoopVectorize/ARM/mve-vldn.ll
LLVM :: Transforms/LoopVectorize/ARM/pointer_iv.ll
LLVM :: Transforms/LoopVectorize/ARM/prefer-tail-loop-folding.ll
LLVM :: Transforms/LoopVectorize/ARM/scalar-block-cost.ll
LLVM :: Transforms/LoopVectorize/ARM/sphinx.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-fold-multiple-icmps.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-counting-down.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-loop-hint.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-not-allowed.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-prefer-flag.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-reduces-vf.ll
LLVM :: Transforms/LoopVectorize/ARM/tail-folding-reductions-allowed.ll
LLVM :: Transforms/LoopVectorize/ARM/width-detect.ll
LLVM :: Transforms/PhaseOrdering/ARM/arm_mult_q15.ll
Testing Time: 1217.96s
Total Discovered Tests: 101266
Skipped : 64 (0.06%)
Unsupported : 2112 (2.09%)
Passed : 98566 (97.33%)
Expectedly Failed: 257 (0.25%)
Failed : 267 (0.26%)
Example output:
********************
FAIL: LLVM :: CodeGen/ARM/pr13249.ll (67738 of 76835)
******************** TEST 'LLVM :: CodeGen/ARM/pr13249.ll' FAILED ********************
Exit Code: 134
Command Output (stderr):
--
RUN: at line 1: /home/morbo/llvm/llvm-project/build.opt/bin/llc < /home/morbo/llvm/llvm-project/llvm/test/CodeGen/ARM/pr13249.ll -mtriple armv7--linux-gnueabi
+ /home/morbo/llvm/llvm-project/build.opt/bin/llc -mtriple armv7--linux-gnueabi
llc: /home/morbo/llvm/llvm-project/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:3454: bool (anonymous namespace)::LSRInstance::InsertFormula(LSRUse &, unsigned int, const Formula &): Assertion `isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F) && "Formula is illegal"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/morbo/llvm/llvm-project/build.opt/bin/llc -mtriple armv7--linux-gnueabi
1. Running pass 'Function Pass Manager' on module '<stdin>'.
2. Running pass 'Loop Pass Manager' on function '@__strtok_r_1c'
3. Running pass 'Loop Strength Reduction' on basic block '%bb7'
#0 0x000055b7503c13f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x2ed03f8)
#1 0x000055b7503bef9e llvm::sys::RunSignalHandlers() (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x2ecdf9e)
#2 0x000055b7503c1aa8 SignalHandler(int) Signals.cpp:0:0
#3 0x00007f3724e5a510 (/lib/x86_64-linux-gnu/libc.so.6+0x3c510)
#4 0x00007f3724ea80fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f3724e5a472 raise ./signal/../sysdeps/posix/raise.c:27:6
#6 0x00007f3724e444b2 abort ./stdlib/abort.c:81:7
#7 0x00007f3724e443d5 _nl_load_domain ./intl/loadmsgcat.c:1177:9
#8 0x00007f3724e533a2 (/lib/x86_64-linux-gnu/libc.so.6+0x353a2)
#9 0x000055b74ff2f26b (anonymous namespace)::LSRInstance::InsertFormula((anonymous namespace)::LSRUse&, unsigned int, (anonymous namespace)::Formula const&) LoopStrengthReduce.cpp:0:0
#10 0x000055b74ff1285c (anonymous namespace)::LSRInstance::LSRInstance(llvm::Loop*, llvm::IVUsers&, llvm::ScalarEvolution&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::TargetTransformInfo const&, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::MemorySSAUpdater*) LoopStrengthReduce.cpp:0:0
#11 0x000055b74ff08b35 ReduceLoopStrength(llvm::Loop*, llvm::IVUsers&, llvm::ScalarEvolution&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::TargetTransformInfo const&, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::MemorySSA*) LoopStrengthReduce.cpp:0:0
#12 0x000055b74ff39410 (anonymous namespace)::LoopStrengthReduce::runOnLoop(llvm::Loop*, llvm::LPPassManager&) LoopStrengthReduce.cpp:0:0
#13 0x000055b74f4637d0 llvm::LPPassManager::runOnFunction(llvm::Function&) (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x1f727d0)
#14 0x000055b74fd34fa7 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x2843fa7)
#15 0x000055b74fd3d652 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x284c652)
#16 0x000055b74fd35b17 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x2844b17)
#17 0x000055b74dd81ebd main (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x890ebd)
#18 0x00007f3724e456ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#19 0x00007f3724e45785 call_init ./csu/../csu/libc-start.c:128:20
#20 0x00007f3724e45785 __libc_start_main ./csu/../csu/libc-start.c:347:5
#21 0x000055b74dd7c861 _start (/home/morbo/llvm/llvm-project/build.opt/bin/llc+0x88b861)
/home/morbo/llvm/llvm-project/build.opt/test/CodeGen/ARM/Output/pr13249.ll.script: line 1: 1033994 Aborted /home/morbo/llvm/llvm-project/build.opt/bin/llc -mtriple armv7--linux-gnueabi < /home/morbo/llvm/llvm-project/llvm/test/CodeGen/ARM/pr13249.ll
--
I just tried make check-llvm
in my build (d8447c78ab
) and I’m not seeing any failures.
It may be that it was corrected, but over the weekend it was really bad. I was testing on a76adfb99 and got those errors.
This can’t be right. It must be a local change, and that assert is in ReduceLoopStrength which makes it even weirder.
Doesn’t necessarily need to be local code changes, could be different build options?
I just run llvm-check-codegen-arm
on a76adfb99 and everything is clean (Release+Assertions build).
Ok, fair enough, but then we need a more precise report instead of these big imprecise claims. I have also ran tests in a few different configurations and it’s very green.
The only thing I can think of is that the ARM backend hasn’t been built and you’re trying to run the ARM tests? But even then they shouldn’t fail but be reported as unsupported.
Apologies for the lack of information in the original message. I was very irritated by what I felt was an obvious issue. I’m not just imaging that I saw these errors, and there weren’t any changes in my tree to account for the failure (most changes I’ve been doing recently are in the front-end). The only thing I can think of is that my build directory had some stale files in it that weren’t regenerated by TableGen or something.
Been there, done that. Far too many times. I think we all felt it “tingle” when you reported initially.
This is why I’m trying to see if there’s some poltergeist hidden. Even if it’s not your code but it only shows on your tree (ie. local main
build works fine), it could be a latent Clang AST to LLVM IR bug that we never caught it.
We have bots, so the first thing I would do in such cases is go to Buildbot and look at the current state of bots that tracks similar config to mine. If they are all green and I have a problem locally, then it’s worth trying a clean build (like wiping out the build folder and re-running cmake) and chase discrepancies in the make invocation.
In general we revert very fast when bots are broken, so you shouldn’t expect to find the tree in a fully broken state like that for a long time (if there is one test failing in one very specific exotic configuration, it may be another story).
Related - is there a reasonable way to test patches that are expected to work on arm, and do arm specific things, for someone who doesn’t have any arm hardware locally? I’m wondering if qemu is the way to go.
I’ve been relying on Qemu for this, I’m always annoyed about having to set-it-up since I have to do this only once in a while. It’d be great if there was the 5-steps tutorial/recipe of setting up Qemu and building LLVM in there!
I use podman if I need to run tests on other arches, it has qemu supported integrated in so it’s easy for me to setup:
podman run --rm -it quay.io/fedora/fedora:38-aarch64
If you need full system emulation with a Linux kernel, llldb has some instructions for that: Testing LLDB using QEMU - 🐛 LLDB
For when you need a new kernel feature, or you need to use ptrace (which is not handled by qemu-user).
For cross compilation tests that run entirely in Linux userspace I’ve found the qemu userspace emulator quite easy to use.
If you can point qemu-arm (or qemu-aarch64) to the same sysroot that you used to build your program then it usually works without too much trouble.
With a GNU-ARM toolchain providing the sysroot I do something like:
clang --target=arm-linux-gnueabihf --gcc-toolchain=/path/to/arm-linux-gnueabi-toolchain --sysroot=/path/to/arm-linux-gnueabihf-toolchain/arm-linux-gnueabihf/libc (rest of command line)
This can run on qemu-arm with:
qemu-arm -L /path/to/arm-linux-gnueabi-toolchain/arm-linux-gnueabihf/libc
You’ll sometimes need to set the library path (or use rpath) if you are dynamic linking. No need if you are static linking.
If you are doing bare-metal development then you’ll generally need qemu-system-arm with some parameters to do things like enable semihosting. The https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/tree/main/samples has some examples.
Docker using an Arm/AArch64 container is another possibility.