From 49542b0a938fc58b4f6a35a6b7a9b314460fa6ca Mon Sep 17 00:00:00 2001 From: adash Date: Mon, 31 Mar 2008 01:12:35 +0000 Subject: [PATCH] bug fix for Atomic5.java testcase --- Robust/src/Analysis/Prefetch/PrefetchAnalysis.java | 9 ++++++++- Robust/src/IR/Flat/BuildCode.java | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Robust/src/Analysis/Prefetch/PrefetchAnalysis.java b/Robust/src/Analysis/Prefetch/PrefetchAnalysis.java index 252d210b..d2cbbe0d 100644 --- a/Robust/src/Analysis/Prefetch/PrefetchAnalysis.java +++ b/Robust/src/Analysis/Prefetch/PrefetchAnalysis.java @@ -573,7 +573,14 @@ public class PrefetchAnalysis { continue; } } - } else { + } else if(currfopn.getRight()!=null && (currfopn.getOp().getOp() == Operation.SUB)) { + for(Enumeration ecld = child_prefetch_set_copy.keys();ecld.hasMoreElements();) { + PrefetchPair childpp = (PrefetchPair) ecld.nextElement(); + if(childpp.containsTemp(currfopn.getDest())) { + child_prefetch_set_copy.remove(childpp); + } + } + } else { //FIXME Is not taken care of for cases like x = -y followed by a[x].i } diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index ca80aa2f..ed503d7e 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -1545,12 +1545,12 @@ public class BuildCode { for(int j=0;j0)&&(tmpindex<((struct ArrayObject *)prefptr)->___length___)"; + indexcheck+=id.offset+">=0)&&(tmpindex<((struct ArrayObject *)prefptr)->___length___)"; if (!teststr.equals("")) teststr+="&&"; - teststr+="prefptr="+basestr+"&&"+indexcheck; - basestr="((void **)(((char *) &(((struct ArrayObject*)prefptr)->___length___))+sizeof(int)))[tmpindex])"; + teststr+="(((prefptr="+basestr+")!= NULL) &&"+indexcheck; + basestr="((void **)(((char *) &(((struct ArrayObject*)prefptr)->___length___))+sizeof(int)))[tmpindex]"; maybenull=true; lasttype=lasttype.dereference(); } @@ -1560,7 +1560,7 @@ public class BuildCode { if (teststr.equals("")) { oid="((unsigned int)"+basestr+")"; } else { - oid="((unsigned int)("+teststr+")?"+basestr+":NULL)"; + oid="(unsigned int)("+teststr+")?"+basestr+":NULL)"; } oids.add(oid); -- 2.34.1