aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2005-04-21 21:31:40 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2005-04-21 21:31:40 +0000
commitdbb743654f3b7d96ba40b9683feed4cb20e4435d (patch)
treed315e995a7b40e667b44d79bab6a3168904d425a /gcc/objc
parent915167f5a5a8f8f5a4107b7fa7df7fe5aae66365 (diff)
downloadgcc-dbb743654f3b7d96ba40b9683feed4cb20e4435d.zip
gcc-dbb743654f3b7d96ba40b9683feed4cb20e4435d.tar.gz
gcc-dbb743654f3b7d96ba40b9683feed4cb20e4435d.tar.bz2
c-common.h (objc_build_method_signature): Update prototype.
* c-common.h (objc_build_method_signature): Update prototype. * stub-objc.c (objc_build_method_signature): Update the stub implementation to accept and ignore additional parameter. * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass the value of ellipsis to objc_build_method_signature instead of setting TREE_OVERFLOW on the parms TREE_LIST node. * objc-act.h (METHOD_ADD_ARGS_ELLIPSIS_P): New macro for accessing this field of an objc method decl. * objc-act.c (build_method_decl): Take an additional "ellipsis" argument, and set METHOD_ADD_ARGS_ELLIPSIS_P as appropriate. (objc_build_method_signature): Accept additional "ellipsis" argument and pass it to build_method_decl. (get_arg_type_list, start_method_def, gen_method_decl): Use the new METHOD_ADD_ARGS_ELLIPSIS_P instead of examining the TREE_OVERFLOW field of a TREE_LIST node. From-SVN: r98528
Diffstat (limited to 'gcc/objc')
-rw-r--r--gcc/objc/ChangeLog12
-rw-r--r--gcc/objc/objc-act.c17
-rw-r--r--gcc/objc/objc-act.h1
3 files changed, 23 insertions, 7 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 01c8a2b..b6583b4 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,15 @@
+2005-04-21 Roger Sayle <roger@eyesopen.com>
+
+ * objc-act.h (METHOD_ADD_ARGS_ELLIPSIS_P): New macro for accessing
+ this field of an objc method decl.
+ * objc-act.c (build_method_decl): Take an additional "ellipsis"
+ argument, and set METHOD_ADD_ARGS_ELLIPSIS_P as appropriate.
+ (objc_build_method_signature): Accept additional "ellipsis"
+ argument and pass it to build_method_decl.
+ (get_arg_type_list, start_method_def, gen_method_decl): Use
+ the new METHOD_ADD_ARGS_ELLIPSIS_P instead of examining the
+ TREE_OVERFLOW field of a TREE_LIST node.
+
2005-04-20 Joseph S. Myers <joseph@codesourcery.com>
PR c/12913
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 62d5c84..017c2cd 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -164,7 +164,7 @@ static void objc_start_function (tree, tree, tree, tree);
static void objc_start_function (tree, tree, tree, struct c_arg_info *);
#endif
static tree start_protocol (enum tree_code, tree, tree);
-static tree build_method_decl (enum tree_code, tree, tree, tree);
+static tree build_method_decl (enum tree_code, tree, tree, tree, bool);
static tree objc_add_method (tree, tree, int);
static tree add_instance_variable (tree, int, tree);
static tree build_ivar_reference (tree);
@@ -771,9 +771,11 @@ objc_set_method_type (enum tree_code type)
}
tree
-objc_build_method_signature (tree rettype, tree selector, tree optparms)
+objc_build_method_signature (tree rettype, tree selector,
+ tree optparms, bool ellipsis)
{
- return build_method_decl (objc_inherit_code, rettype, selector, optparms);
+ return build_method_decl (objc_inherit_code, rettype, selector,
+ optparms, ellipsis);
}
void
@@ -5263,7 +5265,7 @@ build_keyword_selector (tree selector)
static tree
build_method_decl (enum tree_code code, tree ret_type, tree selector,
- tree add_args)
+ tree add_args, bool ellipsis)
{
tree method_decl;
@@ -5280,6 +5282,7 @@ build_method_decl (enum tree_code code, tree ret_type, tree selector,
METHOD_SEL_NAME (method_decl) = build_keyword_selector (selector);
METHOD_SEL_ARGS (method_decl) = selector;
METHOD_ADD_ARGS (method_decl) = add_args;
+ METHOD_ADD_ARGS_ELLIPSIS_P (method_decl) = ellipsis;
}
else
{
@@ -5347,7 +5350,7 @@ get_arg_type_list (tree meth, int context, int superflag)
chainon (arglist, build_tree_list (NULL_TREE, arg_type));
}
- if (!TREE_OVERFLOW (METHOD_ADD_ARGS (meth)))
+ if (!METHOD_ADD_ARGS_ELLIPSIS_P (meth))
goto lack_of_ellipsis;
}
else
@@ -7536,7 +7539,7 @@ start_method_def (tree method)
objc_push_parm (TREE_VALUE (akey));
}
- if (TREE_OVERFLOW (METHOD_ADD_ARGS (method)))
+ if (METHOD_ADD_ARGS_ELLIPSIS_P (method))
have_ellipsis = 1;
}
@@ -8116,7 +8119,7 @@ gen_method_decl (tree method)
chain = TREE_CHAIN (chain);
}
- if (TREE_OVERFLOW (METHOD_ADD_ARGS (method)))
+ if (METHOD_ADD_ARGS_ELLIPSIS_P (method))
strcat (errbuf, ", ...");
}
}
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
index 4050303..fe84260 100644
--- a/gcc/objc/objc-act.h
+++ b/gcc/objc/objc-act.h
@@ -52,6 +52,7 @@ enum gimplify_status objc_gimplify_expr (tree *, tree *, tree *);
#define METHOD_SEL_NAME(DECL) ((DECL)->decl.name)
#define METHOD_SEL_ARGS(DECL) ((DECL)->decl.arguments)
#define METHOD_ADD_ARGS(DECL) ((DECL)->decl.result)
+#define METHOD_ADD_ARGS_ELLIPSIS_P(DECL) ((DECL)->decl.lang_flag_0)
#define METHOD_DEFINITION(DECL) ((DECL)->decl.initial)
#define METHOD_ENCODING(DECL) ((DECL)->decl.context)