#include "llvm/Analysis/CFG.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
usingnamespacellvm;
namespace {
class IsPotentiallyReachableTest : public testing::Test { … };
}
TEST_F(IsPotentiallyReachableTest, SameBlockNoPath) { … }
TEST_F(IsPotentiallyReachableTest, SameBlockPath) { … }
TEST_F(IsPotentiallyReachableTest, SameBlockNoLoop) { … }
TEST_F(IsPotentiallyReachableTest, StraightNoPath) { … }
TEST_F(IsPotentiallyReachableTest, StraightPath) { … }
TEST_F(IsPotentiallyReachableTest, DestUnreachable) { … }
TEST_F(IsPotentiallyReachableTest, BranchToReturn) { … }
TEST_F(IsPotentiallyReachableTest, SimpleLoop1) { … }
TEST_F(IsPotentiallyReachableTest, SimpleLoop2) { … }
TEST_F(IsPotentiallyReachableTest, SimpleLoop3) { … }
TEST_F(IsPotentiallyReachableTest, OneLoopAfterTheOther1) { … }
TEST_F(IsPotentiallyReachableTest, OneLoopAfterTheOther2) { … }
TEST_F(IsPotentiallyReachableTest, OneLoopAfterTheOtherInsideAThirdLoop) { … }
static const char *BranchInsideLoopIR = …;
TEST_F(IsPotentiallyReachableTest, BranchInsideLoop) { … }
TEST_F(IsPotentiallyReachableTest, ModifyTest) { … }
TEST_F(IsPotentiallyReachableTest, UnreachableFromEntryTest) { … }
TEST_F(IsPotentiallyReachableTest, UnreachableBlocksTest1) { … }
TEST_F(IsPotentiallyReachableTest, UnreachableBlocksTest2) { … }
TEST_F(IsPotentiallyReachableTest, SimpleExclusionTest) { … }
TEST_F(IsPotentiallyReachableTest, DiamondExcludedTest) { … }
TEST_F(IsPotentiallyReachableTest, DiamondOneSideExcludedTest) { … }
TEST_F(IsPotentiallyReachableTest, UnreachableToReachable) { … }