projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Eliminate redundant bitwise operations when using a llvm/ADT/PointerUnion.
[oota-llvm.git]
/
include
/
llvm
/
ADT
/
ilist.h
diff --git
a/include/llvm/ADT/ilist.h
b/include/llvm/ADT/ilist.h
index 9eb70055284af0b095195105a0e82133218e7cd7..7f5cd171814201f15586c5cd8b1190c7a9d081d8 100644
(file)
--- a/
include/llvm/ADT/ilist.h
+++ b/
include/llvm/ADT/ilist.h
@@
-38,8
+38,11
@@
#ifndef LLVM_ADT_ILIST_H
#define LLVM_ADT_ILIST_H
#ifndef LLVM_ADT_ILIST_H
#define LLVM_ADT_ILIST_H
-#include "llvm/ADT/iterator.h"
+#include "llvm/Support/Compiler.h"
+#include <algorithm>
#include <cassert>
#include <cassert>
+#include <cstddef>
+#include <iterator>
namespace llvm {
namespace llvm {
@@
-121,15
+124,15
@@
struct ilist_node_traits {
/// for all common operations.
///
template<typename NodeTy>
/// for all common operations.
///
template<typename NodeTy>
-struct ilist_default_traits : ilist_nextprev_traits<NodeTy>,
- ilist_sentinel_traits<NodeTy>,
- ilist_node_traits<NodeTy> {
+struct ilist_default_traits :
public
ilist_nextprev_traits<NodeTy>,
+
public
ilist_sentinel_traits<NodeTy>,
+
public
ilist_node_traits<NodeTy> {
};
// Template traits for intrusive list. By specializing this template class, you
// can change what next/prev fields are used to store the links...
template<typename NodeTy>
};
// Template traits for intrusive list. By specializing this template class, you
// can change what next/prev fields are used to store the links...
template<typename NodeTy>
-struct ilist_traits : ilist_default_traits<NodeTy> {};
+struct ilist_traits :
public
ilist_default_traits<NodeTy> {};
// Const traits are the same as nonconst traits...
template<typename Ty>
// Const traits are the same as nonconst traits...
template<typename Ty>
@@
-140,11
+143,12
@@
struct ilist_traits<const Ty> : public ilist_traits<Ty> {};
//
template<typename NodeTy>
class ilist_iterator
//
template<typename NodeTy>
class ilist_iterator
- : public
bidirectional_iterator<
NodeTy, ptrdiff_t> {
+ : public
std::iterator<std::bidirectional_iterator_tag,
NodeTy, ptrdiff_t> {
public:
typedef ilist_traits<NodeTy> Traits;
public:
typedef ilist_traits<NodeTy> Traits;
- typedef bidirectional_iterator<NodeTy, ptrdiff_t> super;
+ typedef std::iterator<std::bidirectional_iterator_tag,
+ NodeTy, ptrdiff_t> super;
typedef typename super::value_type value_type;
typedef typename super::difference_type difference_type;
typedef typename super::value_type value_type;
typedef typename super::difference_type difference_type;
@@
-189,12
+193,10
@@
public:
// Accessors...
operator pointer() const {
// Accessors...
operator pointer() const {
- assert(Traits::getNext(NodePtr) != 0 && "Dereferencing end()!");
return NodePtr;
}
reference operator*() const {
return NodePtr;
}
reference operator*() const {
- assert(Traits::getNext(NodePtr) != 0 && "Dereferencing end()!");
return *NodePtr;
}
pointer operator->() const { return &operator*(); }
return *NodePtr;
}
pointer operator->() const { return &operator*(); }
@@
-215,7
+217,6
@@
public:
}
ilist_iterator &operator++() { // preincrement - Advance
NodePtr = Traits::getNext(NodePtr);
}
ilist_iterator &operator++() { // preincrement - Advance
NodePtr = Traits::getNext(NodePtr);
- assert(NodePtr && "++'d off the end of an ilist!");
return *this;
}
ilist_iterator operator--(int) { // postdecrement operators...
return *this;
}
ilist_iterator operator--(int) { // postdecrement operators...
@@
-289,7
+290,7
@@
template<typename NodeTy> struct simplify_type<const ilist_iterator<NodeTy> > {
//===----------------------------------------------------------------------===//
//
/// iplist - The subset of list functionality that can safely be used on nodes
//===----------------------------------------------------------------------===//
//
/// iplist - The subset of list functionality that can safely be used on nodes
-/// of polymorphic types, i.e. a heterogenous list with a common base class that
+/// of polymorphic types, i.e. a heterogen
e
ous list with a common base class that
/// holds the next/prev pointers. The only state of the list itself is a single
/// pointer to the head of the list.
///
/// holds the next/prev pointers. The only state of the list itself is a single
/// pointer to the head of the list.
///
@@
-323,16
+324,16
@@
class iplist : public Traits {
/// CreateLazySentinel - This method verifies whether the sentinel for the
/// list has been created and lazily makes it if not.
void CreateLazySentinel() const {
/// CreateLazySentinel - This method verifies whether the sentinel for the
/// list has been created and lazily makes it if not.
void CreateLazySentinel() const {
- this->
Traits::
ensureHead(Head);
+ this->ensureHead(Head);
}
static bool op_less(NodeTy &L, NodeTy &R) { return L < R; }
static bool op_equal(NodeTy &L, NodeTy &R) { return L == R; }
}
static bool op_less(NodeTy &L, NodeTy &R) { return L < R; }
static bool op_equal(NodeTy &L, NodeTy &R) { return L == R; }
- // No fundamental reason why iplist can't b
y
copyable, but the default
+ // No fundamental reason why iplist can't b
e
copyable, but the default
// copy/copy-assign won't do.
// copy/copy-assign won't do.
- iplist(const iplist &)
; // do not implement
- void operator=(const iplist &)
; // do not implement
+ iplist(const iplist &)
LLVM_DELETED_FUNCTION;
+ void operator=(const iplist &)
LLVM_DELETED_FUNCTION;
public:
typedef NodeTy *pointer;
public:
typedef NodeTy *pointer;
@@
-347,7
+348,7
@@
public:
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator;
- iplist() : Head(this->
Traits::
provideInitialHead()) {}
+ iplist() : Head(this->provideInitialHead()) {}
~iplist() {
if (!Head) return;
clear();
~iplist() {
if (!Head) return;
clear();
@@
-481,8
+482,8
@@
private:
L2.setTail(0);
// Remove [first, last) from its old position.
L2.setTail(0);
// Remove [first, last) from its old position.
- NodeTy *First = &*first, *Prev = getPrev(First);
- NodeTy *Next = last.getNodePtrUnchecked(), *Last = getPrev(Next);
+ NodeTy *First = &*first, *Prev =
this->
getPrev(First);
+ NodeTy *Next = last.getNodePtrUnchecked(), *Last =
this->
getPrev(Next);
if (Prev)
this->setNext(Prev, Next);
else
if (Prev)
this->setNext(Prev, Next);
else
@@
-491,7
+492,7
@@
private:
// Splice [first, last) into its new position.
NodeTy *PosNext = position.getNodePtrUnchecked();
// Splice [first, last) into its new position.
NodeTy *PosNext = position.getNodePtrUnchecked();
- NodeTy *PosPrev = getPrev(PosNext);
+ NodeTy *PosPrev =
this->
getPrev(PosNext);
// Fix head of list...
if (PosPrev)
// Fix head of list...
if (PosPrev)
@@
-504,7
+505,7
@@
private:
this->setNext(Last, PosNext);
this->setPrev(PosNext, Last);
this->setNext(Last, PosNext);
this->setPrev(PosNext, Last);
- transferNodesFromList(L2, First, PosNext);
+ t
his->t
ransferNodesFromList(L2, First, PosNext);
// Now that everything is set, restore the pointers to the list sentinels.
L2.setTail(L2Sentinel);
// Now that everything is set, restore the pointers to the list sentinels.
L2.setTail(L2Sentinel);
@@
-615,7
+616,6
@@
public:
template<class Pr3> void sort(Pr3 pred);
void sort() { sort(op_less); }
template<class Pr3> void sort(Pr3 pred);
void sort() { sort(op_less); }
- void reverse();
};
};
@@
-645,7
+645,7
@@
struct ilist : public iplist<NodeTy> {
// Main implementation here - Insert for a node passed by value...
iterator insert(iterator where, const NodeTy &val) {
// Main implementation here - Insert for a node passed by value...
iterator insert(iterator where, const NodeTy &val) {
- return insert(where, createNode(val));
+ return insert(where,
this->
createNode(val));
}
}
@@
-653,10
+653,6
@@
struct ilist : public iplist<NodeTy> {
void push_front(const NodeTy &val) { insert(this->begin(), val); }
void push_back(const NodeTy &val) { insert(this->end(), val); }
void push_front(const NodeTy &val) { insert(this->begin(), val); }
void push_back(const NodeTy &val) { insert(this->end(), val); }
- // Special forms of insert...
- template<class InIt> void insert(iterator where, InIt first, InIt last) {
- for (; first != last; ++first) insert(where, *first);
- }
void insert(iterator where, size_type count, const NodeTy &val) {
for (; count != 0; --count) insert(where, val);
}
void insert(iterator where, size_type count, const NodeTy &val) {
for (; count != 0; --count) insert(where, val);
}