From 7eb4e7f520fd69a5e52078a106941e696882ba2f Mon Sep 17 00:00:00 2001 From: jdh8d <jdh8d@git.zephyr-software.com> Date: Fri, 3 Jun 2016 13:13:10 +0000 Subject: [PATCH] fixed assert with unreachable code in function Former-commit-id: 31070873c97a637e3ba94ce7af3ad5013fd4a9a8 --- libIRDB/include/cfg/domgraph.hpp | 4 ++++ libIRDB/src/cfg/domgraph.cpp | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libIRDB/include/cfg/domgraph.hpp b/libIRDB/include/cfg/domgraph.hpp index d5de10e5e..62752d18b 100644 --- a/libIRDB/include/cfg/domgraph.hpp +++ b/libIRDB/include/cfg/domgraph.hpp @@ -17,6 +17,8 @@ class DominatorGraph_t const BasicBlockSet_t& GetDominators(const BasicBlock_t* node) const { return dom_graph.at(node); } const BasicBlockSet_t& GetPostDominators(const BasicBlock_t* node) const { return post_dom_graph.at(node); } + bool HasWarnings() const { return warn; } + // get the immeidate (post) dominators for a node const BasicBlock_t* GetImmediateDominator(const BasicBlock_t* node) const @@ -41,6 +43,8 @@ class DominatorGraph_t const ControlFlowGraph_t& cfg; // a reference to our cfg. + bool warn; + friend std::ostream& operator<<(std::ostream& os, const DominatorGraph_t& cfg); }; diff --git a/libIRDB/src/cfg/domgraph.cpp b/libIRDB/src/cfg/domgraph.cpp index 9fafa6a61..6448b3b2d 100644 --- a/libIRDB/src/cfg/domgraph.cpp +++ b/libIRDB/src/cfg/domgraph.cpp @@ -11,7 +11,7 @@ using namespace libIRDB; // constructor DominatorGraph_t::DominatorGraph_t(const ControlFlowGraph_t* p_cfg, bool needs_postdoms, bool needs_idoms) - : cfg(*p_cfg) + : cfg(*p_cfg), warn(false) { @@ -273,7 +273,8 @@ BlockToBlockMap_t DominatorGraph_t::Idom_Comp(const BasicBlockSet_t& N, const Do { //IDom(n) = <only element in>Tmp(n) IDom[n]= *(Tmp[n].begin()); - assert(Tmp[n].size()<=1); // should only be one idominator. + if(Tmp[n].size()!=1) // should only be one idominator. + warn=true; }); return IDom; } // IDom_Comp -- GitLab