diff options
Diffstat (limited to 'clang/lib/Frontend/Rewrite/RewriteObjC.cpp')
| -rw-r--r-- | clang/lib/Frontend/Rewrite/RewriteObjC.cpp | 105 | 
1 files changed, 56 insertions, 49 deletions
| diff --git a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp index 0cb7592b9982..3f320dc57aa6 100644 --- a/clang/lib/Frontend/Rewrite/RewriteObjC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteObjC.cpp @@ -789,9 +789,10 @@ void RewriteObjC::RewritePropertyImplDecl(ObjCPropertyImplDecl *PID,    unsigned Attributes = PD->getPropertyAttributes();    if (PID->getGetterMethodDecl() && !PID->getGetterMethodDecl()->isDefined()) { -    bool GenGetProperty = !(Attributes & ObjCPropertyDecl::OBJC_PR_nonatomic) && -                          (Attributes & (ObjCPropertyDecl::OBJC_PR_retain | -                                         ObjCPropertyDecl::OBJC_PR_copy)); +    bool GenGetProperty = +        !(Attributes & ObjCPropertyAttribute::kind_nonatomic) && +        (Attributes & (ObjCPropertyAttribute::kind_retain | +                       ObjCPropertyAttribute::kind_copy));      std::string Getr;      if (GenGetProperty && !objcGetPropertyDefined) {        objcGetPropertyDefined = true; @@ -850,8 +851,8 @@ void RewriteObjC::RewritePropertyImplDecl(ObjCPropertyImplDecl *PID,    // Generate the 'setter' function.    std::string Setr; -  bool GenSetProperty = Attributes & (ObjCPropertyDecl::OBJC_PR_retain | -                                      ObjCPropertyDecl::OBJC_PR_copy); +  bool GenSetProperty = Attributes & (ObjCPropertyAttribute::kind_retain | +                                      ObjCPropertyAttribute::kind_copy);    if (GenSetProperty && !objcSetPropertyDefined) {      objcSetPropertyDefined = true;      // FIXME. Is this attribute correct in all cases? @@ -870,11 +871,11 @@ void RewriteObjC::RewritePropertyImplDecl(ObjCPropertyImplDecl *PID,      Setr += ", (id)";      Setr += PD->getName();      Setr += ", "; -    if (Attributes & ObjCPropertyDecl::OBJC_PR_nonatomic) +    if (Attributes & ObjCPropertyAttribute::kind_nonatomic)        Setr += "0, ";      else        Setr += "1, "; -    if (Attributes & ObjCPropertyDecl::OBJC_PR_copy) +    if (Attributes & ObjCPropertyAttribute::kind_copy)        Setr += "1)";      else        Setr += "0)"; @@ -2513,9 +2514,10 @@ Stmt *RewriteObjC::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {                                     strType, nullptr, SC_Static);    DeclRefExpr *DRE = new (Context)        DeclRefExpr(*Context, NewVD, false, strType, VK_LValue, SourceLocation()); -  Expr *Unop = new (Context) -      UnaryOperator(DRE, UO_AddrOf, Context->getPointerType(DRE->getType()), -                    VK_RValue, OK_Ordinary, SourceLocation(), false); +  Expr *Unop = UnaryOperator::Create( +      const_cast<ASTContext &>(*Context), DRE, UO_AddrOf, +      Context->getPointerType(DRE->getType()), VK_RValue, OK_Ordinary, +      SourceLocation(), false, FPOptionsOverride());    // cast to NSConstantString *    CastExpr *cast = NoTypeInfoCStyleCastExpr(Context, Exp->getType(),                                              CK_CPointerToObjCPointerCast, Unop); @@ -2713,10 +2715,10 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,        // we need the cast below. For example:        // (struct objc_super *)&__rw_objc_super((id)self, (id)objc_getClass("SUPER"))        // -      SuperRep = new (Context) UnaryOperator(SuperRep, UO_AddrOf, -                               Context->getPointerType(SuperRep->getType()), -                                             VK_RValue, OK_Ordinary, -                                             SourceLocation(), false); +      SuperRep = UnaryOperator::Create( +          const_cast<ASTContext &>(*Context), SuperRep, UO_AddrOf, +          Context->getPointerType(SuperRep->getType()), VK_RValue, OK_Ordinary, +          SourceLocation(), false, FPOptionsOverride());        SuperRep = NoTypeInfoCStyleCastExpr(Context,                                            Context->getPointerType(superType),                                            CK_BitCast, SuperRep); @@ -2731,10 +2733,10 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,                                                     superType, VK_LValue,                                                     ILE, false);        // struct objc_super * -      SuperRep = new (Context) UnaryOperator(SuperRep, UO_AddrOf, -                               Context->getPointerType(SuperRep->getType()), -                                             VK_RValue, OK_Ordinary, -                                             SourceLocation(), false); +      SuperRep = UnaryOperator::Create( +          const_cast<ASTContext &>(*Context), SuperRep, UO_AddrOf, +          Context->getPointerType(SuperRep->getType()), VK_RValue, OK_Ordinary, +          SourceLocation(), false, FPOptionsOverride());      }      MsgExprs.push_back(SuperRep);      break; @@ -2808,10 +2810,10 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,        // we need the cast below. For example:        // (struct objc_super *)&__rw_objc_super((id)self, (id)objc_getClass("SUPER"))        // -      SuperRep = new (Context) UnaryOperator(SuperRep, UO_AddrOf, -                               Context->getPointerType(SuperRep->getType()), -                               VK_RValue, OK_Ordinary, -                               SourceLocation(), false); +      SuperRep = UnaryOperator::Create( +          const_cast<ASTContext &>(*Context), SuperRep, UO_AddrOf, +          Context->getPointerType(SuperRep->getType()), VK_RValue, OK_Ordinary, +          SourceLocation(), false, FPOptionsOverride());        SuperRep = NoTypeInfoCStyleCastExpr(Context,                                 Context->getPointerType(superType),                                 CK_BitCast, SuperRep); @@ -2995,10 +2997,9 @@ Stmt *RewriteObjC::SynthMessageExpr(ObjCMessageExpr *Exp,                                                     llvm::APInt(IntSize, 8),                                                     Context->IntTy,                                                     SourceLocation()); -    BinaryOperator *lessThanExpr = -      new (Context) BinaryOperator(sizeofExpr, limit, BO_LE, Context->IntTy, -                                   VK_RValue, OK_Ordinary, SourceLocation(), -                                   FPOptions()); +    BinaryOperator *lessThanExpr = BinaryOperator::Create( +        *Context, sizeofExpr, limit, BO_LE, Context->IntTy, VK_RValue, +        OK_Ordinary, SourceLocation(), FPOptionsOverride());      // (sizeof(returnType) <= 8 ? objc_msgSend(...) : objc_msgSend_stret(...))      ConditionalOperator *CondExpr =        new (Context) ConditionalOperator(lessThanExpr, @@ -3048,9 +3049,10 @@ Stmt *RewriteObjC::RewriteObjCProtocolExpr(ObjCProtocolExpr *Exp) {                                  nullptr, SC_Extern);    DeclRefExpr *DRE = new (Context) DeclRefExpr(        *Context, VD, false, getProtocolType(), VK_LValue, SourceLocation()); -  Expr *DerefExpr = new (Context) UnaryOperator(DRE, UO_AddrOf, -                             Context->getPointerType(DRE->getType()), -                             VK_RValue, OK_Ordinary, SourceLocation(), false); +  Expr *DerefExpr = UnaryOperator::Create( +      const_cast<ASTContext &>(*Context), DRE, UO_AddrOf, +      Context->getPointerType(DRE->getType()), VK_RValue, OK_Ordinary, +      SourceLocation(), false, FPOptionsOverride());    CastExpr *castExpr = NoTypeInfoCStyleCastExpr(Context, DerefExpr->getType(),                                                  CK_BitCast,                                                  DerefExpr); @@ -3631,7 +3633,7 @@ void RewriteObjC::InsertBlockLiteralsWithinFunction(FunctionDecl *FD) {  static void BuildUniqueMethodName(std::string &Name,                                    ObjCMethodDecl *MD) {    ObjCInterfaceDecl *IFace = MD->getClassInterface(); -  Name = IFace->getName(); +  Name = std::string(IFace->getName());    Name += "__" + MD->getSelector().getAsString();    // Convert colons to underscores.    std::string::size_type loc = 0; @@ -3875,9 +3877,9 @@ Stmt *RewriteObjC::RewriteLocalVariableExternalStorage(DeclRefExpr *DRE) {    if (VarDecl *Var = dyn_cast<VarDecl>(VD))      if (!ImportedLocalExternalDecls.count(Var))        return DRE; -  Expr *Exp = new (Context) UnaryOperator(DRE, UO_Deref, DRE->getType(), -                                          VK_LValue, OK_Ordinary, -                                          DRE->getLocation(), false); +  Expr *Exp = UnaryOperator::Create( +      const_cast<ASTContext &>(*Context), DRE, UO_Deref, DRE->getType(), +      VK_LValue, OK_Ordinary, DRE->getLocation(), false, FPOptionsOverride());    // Need parens to enforce precedence.    ParenExpr *PE = new (Context) ParenExpr(SourceLocation(), SourceLocation(),                                            Exp); @@ -4432,11 +4434,12 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,    VarDecl *NewVD = VarDecl::Create(        *Context, TUDecl, SourceLocation(), SourceLocation(),        &Context->Idents.get(DescData), Context->VoidPtrTy, nullptr, SC_Static); -  UnaryOperator *DescRefExpr = new (Context) UnaryOperator( +  UnaryOperator *DescRefExpr = UnaryOperator::Create( +      const_cast<ASTContext &>(*Context),        new (Context) DeclRefExpr(*Context, NewVD, false, Context->VoidPtrTy,                                  VK_LValue, SourceLocation()),        UO_AddrOf, Context->getPointerType(Context->VoidPtrTy), VK_RValue, -      OK_Ordinary, SourceLocation(), false); +      OK_Ordinary, SourceLocation(), false, FPOptionsOverride());    InitExprs.push_back(DescRefExpr);    // Add initializers for any closure decl refs. @@ -4453,9 +4456,9 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,          if (HasLocalVariableExternalStorage(*I)) {            QualType QT = (*I)->getType();            QT = Context->getPointerType(QT); -          Exp = new (Context) UnaryOperator(Exp, UO_AddrOf, QT, VK_RValue, -                                            OK_Ordinary, SourceLocation(), -                                            false); +          Exp = UnaryOperator::Create( +              const_cast<ASTContext &>(*Context), Exp, UO_AddrOf, QT, VK_RValue, +              OK_Ordinary, SourceLocation(), false, FPOptionsOverride());          }        } else if (isTopLevelBlockPointerType((*I)->getType())) {          FD = SynthBlockInitFunctionDecl((*I)->getName()); @@ -4470,9 +4473,9 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,          if (HasLocalVariableExternalStorage(*I)) {            QualType QT = (*I)->getType();            QT = Context->getPointerType(QT); -          Exp = new (Context) UnaryOperator(Exp, UO_AddrOf, QT, VK_RValue, -                                            OK_Ordinary, SourceLocation(), -                                            false); +          Exp = UnaryOperator::Create( +              const_cast<ASTContext &>(*Context), Exp, UO_AddrOf, QT, VK_RValue, +              OK_Ordinary, SourceLocation(), false, FPOptionsOverride());          }        }        InitExprs.push_back(Exp); @@ -4509,9 +4512,10 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,        // captured nested byref variable has its address passed. Do not take        // its address again.        if (!isNestedCapturedVar) -        Exp = new (Context) UnaryOperator( -            Exp, UO_AddrOf, Context->getPointerType(Exp->getType()), VK_RValue, -            OK_Ordinary, SourceLocation(), false); +        Exp = UnaryOperator::Create( +            const_cast<ASTContext &>(*Context), Exp, UO_AddrOf, +            Context->getPointerType(Exp->getType()), VK_RValue, OK_Ordinary, +            SourceLocation(), false, FPOptionsOverride());        Exp = NoTypeInfoCStyleCastExpr(Context, castT, CK_BitCast, Exp);        InitExprs.push_back(Exp);      } @@ -4527,9 +4531,10 @@ Stmt *RewriteObjC::SynthBlockInitExpr(BlockExpr *Exp,    }    NewRep = CallExpr::Create(*Context, DRE, InitExprs, FType, VK_LValue,                              SourceLocation()); -  NewRep = new (Context) UnaryOperator( -      NewRep, UO_AddrOf, Context->getPointerType(NewRep->getType()), VK_RValue, -      OK_Ordinary, SourceLocation(), false); +  NewRep = UnaryOperator::Create( +      const_cast<ASTContext &>(*Context), NewRep, UO_AddrOf, +      Context->getPointerType(NewRep->getType()), VK_RValue, OK_Ordinary, +      SourceLocation(), false, FPOptionsOverride());    NewRep = NoTypeInfoCStyleCastExpr(Context, FType, CK_BitCast,                                      NewRep);    BlockDeclRefs.clear(); @@ -5819,7 +5824,8 @@ Stmt *RewriteObjCFragileABI::RewriteObjCIvarRefExpr(ObjCIvarRefExpr *IV) {        assert(clsDeclared && "RewriteObjCIvarRefExpr(): Can't find class");        // Synthesize an explicit cast to gain access to the ivar. -      std::string RecName = clsDeclared->getIdentifier()->getName(); +      std::string RecName = +          std::string(clsDeclared->getIdentifier()->getName());        RecName += "_IMPL";        IdentifierInfo *II = &Context->Idents.get(RecName);        RecordDecl *RD = RecordDecl::Create(*Context, TTK_Struct, TUDecl, @@ -5859,7 +5865,8 @@ Stmt *RewriteObjCFragileABI::RewriteObjCIvarRefExpr(ObjCIvarRefExpr *IV) {        assert(clsDeclared && "RewriteObjCIvarRefExpr(): Can't find class");        // Synthesize an explicit cast to gain access to the ivar. -      std::string RecName = clsDeclared->getIdentifier()->getName(); +      std::string RecName = +          std::string(clsDeclared->getIdentifier()->getName());        RecName += "_IMPL";        IdentifierInfo *II = &Context->Idents.get(RecName);        RecordDecl *RD = RecordDecl::Create(*Context, TTK_Struct, TUDecl, | 
