diff options
Diffstat (limited to 'contrib/gcc/objc')
-rw-r--r-- | contrib/gcc/objc/lang-specs.h | 10 | ||||
-rw-r--r-- | contrib/gcc/objc/objc-act.c | 13 | ||||
-rw-r--r-- | contrib/gcc/objc/objc-lang.c | 3 |
3 files changed, 18 insertions, 8 deletions
diff --git a/contrib/gcc/objc/lang-specs.h b/contrib/gcc/objc/lang-specs.h index 2abf633..66e705b 100644 --- a/contrib/gcc/objc/lang-specs.h +++ b/contrib/gcc/objc/lang-specs.h @@ -27,15 +27,15 @@ Boston, MA 02111-1307, USA. */ external preprocessor if -save-temps or -traditional is given. */ "%{E|M|MM:%(trad_capable_cpp) -lang-objc %{ansi:-std=c89} %(cpp_options)}\ %{!E:%{!M:%{!MM:\ - %{save-temps:%(trad_capable_cpp) -lang-objc %{ansi:-std=c89}\ - %(cpp_options) %b.mi \n\ - cc1obj -fpreprocessed %b.mi %(cc1_options) %{gen-decls}}\ - %{!save-temps:\ + %{save-temps|no-integrated-cpp:%(trad_capable_cpp) -lang-objc %{ansi:-std=c89}\ + %(cpp_options) %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ + cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{gen-decls}}\ + %{!save-temps:%{!no-integrated-cpp:\ %{traditional|ftraditional|traditional-cpp:\ tradcpp0 -lang-objc %{ansi:-std=c89} %(cpp_options) %{!pipe:%g.mi} |\n\ cc1obj -fpreprocessed %{!pipe:%g.mi} %(cc1_options) %{gen-decls}}\ %{!traditional:%{!ftraditional:%{!traditional-cpp:\ - cc1obj %{ansi:-std=c89} %(cpp_unique_options) %(cc1_options) %{gen-decls}}}}}\ + cc1obj %{ansi:-std=c89} %(cpp_unique_options) %(cc1_options) %{gen-decls}}}}}}\ %{!fsyntax-only:%(invoke_as)}}}}", 0}, {".mi", "@objc-cpp-output", 0}, {"@objc-cpp-output", diff --git a/contrib/gcc/objc/objc-act.c b/contrib/gcc/objc/objc-act.c index 91b2223..02cb099 100644 --- a/contrib/gcc/objc/objc-act.c +++ b/contrib/gcc/objc/objc-act.c @@ -1773,7 +1773,7 @@ build_module_descriptor () c_expand_expr_stmt (decelerator); - finish_function (0); + finish_function (0, 0); return XEXP (DECL_RTL (init_function_decl), 0); } @@ -2393,6 +2393,13 @@ objc_copy_list (list, head) while (list) { tail = copy_node (list); + + /* The following statement fixes a bug when inheriting instance + variables that are declared to be bitfields. finish_struct + expects to find the width of the bitfield in DECL_INITIAL. */ + if (DECL_BIT_FIELD (tail) && DECL_INITIAL (tail) == 0) + DECL_INITIAL (tail) = DECL_SIZE (tail); + newlist = chainon (newlist, tail); list = TREE_CHAIN (list); } @@ -7300,7 +7307,7 @@ void finish_method_def () { lang_expand_function_end = objc_expand_function_end; - finish_function (0); + finish_function (0, 1); lang_expand_function_end = NULL; /* Required to implement _msgSuper. This must be done AFTER finish_function, @@ -8323,7 +8330,7 @@ handle_impent (impent) string = (char *) alloca (strlen (class_name) + 30); - sprintf (string, "*%sobjc_class_name_%s", + sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), class_name); } else if (TREE_CODE (impent->imp_context) == CATEGORY_IMPLEMENTATION_TYPE) diff --git a/contrib/gcc/objc/objc-lang.c b/contrib/gcc/objc/objc-lang.c index 7e2cae7..874a9c3 100644 --- a/contrib/gcc/objc/objc-lang.c +++ b/contrib/gcc/objc/objc-lang.c @@ -60,6 +60,9 @@ static void objc_post_options PARAMS ((void)); #undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P #define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ anon_aggr_type_p +#undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING +#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ + c_convert_parm_for_inlining /* Each front end provides its own hooks, for toplev.c. */ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; |