forked from OSchip/llvm-project
Tweak Sema::DefaultArgumentPromotion() to call UsualUnaryConversions(). This makes sure function calls that don't have a prototype get the default function/array conversion.
Patch by Eli Friedman! llvm-svn: 46489
This commit is contained in:
parent
5aa1615add
commit
31daee11be
|
@ -866,16 +866,16 @@ Action::ExprResult Sema::ActOnConditionalOp(SourceLocation QuestionLoc,
|
|||
}
|
||||
|
||||
/// DefaultArgumentPromotion (C99 6.5.2.2p6). Used for function calls that
|
||||
/// do not have a prototype. Integer promotions are performed on each
|
||||
/// argument, and arguments that have type float are promoted to double.
|
||||
/// do not have a prototype. Arguments that have type float are promoted to
|
||||
/// double. All other argument types are converted by UsualUnaryConversions().
|
||||
void Sema::DefaultArgumentPromotion(Expr *&Expr) {
|
||||
QualType Ty = Expr->getType();
|
||||
assert(!Ty.isNull() && "DefaultArgumentPromotion - missing type");
|
||||
|
||||
if (Ty->isPromotableIntegerType()) // C99 6.3.1.1p2
|
||||
ImpCastExprToType(Expr, Context.IntTy);
|
||||
if (Ty == Context.FloatTy)
|
||||
ImpCastExprToType(Expr, Context.DoubleTy);
|
||||
else
|
||||
UsualUnaryConversions(Expr);
|
||||
}
|
||||
|
||||
/// DefaultFunctionArrayConversion (C99 6.3.2.1p3, C99 6.3.2.1p4).
|
||||
|
|
Loading…
Reference in New Issue