diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2013-08-13 00:03:47 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2013-08-13 00:03:47 +0000 |
commit | 72dba254ae65b06062106910a70d46f21e19d55a (patch) | |
tree | f9661eefd40f085d815cb903a19940f4f3d76515 /unittests/Analysis | |
parent | b58bddf258e9fb0e087c7acfa7946126c63d5a86 (diff) |
Fix an oversight in isPotentiallyReachable where we wouldn't do any CFG-walking
to find loops if the From and To instructions were in the same block.
Refactor the code a little now that we need to fill to start the CFG-walking
algorithm with more than one starting basic block sometimes.
Special thanks to Andrew Trick for catching an error in my understanding of
natural loops in code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188236 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Analysis')
-rw-r--r-- | unittests/Analysis/CFGTest.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/unittests/Analysis/CFGTest.cpp b/unittests/Analysis/CFGTest.cpp index 23588037784..e931709620f 100644 --- a/unittests/Analysis/CFGTest.cpp +++ b/unittests/Analysis/CFGTest.cpp @@ -147,6 +147,23 @@ TEST_F(IsPotentiallyReachableTest, SameBlockPath) { ExpectPath(true); } +TEST_F(IsPotentiallyReachableTest, SameBlockNoLoop) { + ParseAssembly( + "define void @test() {\n" + "entry:\n" + " br label %middle\n" + "middle:\n" + " %B = bitcast i8 undef to i8\n" + " bitcast i8 undef to i8\n" + " bitcast i8 undef to i8\n" + " %A = bitcast i8 undef to i8\n" + " br label %nextblock\n" + "nextblock:\n" + " ret void\n" + "}\n"); + ExpectPath(false); +} + TEST_F(IsPotentiallyReachableTest, StraightNoPath) { ParseAssembly( "define void @test() {\n" |