fix bug 1847274 GVSlice fails to check command-line arguments

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2141 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
sjfink 2007-12-10 05:28:02 +00:00
parent 446a6551fe
commit 0d701fcab6
1 changed files with 7 additions and 0 deletions

View File

@ -41,8 +41,10 @@ import com.ibm.wala.ipa.slicer.Slicer.ControlDependenceOptions;
import com.ibm.wala.ipa.slicer.Slicer.DataDependenceOptions;
import com.ibm.wala.ipa.slicer.Statement.Kind;
import com.ibm.wala.properties.WalaProperties;
import com.ibm.wala.ssa.SSAAbstractInvokeInstruction;
import com.ibm.wala.ssa.SSAInstruction;
import com.ibm.wala.ssa.SSAInvokeInstruction;
import com.ibm.wala.types.TypeReference;
import com.ibm.wala.util.collections.Filter;
import com.ibm.wala.util.debug.Assertions;
import com.ibm.wala.util.graph.Graph;
@ -236,6 +238,11 @@ public class GVSlice {
if (s.getKind() == Kind.NORMAL) {
SSAInstruction st = ((NormalStatement) s).getInstruction();
if (st instanceof SSAInvokeInstruction) {
SSAAbstractInvokeInstruction call = (SSAAbstractInvokeInstruction)st;
if (call.getCallSite().getDeclaredTarget().getReturnType().equals(TypeReference.Void)) {
throw new IllegalArgumentException("this driver computes forward slices from the return value of calls.\n" + ""
+ "Method " +call.getCallSite().getDeclaredTarget().getSignature() + " returns void.");
}
return new ParamStatement.NormalReturnCaller(s.getNode(), (SSAInvokeInstruction) st);
} else {
return s;