mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222447 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
deb068a5cb
commit
d23f04a165
@ -27,6 +27,7 @@ set(ADTSources
|
||||
PackedVectorTest.cpp
|
||||
PointerIntPairTest.cpp
|
||||
PointerUnionTest.cpp
|
||||
PostOrderIteratorTest.cpp
|
||||
SCCIteratorTest.cpp
|
||||
SmallPtrSetTest.cpp
|
||||
SmallStringTest.cpp
|
||||
|
37
unittests/ADT/PostOrderIteratorTest.cpp
Normal file
37
unittests/ADT/PostOrderIteratorTest.cpp
Normal file
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user