//===- 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 "llvm/ADT/PostOrderIterator.h" #include "llvm/IR/BasicBlock.h" #include "llvm/IR/CFG.h" #include "gtest/gtest.h" using namespace llvm; namespace { // Whether we're able to compile TEST(PostOrderIteratorTest, Compiles) { typedef SmallPtrSet ExtSetTy; // Tests that template specializations are kept up to date void *Null = nullptr; po_iterator_storage, false> PIS; PIS.insertEdge(Optional(), Null); ExtSetTy Ext; po_iterator_storage PISExt(Ext); PIS.insertEdge(Optional(), Null); // Test above, but going through po_iterator (which inherits from template // base) BasicBlock *NullBB = nullptr; auto PI = po_end(NullBB); PI.insertEdge(Optional(), NullBB); auto PIExt = po_ext_end(NullBB, Ext); PIExt.insertEdge(Optional(), NullBB); } }