1*d6a81614SMichael Ilseman //===- PostOrderIteratorTest.cpp - PostOrderIterator unit tests -----------===//
2*d6a81614SMichael Ilseman //
3*d6a81614SMichael Ilseman //                     The LLVM Compiler Infrastructure
4*d6a81614SMichael Ilseman //
5*d6a81614SMichael Ilseman // This file is distributed under the University of Illinois Open Source
6*d6a81614SMichael Ilseman // License. See LICENSE.TXT for details.
7*d6a81614SMichael Ilseman //
8*d6a81614SMichael Ilseman //===----------------------------------------------------------------------===//
9*d6a81614SMichael Ilseman #include "gtest/gtest.h"
10*d6a81614SMichael Ilseman #include "llvm/ADT/PostOrderIterator.h"
11*d6a81614SMichael Ilseman #include "llvm/IR/BasicBlock.h"
12*d6a81614SMichael Ilseman #include "llvm/IR/CFG.h"
13*d6a81614SMichael Ilseman using namespace llvm;
14*d6a81614SMichael Ilseman 
15*d6a81614SMichael Ilseman namespace {
16*d6a81614SMichael Ilseman 
17*d6a81614SMichael Ilseman // Whether we're able to compile
18*d6a81614SMichael Ilseman TEST(PostOrderIteratorTest, Compiles) {
19*d6a81614SMichael Ilseman   typedef SmallPtrSet<void *, 4> ExtSetTy;
20*d6a81614SMichael Ilseman 
21*d6a81614SMichael Ilseman   // Tests that template specializations are kept up to date
22*d6a81614SMichael Ilseman   void *Null = nullptr;
23*d6a81614SMichael Ilseman   po_iterator_storage<std::set<void *>, false> PIS;
24*d6a81614SMichael Ilseman   PIS.insertEdge(Null, Null);
25*d6a81614SMichael Ilseman   ExtSetTy Ext;
26*d6a81614SMichael Ilseman   po_iterator_storage<ExtSetTy, true> PISExt(Ext);
27*d6a81614SMichael Ilseman   PIS.insertEdge(Null, Null);
28*d6a81614SMichael Ilseman 
29*d6a81614SMichael Ilseman   // Test above, but going through po_iterator (which inherits from template
30*d6a81614SMichael Ilseman   // base)
31*d6a81614SMichael Ilseman   BasicBlock *NullBB = nullptr;
32*d6a81614SMichael Ilseman   auto PI = po_end(NullBB);
33*d6a81614SMichael Ilseman   PI.insertEdge(NullBB, NullBB);
34*d6a81614SMichael Ilseman   auto PIExt = po_ext_end(NullBB, Ext);
35*d6a81614SMichael Ilseman   PIExt.insertEdge(NullBB, NullBB);
36*d6a81614SMichael Ilseman }
37*d6a81614SMichael Ilseman }
38