[PATCH] D138977: [IR][NFC] Adds BasicBlock::splice().
Vasileios Porpodas via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 30 13:48:17 PST 2022
vporpo added inline comments.
================
Comment at: llvm/include/llvm/IR/BasicBlock.h:466
+ auto FromItLast = std::next(FromIt);
+ if (ToIt == FromIt || ToIt == FromItLast)
+ return;
----------------
aeubanks wrote:
> vporpo wrote:
> > aeubanks wrote:
> > > aeubanks wrote:
> > > > should add a test for this, e.g. `splice(I1, I2)` where `I1` is right before `I2` in the same block
> > > and does the actual implementation not handle this?
> > I am not sure. Since I am basically calling splice() internally I was relying on it being well tested. But anyway, since this is part of the BB API now, I agree that it needs a test.
> if `getInstList().splice()` already handles this, then I'd say no need for this early return. would be good to double check
I just checked and it won't handle this, but I don't think we can handle this either. The current behavior is that it just crashes when the iterator goes out of bounds as it never finds the End iterator. I added a test that confirms the crash.
I don't think we can handle this any better. We could add a linear-time check to test whether BeginIt is before EndIt, but I am not sure it is worth it. What do you think?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138977/new/
https://reviews.llvm.org/D138977
More information about the llvm-commits
mailing list