[PATCH] D76992: [VPlan] Add & use VPValue operands for VPWidenRecipe (NFC).
Benjamin Kramer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 24 03:13:06 PDT 2020
bkramer added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:4291
+ Value *A = State.get(User.getOperand(0), Part);
+ Value *B = State.get(User.getOperand(1), Part);
Value *C = nullptr;
----------------
mehdi_amini wrote:
> mehdi_amini wrote:
> > FYI XLA generated IR triggers a crash here.
> >
> > I have the IR right before the pass (I can share it, this is the public XLA test-suite) but I can't reproduce with `opt -loop-vectorize` (I suspect some TTI/TLI settings are affecting this).
> >
> > I don't really understand this code so I couldn't debug it right now but in gdb:
> > ```
> > (gdb) call User.getUnderlyingValue()
> > $13 = (llvm::Value *) 0x0
> > (gdb) call User.getOperand(0)->getUnderlyingValue()->dump()
> > %reduce-window.10.clone.invar_address.dim.3.016 = phi i64 [ %bc.resume.val, %scalar.ph ], [ %invar.inc3, %reduce-window.10.clone.inner.loop_exit.window.0 ]
> > (gdb) call User.getOperand(1)->getUnderlyingValue()->dump()
> > i64 13
> > (gdb) p Part
> > $14 = 0
> > ```
> >
> > I'll likely revert while we're trying to extract a minimum reproducer. Let me know if you have any advice for this?
> >
> While I have a gdb session opened:
>
> ```
> #0 llvm::Value::getType (this=0x0) at llvm/include/llvm/IR/Value.h:244
> #1 0x0000555596796922 in llvm::InnerLoopVectorizer::getOrCreateVectorValue (this=0x7fffee60fae0, V=0x0, Part=0) at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:2020
> #2 0x00005555967b1a87 in llvm::LoopVectorizationPlanner::VPCallbackILV::getOrCreateVectorValues (this=0x7fffee60f8a8, V=0x0, Part=0)
> at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7376
> #3 0x00005555967bd8fd in llvm::VPTransformState::get (this=0x7fffee60f770, Def=0x37e73a4572d0, Part=0) at llvm/lib/Transforms/Vectorize/VPlan.h:270
> #4 0x00005555967a211e in llvm::InnerLoopVectorizer::widenInstruction (this=0x7fffee60fae0, I=..., User=..., State=...) at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:4292
> #5 0x00005555967b1d65 in llvm::VPWidenRecipe::execute (this=0x37e73a450b60, State=...) at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7412
> #6 0x00005555968488a0 in llvm::VPBasicBlock::execute (this=0x37e73aa4c360, State=0x7fffee60f770) at llvm/lib/Transforms/Vectorize/VPlan.cpp:240
> #7 0x0000555596849c71 in llvm::VPlan::execute (this=0x37e73cbcc260, State=0x7fffee60f770) at llvm/lib/Transforms/Vectorize/VPlan.cpp:476
> #8 0x00005555967ae456 in llvm::LoopVectorizationPlanner::executePlan (this=0x7fffee610080, ILV=..., DT=0x37e73b2db0c0) at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:6612
> #9 0x00005555967b4181 in llvm::LoopVectorizePass::processLoop (this=0x37e73c142860, L=0x37e73cc9d2a0) at llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7919
> ```
https://reviews.llvm.org/P8215 crashes when run through `opt -O3`. Sadly bugpoint doesn't seem to like it so it's a huge test case.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D76992/new/
https://reviews.llvm.org/D76992
More information about the llvm-commits
mailing list