Ignore:
Timestamp:
Nov 10, 2015, 2:13:54 PM (4 years ago)
Author:
nmedfort
Message:

Bug fix for Linda.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/analysis/pabloverifier.cpp

    r4856 r4866  
    125125    gatherValidScopes(function.getEntryBlock(), validScopes);
    126126    verifyUseDefInformation(function.getEntryBlock(), validScopes);
     127}
     128
     129/** ------------------------------------------------------------------------------------------------------------- *
     130 * @brief unreachable
     131 ** ------------------------------------------------------------------------------------------------------------- */
     132bool unreachable(const Statement * stmt, const PabloBlock & block) {
     133    PabloBlock * parent = stmt->getParent();
     134    while (parent)  {
     135        if (parent == &block) {
     136            return false;
     137        }
     138        parent = parent->getParent();
     139    }
     140    return true;
    127141}
    128142
     
    164178            if (isa<If>(stmt)) {
    165179                for (const Assign * def : cast<If>(stmt)->getDefined()) {
    166                     if (def->getParent() != &nested) {
     180                    if (unreachable(def, nested)) {
    167181                        badEscapedValue = def;
    168182                        break;
     
    171185            } else {
    172186                for (const Next * var : cast<While>(stmt)->getVariants()) {
    173                     if (var->getParent() != &nested) {
     187                    if (unreachable(var, nested)) {
    174188                        badEscapedValue = var;
    175189                        break;
     
    180194                std::string tmp;
    181195                raw_string_ostream str(tmp);
    182                 str << "PabloVerifier: structure error: ";
     196                str << "PabloVerifier: structure error: escaped value \"";
    183197                PabloPrinter::print(badEscapedValue, str);
    184                 str << " is not contained within the body of ";
     198                str << "\" is not contained within the body of ";
    185199                PabloPrinter::print(stmt, str);
    186200                throw std::runtime_error(str.str());
Note: See TracChangeset for help on using the changeset viewer.