From: Fariborz Jahanian Date: Wed, 21 Mar 2012 16:17:22 +0000 (+0000) Subject: modern objective-c rewriter: remove 'const' from X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7e725bc7a099fefa5e0f03e2208838d3cdf064e3;p=clang modern objective-c rewriter: remove 'const' from pointer field declarations in several meta-data. // rdar://11079898 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153192 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 1efa4f2f17..2ce1e895dc 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -5159,7 +5159,7 @@ def ext_return_has_expr : ExtWarn< "should not return a value">, DefaultError, InGroup; def ext_return_has_void_expr : Extension< - "void %select{function|method}1 %0 should not return void expression">; + "void %select{function|method|block}1 %0 should not return void expression">; def err_return_init_list : Error< "%select{void function|void method|constructor|destructor}1 %0 " "must not return a value">; diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index d8171e6248..c08d740412 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -5227,10 +5227,10 @@ void RewriteModernObjC::RewriteIvarOffsetComputation(ObjCIvarDecl *ivar, /// struct _protocol_t { /// id isa; // NULL -/// const char * const protocol_name; +/// const char *protocol_name; /// const struct _protocol_list_t * protocol_list; // super protocols -/// const struct method_list_t * const instance_methods; -/// const struct method_list_t * const class_methods; +/// const struct method_list_t *instance_methods; +/// const struct method_list_t *class_methods; /// const struct method_list_t *optionalInstanceMethods; /// const struct method_list_t *optionalClassMethods; /// const struct _prop_list_t * properties; @@ -5258,13 +5258,13 @@ void RewriteModernObjC::RewriteIvarOffsetComputation(ObjCIvarDecl *ivar, /// uint32_t const instanceStart; /// uint32_t const instanceSize; /// uint32_t const reserved; // only when building for 64bit targets -/// const uint8_t * const ivarLayout; -/// const char *const name; -/// const struct _method_list_t * const baseMethods; -/// const struct _protocol_list_t *const baseProtocols; -/// const struct _ivar_list_t *const ivars; -/// const uint8_t * const weakIvarLayout; -/// const struct _prop_list_t * const properties; +/// const uint8_t *ivarLayout; +/// const char *name; +/// const struct _method_list_t *baseMethods; +/// const struct _protocol_list_t *baseProtocols; +/// const struct _ivar_list_t *ivars; +/// const uint8_t *weakIvarLayout; +/// const struct _prop_list_t *properties; /// } /// struct _class_t { @@ -5276,12 +5276,12 @@ void RewriteModernObjC::RewriteIvarOffsetComputation(ObjCIvarDecl *ivar, /// } /// struct _category_t { -/// const char * const name; +/// const char *name; /// struct _class_t *cls; -/// const struct _method_list_t * const instance_methods; -/// const struct _method_list_t * const class_methods; -/// const struct _protocol_list_t * const protocols; -/// const struct _prop_list_t * const properties; +/// const struct _method_list_t *instance_methods; +/// const struct _method_list_t *class_methods; +/// const struct _protocol_list_t *protocols; +/// const struct _prop_list_t *properties; /// } /// MessageRefTy - LLVM for: @@ -5316,10 +5316,10 @@ static void WriteModernMetadataDeclarations(ASTContext *Context, std::string &Re Result += "\nstruct _protocol_t {\n"; Result += "\tvoid * isa; // NULL\n"; - Result += "\tconst char * const protocol_name;\n"; + Result += "\tconst char *protocol_name;\n"; Result += "\tconst struct _protocol_list_t * protocol_list; // super protocols\n"; - Result += "\tconst struct method_list_t * const instance_methods;\n"; - Result += "\tconst struct method_list_t * const class_methods;\n"; + Result += "\tconst struct method_list_t *instance_methods;\n"; + Result += "\tconst struct method_list_t *class_methods;\n"; Result += "\tconst struct method_list_t *optionalInstanceMethods;\n"; Result += "\tconst struct method_list_t *optionalClassMethods;\n"; Result += "\tconst struct _prop_list_t * properties;\n"; @@ -5343,13 +5343,13 @@ static void WriteModernMetadataDeclarations(ASTContext *Context, std::string &Re const llvm::Triple &Triple(Context->getTargetInfo().getTriple()); if (Triple.getArch() == llvm::Triple::x86_64) Result += "\tunsigned int const reserved;\n"; - Result += "\tconst unsigned char * const ivarLayout;\n"; - Result += "\tconst char *const name;\n"; - Result += "\tconst struct _method_list_t * const baseMethods;\n"; - Result += "\tconst struct _objc_protocol_list *const baseProtocols;\n"; - Result += "\tconst struct _ivar_list_t *const ivars;\n"; - Result += "\tconst unsigned char *const weakIvarLayout;\n"; - Result += "\tconst struct _prop_list_t *const properties;\n"; + Result += "\tconst unsigned char *ivarLayout;\n"; + Result += "\tconst char *name;\n"; + Result += "\tconst struct _method_list_t *baseMethods;\n"; + Result += "\tconst struct _objc_protocol_list *baseProtocols;\n"; + Result += "\tconst struct _ivar_list_t *ivars;\n"; + Result += "\tconst unsigned char *weakIvarLayout;\n"; + Result += "\tconst struct _prop_list_t *properties;\n"; Result += "};\n"; Result += "\nstruct _class_t {\n"; @@ -5361,12 +5361,12 @@ static void WriteModernMetadataDeclarations(ASTContext *Context, std::string &Re Result += "};\n"; Result += "\nstruct _category_t {\n"; - Result += "\tconst char * const name;\n"; + Result += "\tconst char *name;\n"; Result += "\tstruct _class_t *cls;\n"; - Result += "\tconst struct _method_list_t *const instance_methods;\n"; - Result += "\tconst struct _method_list_t *const class_methods;\n"; - Result += "\tconst struct _protocol_list_t *const protocols;\n"; - Result += "\tconst struct _prop_list_t *const properties;\n"; + Result += "\tconst struct _method_list_t *instance_methods;\n"; + Result += "\tconst struct _method_list_t *class_methods;\n"; + Result += "\tconst struct _protocol_list_t *protocols;\n"; + Result += "\tconst struct _prop_list_t *properties;\n"; Result += "};\n"; Result += "__declspec(dllimport) extern struct objc_cache _objc_empty_cache;\n"; @@ -6337,8 +6337,6 @@ void RewriteModernObjC::RewriteObjCClassMetaData(ObjCImplementationDecl *IDecl, void RewriteModernObjC::RewriteMetaDataIntoBuffer(std::string &Result) { int ClsDefCount = ClassImplementation.size(); int CatDefCount = CategoryImplementation.size(); - if (LangOpts.MicrosoftExt) - Result += "#pragma optimize(\"g\", on)"; // For each implemented class, write out all its meta data. for (int i = 0; i < ClsDefCount; i++) @@ -6408,8 +6406,6 @@ void RewriteModernObjC::RewriteMetaDataIntoBuffer(std::string &Result) { } Result += "};\n"; } - if (LangOpts.MicrosoftExt) - Result += "#pragma optimize(\"\", on)\n"; } void RewriteModernObjC::WriteImageInfo(std::string &Result) { diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index ef453f5c6a..333f6dd255 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -1886,8 +1886,13 @@ Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp) { !(getLangOpts().CPlusPlus && (RetValExp->isTypeDependent() || RetValExp->getType()->isVoidType()))) { - Diag(ReturnLoc, diag::err_return_block_has_expr); - RetValExp = 0; + if (!getLangOpts().CPlusPlus && + RetValExp->getType()->isVoidType()) + Diag(ReturnLoc, diag::ext_return_has_void_expr) << "" << 2; + else { + Diag(ReturnLoc, diag::err_return_block_has_expr); + RetValExp = 0; + } } } else if (!RetValExp) { return StmtError(Diag(ReturnLoc, diag::err_block_return_missing_expr));