diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-08-30 18:00:45 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-08-30 18:00:45 +0000 |
commit | b7668d516443231cba62e29786463587b61f90bb (patch) | |
tree | 8d1976971db0032d456bf94fac85fd95c14a1883 /llvm/lib | |
parent | 63f71057c0671ed3d06a9e939b7c360996d45623 (diff) | |
download | bcm5719-llvm-b7668d516443231cba62e29786463587b61f90bb.tar.gz bcm5719-llvm-b7668d516443231cba62e29786463587b61f90bb.zip |
ADT: Guarantee transferNodesFromList is only called on transfers
Guarantee that ilist_traits<T>::transferNodesFromList is only called
when nodes are actually changing lists.
I also moved all the callbacks to occur *first*, before the operation.
This is the only choice for iplist<T>::merge, so we might as well be
consistent. I expect this to have no effect in practice, although it
simplifies the logic in both iplist<T>::transfer and iplist<T>::insert.
llvm-svn: 280122
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/IR/SymbolTableListTraitsImpl.h | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index 29f3594ddae..8d34360b331 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -122,9 +122,8 @@ transferNodesFromList(ilist_traits<MachineInstr> &FromList, ilist_iterator<MachineInstr> Last) { assert(Parent->getParent() == FromList.Parent->getParent() && "MachineInstr parent mismatch!"); - - // Splice within the same MBB -> no change. - if (Parent == FromList.Parent) return; + assert(this != &FromList && "Called without a real transfer..."); + assert(Parent != FromList.Parent && "Two lists have the same parent?"); // If splicing between two blocks within the same function, just update the // parent pointers. diff --git a/llvm/lib/IR/SymbolTableListTraitsImpl.h b/llvm/lib/IR/SymbolTableListTraitsImpl.h index 50573d8d688..a55cf6a35a0 100644 --- a/llvm/lib/IR/SymbolTableListTraitsImpl.h +++ b/llvm/lib/IR/SymbolTableListTraitsImpl.h @@ -85,7 +85,7 @@ void SymbolTableListTraits<ValueSubClass>::transferNodesFromList( ilist_iterator<ValueSubClass> last) { // We only have to do work here if transferring instructions between BBs ItemParentClass *NewIP = getListOwner(), *OldIP = L2.getListOwner(); - if (NewIP == OldIP) return; // No work to do at all... + assert(NewIP != OldIP && "Expected different list owners"); // We only have to update symbol table entries if we are transferring the // instructions to a different symtab object... |