Fix unreachable-block removal.

Add a test for loop without a condition.

Change-Id: Idd7fc462218a84b1e745207e2975a3f2897d30a0
This commit is contained in:
Dejan Mircevski 2016-01-10 19:37:00 -05:00
parent 9c6734c8df
commit e537b8b488
5 changed files with 67 additions and 4 deletions

View file

@ -52,6 +52,7 @@
#include "spirv.hpp"
#include <algorithm>
#include <vector>
#include <iostream>
#include <assert.h>
@ -235,7 +236,13 @@ public:
Id getParamId(int p) { return parameterInstructions[p]->getResultId(); }
void addBlock(Block* block) { blocks.push_back(block); }
void popBlock(Block*) { blocks.pop_back(); }
void removeBlock(Block* block)
{
auto found = find(blocks.begin(), blocks.end(), block);
assert(found != blocks.end());
blocks.erase(found);
delete block;
}
Module& getParent() const { return parent; }
Block* getEntryBlock() const { return blocks.front(); }