From 8d3b0d9e5912205c14b4be1d3d408758f058076b Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 6 Dec 2020 09:06:14 -0800 Subject: [PATCH] Fixed while(false) loop --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 2 +- IDEHelper/Tests/src/Loops.bf | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 IDEHelper/Tests/src/Loops.bf diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index ede3f118..046f6fcc 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -5490,7 +5490,7 @@ void BfModule::Visit(BfWhileStatement* whileStmt) // For BeefBackend we continue to do CondBr because it helps our flow analysis and we optimize it anyway if ((isInfiniteLoop) && (!IsTargetingBeefBackend())) mBfIRBuilder->CreateBr(bodyBB); - else if ((isFalseLoop) && (!IsTargetingBeefBackend())) + else if (isFalseLoop) mBfIRBuilder->CreateBr(endBB); else mBfIRBuilder->CreateCondBr(checkVal.mValue, bodyBB, endBB); diff --git a/IDEHelper/Tests/src/Loops.bf b/IDEHelper/Tests/src/Loops.bf new file mode 100644 index 00000000..ac7508c5 --- /dev/null +++ b/IDEHelper/Tests/src/Loops.bf @@ -0,0 +1,16 @@ +using System; + +namespace Tests +{ + class Loops + { + [Test] + public static void TestBasics() + { + while (false) + { + + } + } + } +}