...and then there was one. Only one copy of 'iterators.h' in the test tree for libc++

llvm-svn: 171479
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
index c9339cf..135293d 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
index 01b9805..5827171 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
index da3ff64..6e94cd9 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct Pred
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
index a6ad030..cb75591 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
index 01bef66..7960800 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
index 90024d3..309d8a9 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp
index 26e7974..bdf6acc 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct gen_test
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp
index dd06d7b..64c6b00 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct gen_test
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.move/move.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
index b0bca0d..4eb6e91 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
@@ -20,7 +20,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
index 39ff05c..6458437 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
@@ -20,7 +20,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
index 322a4b9..2f7c026 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct is_odd
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp
index 53dc274..81fb407 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp
@@ -21,7 +21,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct is_odd
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
index d93a4b7..8c28bdf 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct is_odd
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
index 25c3303..6056576 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct is_odd
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp
index a940107..41bb315 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp
@@ -21,7 +21,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct is_odd
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
index 15b9b16..8ca008f 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
@@ -21,7 +21,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
index 8c765d8..1bb2e63 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
index 93004de..7fb1d04 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
index f4f7a74..7493b87 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
@@ -22,7 +22,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
index efa9317..3a4f3bf 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
index 4961934..02bf2aa 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
@@ -20,7 +20,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
index e936dd3..d8c142e 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
@@ -21,7 +21,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
index e2adf00..a22e7fa 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
@@ -20,7 +20,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp
index d818333..4656a9d 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
index 0922dc6..e6ffd4d 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp
index d7d8ca2..949bb5c 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp
@@ -19,7 +19,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
index 426b457..b8a764d 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp
index 493f65b..9366564 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp
@@ -20,7 +20,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template<class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
index b4dde51..95455ff 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template<class InIter1, class InIter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
index 44ac492..9c9c0d2 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
index 931a565..ca6eee6 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
@@ -21,7 +21,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
index f68622c..e3a59b8 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
@@ -20,7 +20,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
index 9feab5c..2e62ab6 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
@@ -21,7 +21,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct count_equal
 {
diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
index bc33f47..58df57d 100644
--- a/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
@@ -21,7 +21,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct count_equal
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
index d0ceba0..e1b3298 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
index 99440d5..d488611 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
index d4bfe34..7c900a7 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct test1
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
index f29932b..dd3de59 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct test1
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.count/count.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.count/count.pass.cpp
index 555993a..39ecfb2 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.count/count.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.count/count.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
index cc66445..33118c9 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
index 6bae45e..d77e1e3 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
index 58ce597..bb3c947 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
index 4f9fa4c..bdf9edc 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
index f485c99..1bd7509 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct count_equal
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
index b88bfc4..31816a0 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
index e47b3ad..54957f3 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
index 0024b44..a078f06 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
index e3bb29c..321e0c2 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
index 36eb7dd..6c70631 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp
index b6b6d48..a3e3c6c 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct for_each_test
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
index 7c9c247..6f17853 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
index cfb1249..e0125d5 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
index e76fac2..89fbb84 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct test1
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.search/search.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
index 2797e65..0a7e5c7 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
index c0118e2..193fc57 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct count_equal
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
index fa9c6f8..0ab71de 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp
index dcf7a28..ea842a62 100644
--- a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp
+++ b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp
index 8f2dc51..bf1c5dd 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp
@@ -19,7 +19,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp
index 44d792f..2860955 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp
@@ -20,7 +20,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp
index dc77dc5..e15c9c1 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp
@@ -19,7 +19,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp
index 5c95e8b..cd17c4c 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp
@@ -20,7 +20,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp
index 5a9be20..804f65d 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp
@@ -18,7 +18,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp
index aba62da..f68c670 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp
@@ -19,7 +19,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp
index b6aa17e..9c4ee64 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp
@@ -18,7 +18,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp
index 319e6dd..abc7d88 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp
@@ -19,7 +19,7 @@
 #include <vector>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
index b306a31..f3b294f 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
index de5253f..1c78a50 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
@@ -20,7 +20,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp
index d8c5221..f4317eb 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp
index 091068c..7bc0809 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp
@@ -30,7 +30,7 @@
 
 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.merge/merge.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.merge/merge.pass.cpp
index 97bc7a8..0536813 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.merge/merge.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.merge/merge.pass.cpp
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter1, class InIter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
index 5ae3805..77c0727 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
@@ -22,7 +22,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter1, class InIter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp
index 3e7d5d7..4681041 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp
index fe03492..d4bde65 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp
index c20d061..cba4813 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp
index c6b8539..6987298 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp
index 4e19bea..daf1990 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp
index f278df6..6bd532d 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp
index ea8acb5..422f6e7 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 #include <cstdio>
 
diff --git a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp
index 2772300..caea596 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 #include <cstdio>
 
diff --git a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp
index 9966577..ddff3ba 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 #include <cstdio>
 
diff --git a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp
index c4ed098..220c8d6 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 #include <cstdio>
 
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp
index 9cc04cb..ab9df3e 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp
index 137d64e..cc904f6 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp
@@ -19,7 +19,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp
index 316b998..1f7001a 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp
@@ -21,7 +21,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp
index 371ee70..6217c45 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp
@@ -23,7 +23,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
index c1093316..eea9972 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
@@ -21,7 +21,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
index 7e68e81..7f02ffd 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
@@ -23,7 +23,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp
index 9d8f7ac..46a5648 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp
@@ -22,7 +22,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp
index f73ce33..ae880e4 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp
@@ -24,7 +24,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
index 2ee894b..8b18c50 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
@@ -21,7 +21,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
index 6ddcc14..0051e27 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
@@ -23,7 +23,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
index b473dda..af75647 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
index 9ca390f..cdeb3cd 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
index 5c55172..8dc1f83 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
index c055641..2e445cf 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp
index c7f714f..577dd92 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp
@@ -20,7 +20,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp b/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp
index adf51c5..a075d02 100644
--- a/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp
+++ b/libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp
@@ -23,7 +23,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/iterators.h b/libcxx/test/algorithms/iterators.h
deleted file mode 100644
index 539a9a4..0000000
--- a/libcxx/test/algorithms/iterators.h
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifndef ITERATORS_H
-#define ITERATORS_H
-
-#include <iterator>
-
-template <class It>
-class output_iterator
-{
-    It it_;
-
-    template <class U> friend class output_iterator;
-public:
-    typedef          std::output_iterator_tag                  iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit output_iterator(It it) : it_(it) {}
-    template <class U>
-        output_iterator(const output_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-
-    output_iterator& operator++() {++it_; return *this;}
-    output_iterator operator++(int)
-        {output_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class Iter>
-inline
-Iter
-base(output_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class input_iterator
-{
-    It it_;
-
-    template <class U> friend class input_iterator;
-public:
-    typedef          std::input_iterator_tag                   iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit input_iterator(It it) : it_(it) {}
-    template <class U>
-        input_iterator(const input_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    input_iterator& operator++() {++it_; return *this;}
-    input_iterator operator++(int)
-        {input_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(input_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class forward_iterator
-{
-    It it_;
-
-    template <class U> friend class forward_iterator;
-public:
-    typedef          std::forward_iterator_tag                 iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    forward_iterator() : it_() {}
-    explicit forward_iterator(It it) : it_(it) {}
-    template <class U>
-        forward_iterator(const forward_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    forward_iterator& operator++() {++it_; return *this;}
-    forward_iterator operator++(int)
-        {forward_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(forward_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class bidirectional_iterator
-{
-    It it_;
-
-    template <class U> friend class bidirectional_iterator;
-public:
-    typedef          std::bidirectional_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    bidirectional_iterator() : it_() {}
-    explicit bidirectional_iterator(It it) : it_(it) {}
-    template <class U>
-        bidirectional_iterator(const bidirectional_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    bidirectional_iterator& operator++() {++it_; return *this;}
-    bidirectional_iterator operator++(int)
-        {bidirectional_iterator tmp(*this); ++(*this); return tmp;}
-
-    bidirectional_iterator& operator--() {--it_; return *this;}
-    bidirectional_iterator operator--(int)
-        {bidirectional_iterator tmp(*this); --(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(bidirectional_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class random_access_iterator
-{
-    It it_;
-
-    template <class U> friend class random_access_iterator;
-public:
-    typedef          std::random_access_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    random_access_iterator() : it_() {}
-    explicit random_access_iterator(It it) : it_(it) {}
-   template <class U>
-        random_access_iterator(const random_access_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    random_access_iterator& operator++() {++it_; return *this;}
-    random_access_iterator operator++(int)
-        {random_access_iterator tmp(*this); ++(*this); return tmp;}
-
-    random_access_iterator& operator--() {--it_; return *this;}
-    random_access_iterator operator--(int)
-        {random_access_iterator tmp(*this); --(*this); return tmp;}
-
-    random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
-    random_access_iterator operator+(difference_type n) const
-        {random_access_iterator tmp(*this); tmp += n; return tmp;}
-    friend random_access_iterator operator+(difference_type n, random_access_iterator x)
-        {x += n; return x;}
-    random_access_iterator& operator-=(difference_type n) {return *this += -n;}
-    random_access_iterator operator-(difference_type n) const
-        {random_access_iterator tmp(*this); tmp -= n; return tmp;}
-
-    reference operator[](difference_type n) const {return it_[n];}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class T, class U>
-inline
-bool
-operator<(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() < y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator<=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(y < x);
-}
-
-template <class T, class U>
-inline
-bool
-operator>(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return y < x;
-}
-
-template <class T, class U>
-inline
-bool
-operator>=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x < y);
-}
-
-template <class T, class U>
-inline
-typename std::iterator_traits<T>::difference_type
-operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() - y.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(random_access_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(Iter i)
-{
-    return i;
-}
-
-#endif  // ITERATORS_H
diff --git a/libcxx/test/iterators.h b/libcxx/test/iterators.h
index 167ed0b..6b3d3d1 100644
--- a/libcxx/test/iterators.h
+++ b/libcxx/test/iterators.h
@@ -275,4 +275,22 @@
     return x.base() - y.base();
 }
 
+template <class Iter>
+inline Iter base(output_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(input_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(forward_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(bidirectional_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(random_access_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>	// everything else
+inline Iter base(Iter i) { return i; }
+
 #endif  // ITERATORS_H
diff --git a/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp b/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp
index 9a5e055..6a370a8 100644
--- a/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp
+++ b/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp
@@ -29,16 +29,16 @@
     assert(r1.base() == u);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<input_iterator<base*> >(input_iterator<derived*>(&d));
-    test<forward_iterator<base*> >(forward_iterator<derived*>(&d));
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<input_iterator<Base*> >(input_iterator<Derived*>(&d));
+    test<forward_iterator<Base*> >(forward_iterator<Derived*>(&d));
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
diff --git a/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp b/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp
index 262b2d5..919302c 100644
--- a/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp
+++ b/libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp
@@ -32,16 +32,16 @@
     assert(&rr == &r1);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<input_iterator<base*> >(input_iterator<derived*>(&d));
-    test<forward_iterator<base*> >(forward_iterator<derived*>(&d));
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<input_iterator<Base*> >(input_iterator<Derived*>(&d));
+    test<forward_iterator<Base*> >(forward_iterator<Derived*>(&d));
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
diff --git a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp
index 383200a..ef3382f 100644
--- a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp
+++ b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp
@@ -29,14 +29,14 @@
     assert(r1.base() == u);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
diff --git a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp
index 3d4b416..dc20326 100644
--- a/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp
+++ b/libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp
@@ -32,14 +32,14 @@
     assert(&rr == &r1);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
diff --git a/libcxx/test/numerics/numeric.ops/accumulate/accumulate.pass.cpp b/libcxx/test/numerics/numeric.ops/accumulate/accumulate.pass.cpp
index a3a03b5..d6b303b 100644
--- a/libcxx/test/numerics/numeric.ops/accumulate/accumulate.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/accumulate/accumulate.pass.cpp
@@ -18,7 +18,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp b/libcxx/test/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp
index b7ed40f..53f460b 100644
--- a/libcxx/test/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp
@@ -20,7 +20,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter, class T>
 void
diff --git a/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp b/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp
index 36bda6c..7eccaeb 100644
--- a/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp
@@ -22,7 +22,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp b/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp
index f5a6124..bba7161 100644
--- a/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp
@@ -23,7 +23,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/numerics/numeric.ops/inner.product/inner_product.pass.cpp b/libcxx/test/numerics/numeric.ops/inner.product/inner_product.pass.cpp
index 06df32d..d23af2f 100644
--- a/libcxx/test/numerics/numeric.ops/inner.product/inner_product.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/inner.product/inner_product.pass.cpp
@@ -22,7 +22,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2, class T>
 void
diff --git a/libcxx/test/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp b/libcxx/test/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp
index f720bb6..cf6f9c4 100644
--- a/libcxx/test/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp
@@ -24,7 +24,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2, class T>
 void
diff --git a/libcxx/test/numerics/numeric.ops/iterators.h b/libcxx/test/numerics/numeric.ops/iterators.h
deleted file mode 100644
index 539a9a4..0000000
--- a/libcxx/test/numerics/numeric.ops/iterators.h
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifndef ITERATORS_H
-#define ITERATORS_H
-
-#include <iterator>
-
-template <class It>
-class output_iterator
-{
-    It it_;
-
-    template <class U> friend class output_iterator;
-public:
-    typedef          std::output_iterator_tag                  iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit output_iterator(It it) : it_(it) {}
-    template <class U>
-        output_iterator(const output_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-
-    output_iterator& operator++() {++it_; return *this;}
-    output_iterator operator++(int)
-        {output_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class Iter>
-inline
-Iter
-base(output_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class input_iterator
-{
-    It it_;
-
-    template <class U> friend class input_iterator;
-public:
-    typedef          std::input_iterator_tag                   iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit input_iterator(It it) : it_(it) {}
-    template <class U>
-        input_iterator(const input_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    input_iterator& operator++() {++it_; return *this;}
-    input_iterator operator++(int)
-        {input_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(input_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class forward_iterator
-{
-    It it_;
-
-    template <class U> friend class forward_iterator;
-public:
-    typedef          std::forward_iterator_tag                 iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    forward_iterator() : it_() {}
-    explicit forward_iterator(It it) : it_(it) {}
-    template <class U>
-        forward_iterator(const forward_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    forward_iterator& operator++() {++it_; return *this;}
-    forward_iterator operator++(int)
-        {forward_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(forward_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class bidirectional_iterator
-{
-    It it_;
-
-    template <class U> friend class bidirectional_iterator;
-public:
-    typedef          std::bidirectional_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    bidirectional_iterator() : it_() {}
-    explicit bidirectional_iterator(It it) : it_(it) {}
-    template <class U>
-        bidirectional_iterator(const bidirectional_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    bidirectional_iterator& operator++() {++it_; return *this;}
-    bidirectional_iterator operator++(int)
-        {bidirectional_iterator tmp(*this); ++(*this); return tmp;}
-
-    bidirectional_iterator& operator--() {--it_; return *this;}
-    bidirectional_iterator operator--(int)
-        {bidirectional_iterator tmp(*this); --(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(bidirectional_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class random_access_iterator
-{
-    It it_;
-
-    template <class U> friend class random_access_iterator;
-public:
-    typedef          std::random_access_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    random_access_iterator() : it_() {}
-    explicit random_access_iterator(It it) : it_(it) {}
-   template <class U>
-        random_access_iterator(const random_access_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    random_access_iterator& operator++() {++it_; return *this;}
-    random_access_iterator operator++(int)
-        {random_access_iterator tmp(*this); ++(*this); return tmp;}
-
-    random_access_iterator& operator--() {--it_; return *this;}
-    random_access_iterator operator--(int)
-        {random_access_iterator tmp(*this); --(*this); return tmp;}
-
-    random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
-    random_access_iterator operator+(difference_type n) const
-        {random_access_iterator tmp(*this); tmp += n; return tmp;}
-    friend random_access_iterator operator+(difference_type n, random_access_iterator x)
-        {x += n; return x;}
-    random_access_iterator& operator-=(difference_type n) {return *this += -n;}
-    random_access_iterator operator-(difference_type n) const
-        {random_access_iterator tmp(*this); tmp -= n; return tmp;}
-
-    reference operator[](difference_type n) const {return it_[n];}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class T, class U>
-inline
-bool
-operator<(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() < y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator<=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(y < x);
-}
-
-template <class T, class U>
-inline
-bool
-operator>(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return y < x;
-}
-
-template <class T, class U>
-inline
-bool
-operator>=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x < y);
-}
-
-template <class T, class U>
-inline
-typename std::iterator_traits<T>::difference_type
-operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() - y.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(random_access_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(Iter i)
-{
-    return i;
-}
-
-#endif  // ITERATORS_H
diff --git a/libcxx/test/numerics/numeric.ops/numeric.iota/iota.pass.cpp b/libcxx/test/numerics/numeric.ops/numeric.iota/iota.pass.cpp
index d165b11..84f7830 100644
--- a/libcxx/test/numerics/numeric.ops/numeric.iota/iota.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/numeric.iota/iota.pass.cpp
@@ -15,7 +15,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter>
 void
diff --git a/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp b/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
index 6fb4c09..5d990a2 100644
--- a/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
@@ -20,7 +20,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
diff --git a/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp b/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
index c0f83bf..3c3f403 100644
--- a/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
+++ b/libcxx/test/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp
@@ -22,7 +22,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void