projects
/
satune.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7c56d68
)
Bug fix in encoding subgraph DFS algorithm
author
Hamed Gorjiara
<hgorjiar@uci.edu>
Thu, 6 Sep 2018 20:18:03 +0000
(13:18 -0700)
committer
Hamed Gorjiara
<hgorjiar@uci.edu>
Thu, 6 Sep 2018 20:18:03 +0000
(13:18 -0700)
src/ASTAnalyses/Encoding/subgraph.cc
patch
|
blob
|
history
diff --git
a/src/ASTAnalyses/Encoding/subgraph.cc
b/src/ASTAnalyses/Encoding/subgraph.cc
index 86937549fe578070a78914c0a27f9e9307e08b16..adc7ad78c31534ef0b1094935e40414c915e38de 100644
(file)
--- a/
src/ASTAnalyses/Encoding/subgraph.cc
+++ b/
src/ASTAnalyses/Encoding/subgraph.cc
@@
-61,6
+61,7
@@
void EncodingSubGraph::solveEquals() {
SetIteratorEncodingValue *conflictIt = ev->notequals.iterator();
while (conflictIt->hasNext()) {
EncodingValue *conflict = conflictIt->next();
SetIteratorEncodingValue *conflictIt = ev->notequals.iterator();
while (conflictIt->hasNext()) {
EncodingValue *conflict = conflictIt->next();
+ ASSERT(conflict->value != ev->value);
if (conflict->assigned) {
encodingArray.setExpand(conflict->encoding, true);
}
if (conflict->assigned) {
encodingArray.setExpand(conflict->encoding, true);
}
@@
-239,6
+240,7
@@
void EncodingSubGraph::generateEquals(EncodingNode *left, EncodingNode *right) {
NodeValuePair nvp2(right, rVal);
EncodingValue *rev = map.get(&nvp2);
if (lev != rev) {
NodeValuePair nvp2(right, rVal);
EncodingValue *rev = map.get(&nvp2);
if (lev != rev) {
+ ASSERT(lVal != rVal);
if (lev->inComparison && rev->inComparison) {
//Need to assign during comparison stage...
//Thus promote to comparison
if (lev->inComparison && rev->inComparison) {
//Need to assign during comparison stage...
//Thus promote to comparison
@@
-351,19
+353,24
@@
void EncodingSubGraph::traverseValue(EncodingNode *node, uint64_t value) {
while (tovisit.getSize() != 0) {
EncodingNode *n = tovisit.last();tovisit.pop();
//Add encoding node to structures
while (tovisit.getSize() != 0) {
EncodingNode *n = tovisit.last();tovisit.pop();
//Add encoding node to structures
- ecv->nodes.add(n);
NodeValuePair *nvp = new NodeValuePair(n, value);
NodeValuePair *nvp = new NodeValuePair(n, value);
+ if(map.contains(nvp))
+ continue;
+ ecv->nodes.add(n);
map.put(nvp, ecv);
map.put(nvp, ecv);
- SetIteratorEncodingEdge *edgeit = node->edges.iterator();
+ ASSERT(node != NULL);
+ SetIteratorEncodingEdge *edgeit = n->edges.iterator();
while (edgeit->hasNext()) {
EncodingEdge *ee = edgeit->next();
if (!discovered.contains(ee->left) && nodes.contains(ee->left) && ee->left->s->exists(value)) {
tovisit.push(ee->left);
discovered.add(ee->left);
while (edgeit->hasNext()) {
EncodingEdge *ee = edgeit->next();
if (!discovered.contains(ee->left) && nodes.contains(ee->left) && ee->left->s->exists(value)) {
tovisit.push(ee->left);
discovered.add(ee->left);
+ ASSERT(discovered.contains(ee->left));
}
if (!discovered.contains(ee->right) && nodes.contains(ee->right) && ee->right->s->exists(value)) {
tovisit.push(ee->right);
discovered.add(ee->right);
}
if (!discovered.contains(ee->right) && nodes.contains(ee->right) && ee->right->s->exists(value)) {
tovisit.push(ee->right);
discovered.add(ee->right);
+ ASSERT(discovered.contains(ee->right));
}
}
delete edgeit;
}
}
delete edgeit;