//===- PostOrderIteratorTest.cpp - PostOrderIterator unit tests -----------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #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); } }