diff --git a/src/GraphCall/graph_calls.cpp b/src/GraphCall/graph_calls.cpp index 1e44544..1ec24f9 100644 --- a/src/GraphCall/graph_calls.cpp +++ b/src/GraphCall/graph_calls.cpp @@ -800,29 +800,58 @@ static void fillInOut(FuncInfo *currF, SgStatement *start, SgStatement *last, co static map> supportedKeyWordArg = { {"system_clock", { OUT_BIT, OUT_BIT, OUT_BIT } } }; - map parNames; + map parNamesMain; + map parNamesContains; for (int i = 0; i < currF->funcParams.identificators.size(); ++i) - parNames[currF->funcParams.identificators[i]] = i; + parNamesMain[currF->funcParams.identificators[i]] = i; + map& parNames = parNamesMain; + + bool isContainsFunctions = false; for (auto st = start; st != last; st = st->lexNext()) { - if (st->variant() == CONTAINS_STMT) - break; + if (st->variant() == CONTAINS_STMT) { + isContainsFunctions = true; + continue; + } + + if (isContainsFunctions) { + if (st->variant() == PROC_HEDR || st->variant() == FUNC_HEDR) { + parNamesContains = parNamesMain; + + SgProgHedrStmt* hedr = (SgProgHedrStmt*)st; + + int numOfParams = hedr->numberOfParameters(); + if (numOfParams > 0) + { + for (int i = 0; i < numOfParams; ++i) + { + auto it = parNamesContains.find(hedr->parameter(i)->identifier()); + if (it != parNamesContains.end()) + parNamesContains.erase(it); + } + } + parNames = parNamesContains; + } + } if (st->variant() == ENTRY_STAT) continue; if (isSgExecutableStatement(st) == NULL) { - checkInTypeDescription(st->expr(0), currF, parNames); + if (!isContainsFunctions) + checkInTypeDescription(st->expr(0), currF, parNames); continue; } if (st->lineNumber() <= 0) continue; - if (activeOps.size() && activeOps.find(st) == activeOps.end()) - continue; + //XXX: use parameters removing in block ... isContainsFunctions ... + //TODO need to use IR for parameters checking + /*if (activeOps.size() && activeOps.find(st) == activeOps.end()) + continue; */ if (st->variant() == ASSIGN_STAT) { diff --git a/src/Utils/version.h b/src/Utils/version.h index 05ba3d0..207a063 100644 --- a/src/Utils/version.h +++ b/src/Utils/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_SPF "2472" +#define VERSION_SPF "2473"