Skip to content

[LV]: Assertion `EPResumeVal && "must have a resume value for the canonical IV"' failed. #149726

@sjoerdmeijer

Description

@sjoerdmeijer

See also https://godbolt.org/z/Tdj56eqKj

This input:

char a, e;
short b;
extern short c[];
long long d[16];
long long *f;
void g(bool h[][9][9]) {
#pragma clang loop interleave(enable)
  for (short i = 0; i < 16; i += 2) {
    c[i] = f[i];
    for (short m = 0; m < 016; m += 4)
      for (int j = 2; j < 15; j++)
        d[j] = e;
  }
  for (short k = 0; k < 9; k++)
    for (short l = 0; l < 19; l += 1) {
      a = 0;
      for (int n = 2; n; n += 4U)
        b = h[k][k][4];
    }
}

Crashes SCEV:

clang++: warning: argument '-Ofast' is deprecated; use '-O3 -ffast-math' for the same behavior, or '-O3' to enable only conforming optimizations [-Wdeprecated-ofast]
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /opt/compiler-explorer/clang-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -fno-verbose-asm -S -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-12.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-12.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot -fcolor-diagnostics -fno-crash-diagnostics -std=c++11 -Ofast -mcpu=grace <source>
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "<source>"
4.	Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "_Z1gPA9_A9_b"
 #0 0x0000000003c90a38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c90a38)
 #1 0x0000000003c8e40c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3c8e40c)
 #2 0x0000000003bde738 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007ad6cd242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000002c7c69e simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) InstructionSimplify.cpp:0:0
 #5 0x0000000002c7cdaf llvm::simplifyInstruction(llvm::Instruction*, llvm::SimplifyQuery const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2c7cdaf)
 #6 0x0000000002d85d3a llvm::ScalarEvolution::createNodeForPHI(llvm::PHINode*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d85d3a)
 #7 0x0000000002d86d7c llvm::ScalarEvolution::createSCEV(llvm::Value*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d86d7c)
 #8 0x0000000002d87bdd llvm::ScalarEvolution::createSCEVIter(llvm::Value*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2d87bdd)
 #9 0x0000000002db0580 llvm::ScalarEvolution::LoopGuards::collectFromBlock(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db0580)
#10 0x0000000002db24aa llvm::ScalarEvolution::LoopGuards::collectFromPHI(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::PHINode const&, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, llvm::SmallDenseMap<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards, 4u, llvm::DenseMapInfo<llvm::BasicBlock const*, void>, llvm::detail::DenseMapPair<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards>>&, unsigned int)::'lambda'(unsigned int)::operator()(unsigned int) const ScalarEvolution.cpp:0:0
#11 0x0000000002db2672 llvm::ScalarEvolution::LoopGuards::collectFromPHI(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::PHINode const&, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, llvm::SmallDenseMap<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards, 4u, llvm::DenseMapInfo<llvm::BasicBlock const*, void>, llvm::detail::DenseMapPair<llvm::BasicBlock const*, llvm::ScalarEvolution::LoopGuards>>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db2672)
#12 0x0000000002db1a30 llvm::ScalarEvolution::LoopGuards::collectFromBlock(llvm::ScalarEvolution&, llvm::ScalarEvolution::LoopGuards&, llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::SmallPtrSetImpl<llvm::BasicBlock const*>&, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db1a30)
#13 0x0000000002db2aa9 llvm::ScalarEvolution::applyLoopGuards(llvm::SCEV const*, llvm::Loop const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2db2aa9)
#14 0x00000000057072bc llvm::LoopVectorizationCostModel::computeMaxVF(llvm::ElementCount, unsigned int)::'lambda'(unsigned int)::operator()(unsigned int) const (.isra.0) LoopVectorize.cpp:0:0
#15 0x000000000572af63 llvm::LoopVectorizationCostModel::computeMaxVF(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x572af63)
#16 0x000000000574d51b llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x574d51b)

Metadata

Metadata

Assignees

No one assigned

    Labels

    crashPrefer [crash-on-valid] or [crash-on-invalid]vectorizers

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions