diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-10-26 05:45:40 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-10-26 05:45:40 +0000 |
| commit | 83025414013042c861ab96819a1c64ec375c4acd (patch) | |
| tree | b65dae1873d58d6bf6ab192e6f963707f65df412 | |
| parent | 4bb599cf7d48157f9728deb945b851b8e29b3325 (diff) | |
| download | bcm5719-llvm-83025414013042c861ab96819a1c64ec375c4acd.tar.gz bcm5719-llvm-83025414013042c861ab96819a1c64ec375c4acd.zip | |
Delay complete-type checking for arguments to no-prototype functions
until after we've checked/promoted the argument. Hopefully fixes the
Emacs regression due to my recent change that expanded type-checking
in the presence of K&R function definitions.
llvm-svn: 117353
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 0510bd2ed86..f8c7a90f8f4 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -3858,12 +3858,6 @@ Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, Expr *Arg = Args[i]; if (Proto && i < Proto->getNumArgs()) { - if (RequireCompleteType(Arg->getSourceRange().getBegin(), - Arg->getType(), - PDiag(diag::err_call_incomplete_argument) - << Arg->getSourceRange())) - return ExprError(); - InitializedEntity Entity = InitializedEntity::InitializeParameter(Context, Proto->getArgType(i)); @@ -3877,14 +3871,14 @@ Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, } else { DefaultArgumentPromotion(Arg); - - if (RequireCompleteType(Arg->getSourceRange().getBegin(), - Arg->getType(), - PDiag(diag::err_call_incomplete_argument) - << Arg->getSourceRange())) - return ExprError(); } + if (RequireCompleteType(Arg->getSourceRange().getBegin(), + Arg->getType(), + PDiag(diag::err_call_incomplete_argument) + << Arg->getSourceRange())) + return ExprError(); + TheCall->setArg(i, Arg); } } |

