summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Ilseman <milseman@apple.com>2014-11-20 19:33:33 +0000
committerMichael Ilseman <milseman@apple.com>2014-11-20 19:33:33 +0000
commitd6a81614c4390bc34d01300dbd14ed019f150cf8 (patch)
treef8fc75b6da00ae64d5900643cfcef649347aaf13
parent6595839fc5537cf338e61e115dbef4ab5d98bd00 (diff)
downloadbcm5719-llvm-d6a81614c4390bc34d01300dbd14ed019f150cf8.tar.gz
bcm5719-llvm-d6a81614c4390bc34d01300dbd14ed019f150cf8.zip
Compilation test for PostOrderIterator.
If the template specialization for externally managed sets in PostOrderIterator call too far out of sync with each other, this unit test will fail to build. This is especially useful for developers who may not build Clang (the only in-tree user) every time. llvm-svn: 222447
-rw-r--r--llvm/unittests/ADT/CMakeLists.txt1
-rw-r--r--llvm/unittests/ADT/PostOrderIteratorTest.cpp37
2 files changed, 38 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/CMakeLists.txt b/llvm/unittests/ADT/CMakeLists.txt
index 845e8058200..d899852325c 100644
--- a/llvm/unittests/ADT/CMakeLists.txt
+++ b/llvm/unittests/ADT/CMakeLists.txt
@@ -27,6 +27,7 @@ set(ADTSources
PackedVectorTest.cpp
PointerIntPairTest.cpp
PointerUnionTest.cpp
+ PostOrderIteratorTest.cpp
SCCIteratorTest.cpp
SmallPtrSetTest.cpp
SmallStringTest.cpp
diff --git a/llvm/unittests/ADT/PostOrderIteratorTest.cpp b/llvm/unittests/ADT/PostOrderIteratorTest.cpp
new file mode 100644
index 00000000000..1da1078c749
--- /dev/null
+++ b/llvm/unittests/ADT/PostOrderIteratorTest.cpp
@@ -0,0 +1,37 @@
+//===- PostOrderIteratorTest.cpp - PostOrderIterator unit tests -----------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include "gtest/gtest.h"
+#include "llvm/ADT/PostOrderIterator.h"
+#include "llvm/IR/BasicBlock.h"
+#include "llvm/IR/CFG.h"
+using namespace llvm;
+
+namespace {
+
+// Whether we're able to compile
+TEST(PostOrderIteratorTest, Compiles) {
+ typedef SmallPtrSet<void *, 4> ExtSetTy;
+
+ // Tests that template specializations are kept up to date
+ void *Null = nullptr;
+ po_iterator_storage<std::set<void *>, false> PIS;
+ PIS.insertEdge(Null, Null);
+ ExtSetTy Ext;
+ po_iterator_storage<ExtSetTy, true> PISExt(Ext);
+ PIS.insertEdge(Null, Null);
+
+ // Test above, but going through po_iterator (which inherits from template
+ // base)
+ BasicBlock *NullBB = nullptr;
+ auto PI = po_end(NullBB);
+ PI.insertEdge(NullBB, NullBB);
+ auto PIExt = po_ext_end(NullBB, Ext);
+ PIExt.insertEdge(NullBB, NullBB);
+}
+}
OpenPOWER on IntegriCloud