diff --git a/CodeGen/CGBuiltin.cpp b/CodeGen/CGBuiltin.cpp
index d8fe060..d298b40 100644
--- a/CodeGen/CGBuiltin.cpp
+++ b/CodeGen/CGBuiltin.cpp
@@ -30,7 +30,8 @@
   default: {
     if (getContext().BuiltinInfo.isLibFunction(BuiltinID))
       return EmitCallExpr(CGM.getBuiltinLibFunction(BuiltinID), 
-                          E->getCallee()->getType(), E->arg_begin());
+                          E->getCallee()->getType(), E->arg_begin(),
+                          E->getNumArgs());
   
     // See if we have a target specific intrinsic.
     Intrinsic::ID IntrinsicID;
diff --git a/CodeGen/CGExpr.cpp b/CodeGen/CGExpr.cpp
index 04f3f94..41eb275 100644
--- a/CodeGen/CGExpr.cpp
+++ b/CodeGen/CGExpr.cpp
@@ -511,12 +511,14 @@
           return EmitBuiltinExpr(builtinID, E);
         
   llvm::Value *Callee = EmitScalarExpr(E->getCallee());
-  return EmitCallExpr(Callee, E->getCallee()->getType(), E->arg_begin());
+  return EmitCallExpr(Callee, E->getCallee()->getType(),
+                      E->arg_begin(), E->getNumArgs());
 }
 
-RValue CodeGenFunction::EmitCallExpr(Expr *FnExpr, Expr *const *Args) {
+RValue CodeGenFunction::EmitCallExpr(Expr *FnExpr, Expr *const *Args,
+                                     unsigned NumArgs) {
   llvm::Value *Callee = EmitScalarExpr(FnExpr);
-  return EmitCallExpr(Callee, FnExpr->getType(), Args);
+  return EmitCallExpr(Callee, FnExpr->getType(), Args, NumArgs);
 }
 
 LValue CodeGenFunction::EmitCallExprLValue(const CallExpr *E) {
@@ -526,17 +528,12 @@
 }
 
 RValue CodeGenFunction::EmitCallExpr(llvm::Value *Callee, QualType FnType, 
-                                     Expr *const *ArgExprs) {
+                                     Expr *const *ArgExprs, unsigned NumArgs) {
   // The callee type will always be a pointer to function type, get the function
   // type.
   FnType = cast<PointerType>(FnType.getCanonicalType())->getPointeeType();
   QualType ResultType = cast<FunctionType>(FnType)->getResultType();
-  
-  // Calling unprototyped functions provides no argument info.
-  unsigned NumArgs = 0;
-  if (const FunctionTypeProto *FTP = dyn_cast<FunctionTypeProto>(FnType))
-    NumArgs = FTP->getNumArgs();
-  
+
   llvm::SmallVector<llvm::Value*, 16> Args;
   
   // Handle struct-return functions by passing a pointer to the location that
diff --git a/CodeGen/CGExprScalar.cpp b/CodeGen/CGExprScalar.cpp
index 8617a3e..32a1b53 100644
--- a/CodeGen/CGExprScalar.cpp
+++ b/CodeGen/CGExprScalar.cpp
@@ -1012,7 +1012,7 @@
 }
 
 Value *ScalarExprEmitter::VisitOverloadExpr(OverloadExpr *E) {
-  return CGF.EmitCallExpr(E->getFn(), E->arg_begin()).getScalarVal();
+  return CGF.EmitCallExpr(E->getFn(), E->arg_begin(), E->getNumArgs()).getScalarVal();
 }
 
 Value *ScalarExprEmitter::VisitVAArgExpr(VAArgExpr *VE) {
diff --git a/CodeGen/CodeGenFunction.h b/CodeGen/CodeGenFunction.h
index dd91a53..30dfaab 100644
--- a/CodeGen/CodeGenFunction.h
+++ b/CodeGen/CodeGenFunction.h
@@ -419,8 +419,9 @@
   //===--------------------------------------------------------------------===//
 
   RValue EmitCallExpr(const CallExpr *E);
-  RValue EmitCallExpr(Expr *FnExpr, Expr *const *Args);
-  RValue EmitCallExpr(llvm::Value *Callee, QualType FnType, Expr *const *Args);
+  RValue EmitCallExpr(Expr *FnExpr, Expr *const *Args, unsigned NumArgs);
+  RValue EmitCallExpr(llvm::Value *Callee, QualType FnType,
+                      Expr *const *Args, unsigned NumArgs);
   RValue EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
 
   llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
