Add some convenience methods for querying attributes, and
use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
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