diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index 6ab1231..687814b 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -896,18 +896,15 @@
          e = SF.Caller.arg_end(); i != e; ++i, ++pNum) {
     Value *V = *i;
     ArgVals.push_back(getOperandValue(V, SF));
-    if (F) {
-     // Promote all integral types whose size is < sizeof(i32) into i32.  
-     // We do this by zero or sign extending the value as appropriate 
-     // according to the parameter attributes
-      const Type *Ty = V->getType();
-      if (Ty->isInteger() && (ArgVals.back().IntVal.getBitWidth() < 32))
-        if (const ParamAttrsList *PA = F->getParamAttrs())
-          if (PA->paramHasAttr(pNum, ParamAttr::ZExt))
-            ArgVals.back().IntVal = ArgVals.back().IntVal.zext(32);
-          else if (PA->paramHasAttr(pNum, ParamAttr::SExt))
-            ArgVals.back().IntVal = ArgVals.back().IntVal.sext(32);
-     }
+    // Promote all integral types whose size is < sizeof(i32) into i32.
+    // We do this by zero or sign extending the value as appropriate
+    // according to the parameter attributes
+    const Type *Ty = V->getType();
+    if (Ty->isInteger() && (ArgVals.back().IntVal.getBitWidth() < 32))
+      if (CS.paramHasAttr(pNum, ParamAttr::ZExt))
+        ArgVals.back().IntVal = ArgVals.back().IntVal.zext(32);
+      else if (CS.paramHasAttr(pNum, ParamAttr::SExt))
+        ArgVals.back().IntVal = ArgVals.back().IntVal.sext(32);
   }
 
   // To handle indirect calls, we must get the pointer value from the argument
