-
Notifications
You must be signed in to change notification settings - Fork 14.5k
Closed
Bug
Copy link
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]vectorizers
Description
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
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]vectorizers