-
Notifications
You must be signed in to change notification settings - Fork 15k
Closed
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]llvm:optimizations
Description
I found an IR that causes SimpleLoopUnswitch to crash as follows:
$ opt -passes=simple-loop-unswitch'<nontrivial>' simple-loop-unswitch-crash.ll --disable-output
opt: /home/yrouban/work/llvm-project/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp:2113: void unswitchNontrivialInvariants(llvm::Loop&, llvm::Instruction&,
llvm::ArrayRef<llvm::Value*>, llvm::IVConditionInfo&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::function_ref<void(bool, bool, llvm::A
rrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void(llvm::Loop&, llvm::StringRef)>): Assertion `((match(Cond, m_Log
icalAnd()) ^ match(Cond, m_LogicalOr())) || PartiallyInvariant) && "Only `or`, `and`, an `select`, partially invariant instructions " "can combine invariants be
ing unswitched."' failed.
Metadata
Metadata
Assignees
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]llvm:optimizations