Pass an ArrayRef instead of pointer and size. NFC
llvm-svn: 250976
This commit is contained in:
parent
6ed053051d
commit
cf2126e2ca
|
@ -412,7 +412,7 @@ namespace {
|
|||
// Misc. AST transformation routines. Sometimes they end up calling
|
||||
// rewriting routines on the new ASTs.
|
||||
CallExpr *SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
||||
Expr **args, unsigned nargs,
|
||||
ArrayRef<Expr *> Args,
|
||||
SourceLocation StartLoc=SourceLocation(),
|
||||
SourceLocation EndLoc=SourceLocation());
|
||||
|
||||
|
@ -2105,15 +2105,17 @@ Stmt *RewriteModernObjC::RewriteAtSelector(ObjCSelectorExpr *Exp) {
|
|||
SmallVector<Expr*, 8> SelExprs;
|
||||
SelExprs.push_back(getStringLiteral(Exp->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size());
|
||||
SelExprs);
|
||||
ReplaceStmt(Exp, SelExp);
|
||||
// delete Exp; leak for now, see RewritePropertyOrImplicitSetter() usage for more info.
|
||||
return SelExp;
|
||||
}
|
||||
|
||||
CallExpr *RewriteModernObjC::SynthesizeCallToFunctionDecl(
|
||||
FunctionDecl *FD, Expr **args, unsigned nargs, SourceLocation StartLoc,
|
||||
SourceLocation EndLoc) {
|
||||
CallExpr *
|
||||
RewriteModernObjC::SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
||||
ArrayRef<Expr *> Args,
|
||||
SourceLocation StartLoc,
|
||||
SourceLocation EndLoc) {
|
||||
// Get the type, we will need to reference it in a couple spots.
|
||||
QualType msgSendType = FD->getType();
|
||||
|
||||
|
@ -2129,10 +2131,9 @@ CallExpr *RewriteModernObjC::SynthesizeCallToFunctionDecl(
|
|||
|
||||
const FunctionType *FT = msgSendType->getAs<FunctionType>();
|
||||
|
||||
CallExpr *Exp =
|
||||
new (Context) CallExpr(*Context, ICE, llvm::makeArrayRef(args, nargs),
|
||||
FT->getCallResultType(*Context),
|
||||
VK_RValue, EndLoc);
|
||||
CallExpr *Exp = new (Context) CallExpr(*Context, ICE, Args,
|
||||
FT->getCallResultType(*Context),
|
||||
VK_RValue, EndLoc);
|
||||
return Exp;
|
||||
}
|
||||
|
||||
|
@ -2660,9 +2661,7 @@ Stmt *RewriteModernObjC::RewriteObjCBoxedExpr(ObjCBoxedExpr *Exp) {
|
|||
|
||||
IdentifierInfo *clsName = BoxingClass->getIdentifier();
|
||||
ClsExprs.push_back(getStringLiteral(clsName->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
MsgExprs.push_back(Cls);
|
||||
|
||||
|
@ -2672,8 +2671,7 @@ Stmt *RewriteModernObjC::RewriteObjCBoxedExpr(ObjCBoxedExpr *Exp) {
|
|||
SelExprs.push_back(
|
||||
getStringLiteral(BoxingMethod->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size(),
|
||||
StartLoc, EndLoc);
|
||||
SelExprs, StartLoc, EndLoc);
|
||||
MsgExprs.push_back(SelExp);
|
||||
|
||||
// User provided sub-expression is the 3rd, and last, argument.
|
||||
|
@ -2788,9 +2786,7 @@ Stmt *RewriteModernObjC::RewriteObjCArrayLiteralExpr(ObjCArrayLiteral *Exp) {
|
|||
|
||||
IdentifierInfo *clsName = Class->getIdentifier();
|
||||
ClsExprs.push_back(getStringLiteral(clsName->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
MsgExprs.push_back(Cls);
|
||||
|
||||
|
@ -2801,8 +2797,7 @@ Stmt *RewriteModernObjC::RewriteObjCArrayLiteralExpr(ObjCArrayLiteral *Exp) {
|
|||
SelExprs.push_back(
|
||||
getStringLiteral(ArrayMethod->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size(),
|
||||
StartLoc, EndLoc);
|
||||
SelExprs, StartLoc, EndLoc);
|
||||
MsgExprs.push_back(SelExp);
|
||||
|
||||
// (const id [])objects
|
||||
|
@ -2939,9 +2934,7 @@ Stmt *RewriteModernObjC::RewriteObjCDictionaryLiteralExpr(ObjCDictionaryLiteral
|
|||
|
||||
IdentifierInfo *clsName = Class->getIdentifier();
|
||||
ClsExprs.push_back(getStringLiteral(clsName->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
MsgExprs.push_back(Cls);
|
||||
|
||||
|
@ -2951,8 +2944,7 @@ Stmt *RewriteModernObjC::RewriteObjCDictionaryLiteralExpr(ObjCDictionaryLiteral
|
|||
ObjCMethodDecl *DictMethod = Exp->getDictWithObjectsMethod();
|
||||
SelExprs.push_back(getStringLiteral(DictMethod->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size(),
|
||||
StartLoc, EndLoc);
|
||||
SelExprs, StartLoc, EndLoc);
|
||||
MsgExprs.push_back(SelExp);
|
||||
|
||||
// (const id [])objects
|
||||
|
@ -3298,14 +3290,10 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
ClsExprs.push_back(getStringLiteral(ClassDecl->getIdentifier()->getName()));
|
||||
// (Class)objc_getClass("CurrentClass")
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetMetaClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
StartLoc,
|
||||
EndLoc);
|
||||
ClsExprs, StartLoc, EndLoc);
|
||||
ClsExprs.clear();
|
||||
ClsExprs.push_back(Cls);
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl,
|
||||
&ClsExprs[0], ClsExprs.size(),
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
|
||||
// (id)class_getSuperclass((Class)objc_getClass("CurrentClass"))
|
||||
|
@ -3366,9 +3354,7 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
= Exp->getClassReceiver()->getAs<ObjCObjectType>()->getInterface();
|
||||
IdentifierInfo *clsName = Class->getIdentifier();
|
||||
ClsExprs.push_back(getStringLiteral(clsName->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
CastExpr *ArgExpr = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getObjCIdType(),
|
||||
|
@ -3398,14 +3384,11 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
SmallVector<Expr*, 8> ClsExprs;
|
||||
ClsExprs.push_back(getStringLiteral(ClassDecl->getIdentifier()->getName()));
|
||||
// (Class)objc_getClass("CurrentClass")
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
ClsExprs.clear();
|
||||
ClsExprs.push_back(Cls);
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl,
|
||||
&ClsExprs[0], ClsExprs.size(),
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
|
||||
// (id)class_getSuperclass((Class)objc_getClass("CurrentClass"))
|
||||
|
@ -3476,9 +3459,7 @@ Stmt *RewriteModernObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
SmallVector<Expr*, 8> SelExprs;
|
||||
SelExprs.push_back(getStringLiteral(Exp->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size(),
|
||||
StartLoc,
|
||||
EndLoc);
|
||||
SelExprs, StartLoc, EndLoc);
|
||||
MsgExprs.push_back(SelExp);
|
||||
|
||||
// Now push any user supplied arguments.
|
||||
|
|
|
@ -346,7 +346,7 @@ namespace {
|
|||
// Misc. AST transformation routines. Sometimes they end up calling
|
||||
// rewriting routines on the new ASTs.
|
||||
CallExpr *SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
||||
Expr **args, unsigned nargs,
|
||||
ArrayRef<Expr *> Args,
|
||||
SourceLocation StartLoc=SourceLocation(),
|
||||
SourceLocation EndLoc=SourceLocation());
|
||||
CallExpr *SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFlavor,
|
||||
|
@ -1997,15 +1997,17 @@ Stmt *RewriteObjC::RewriteAtSelector(ObjCSelectorExpr *Exp) {
|
|||
SmallVector<Expr*, 8> SelExprs;
|
||||
SelExprs.push_back(getStringLiteral(Exp->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size());
|
||||
SelExprs);
|
||||
ReplaceStmt(Exp, SelExp);
|
||||
// delete Exp; leak for now, see RewritePropertyOrImplicitSetter() usage for more info.
|
||||
return SelExp;
|
||||
}
|
||||
|
||||
CallExpr *RewriteObjC::SynthesizeCallToFunctionDecl(
|
||||
FunctionDecl *FD, Expr **args, unsigned nargs, SourceLocation StartLoc,
|
||||
SourceLocation EndLoc) {
|
||||
CallExpr *
|
||||
RewriteObjC::SynthesizeCallToFunctionDecl(FunctionDecl *FD,
|
||||
ArrayRef<Expr *> Args,
|
||||
SourceLocation StartLoc,
|
||||
SourceLocation EndLoc) {
|
||||
// Get the type, we will need to reference it in a couple spots.
|
||||
QualType msgSendType = FD->getType();
|
||||
|
||||
|
@ -2021,10 +2023,9 @@ CallExpr *RewriteObjC::SynthesizeCallToFunctionDecl(
|
|||
|
||||
const FunctionType *FT = msgSendType->getAs<FunctionType>();
|
||||
|
||||
CallExpr *Exp =
|
||||
new (Context) CallExpr(*Context, ICE, llvm::makeArrayRef(args, nargs),
|
||||
FT->getCallResultType(*Context),
|
||||
VK_RValue, EndLoc);
|
||||
CallExpr *Exp = new (Context) CallExpr(*Context, ICE, Args,
|
||||
FT->getCallResultType(*Context),
|
||||
VK_RValue, EndLoc);
|
||||
return Exp;
|
||||
}
|
||||
|
||||
|
@ -2680,20 +2681,15 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
SmallVector<Expr*, 8> ClsExprs;
|
||||
ClsExprs.push_back(getStringLiteral(ClassDecl->getIdentifier()->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetMetaClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
StartLoc,
|
||||
EndLoc);
|
||||
ClsExprs, StartLoc, EndLoc);
|
||||
// (Class)objc_getClass("CurrentClass")
|
||||
CastExpr *ArgExpr = NoTypeInfoCStyleCastExpr(Context,
|
||||
Context->getObjCClassType(),
|
||||
CK_BitCast, Cls);
|
||||
ClsExprs.clear();
|
||||
ClsExprs.push_back(ArgExpr);
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl,
|
||||
&ClsExprs[0], ClsExprs.size(),
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
|
||||
// (id)class_getSuperclass((Class)objc_getClass("CurrentClass"))
|
||||
// To turn off a warning, type-cast to 'id'
|
||||
InitExprs.push_back( // set 'super class', using class_getSuperclass().
|
||||
|
@ -2752,9 +2748,7 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
= Exp->getClassReceiver()->getAs<ObjCObjectType>()->getInterface();
|
||||
IdentifierInfo *clsName = Class->getIdentifier();
|
||||
ClsExprs.push_back(getStringLiteral(clsName->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
MsgExprs.push_back(Cls);
|
||||
break;
|
||||
|
@ -2780,9 +2774,7 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
// (id)class_getSuperclass((Class)objc_getClass("CurrentClass"))
|
||||
SmallVector<Expr*, 8> ClsExprs;
|
||||
ClsExprs.push_back(getStringLiteral(ClassDecl->getIdentifier()->getName()));
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl,
|
||||
&ClsExprs[0],
|
||||
ClsExprs.size(),
|
||||
CallExpr *Cls = SynthesizeCallToFunctionDecl(GetClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
// (Class)objc_getClass("CurrentClass")
|
||||
CastExpr *ArgExpr = NoTypeInfoCStyleCastExpr(Context,
|
||||
|
@ -2790,8 +2782,7 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
CK_BitCast, Cls);
|
||||
ClsExprs.clear();
|
||||
ClsExprs.push_back(ArgExpr);
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl,
|
||||
&ClsExprs[0], ClsExprs.size(),
|
||||
Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl, ClsExprs,
|
||||
StartLoc, EndLoc);
|
||||
|
||||
// (id)class_getSuperclass((Class)objc_getClass("CurrentClass"))
|
||||
|
@ -2862,9 +2853,7 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,
|
|||
SmallVector<Expr*, 8> SelExprs;
|
||||
SelExprs.push_back(getStringLiteral(Exp->getSelector().getAsString()));
|
||||
CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
|
||||
&SelExprs[0], SelExprs.size(),
|
||||
StartLoc,
|
||||
EndLoc);
|
||||
SelExprs, StartLoc, EndLoc);
|
||||
MsgExprs.push_back(SelExp);
|
||||
|
||||
// Now push any user supplied arguments.
|
||||
|
|
Loading…
Reference in New Issue