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