Commit 6961a592 by Giovanni Bajo

init.c (build_new_1): Deal with an OVERLOAD set when looking up for _Jv_AllocObject.

	* init.c (build_new_1): Deal with an OVERLOAD set when
	looking up for _Jv_AllocObject.
	* except.c (build_throw): Likewise for _Jv_Throw.

From-SVN: r74474
parent 6975bd2c
2003-12-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
* init.c (build_new_1): Deal with an OVERLOAD set when
looking up for _Jv_AllocObject.
* except.c (build_throw): Likewise for _Jv_Throw.
2003-12-08 Jason Merrill <jason@redhat.com> 2003-12-08 Jason Merrill <jason@redhat.com>
PR c++/11971 PR c++/11971
......
...@@ -645,6 +645,11 @@ build_throw (tree exp) ...@@ -645,6 +645,11 @@ build_throw (tree exp)
tmp = build_function_type (ptr_type_node, tmp); tmp = build_function_type (ptr_type_node, tmp);
fn = push_throw_library_fn (fn, tmp); fn = push_throw_library_fn (fn, tmp);
} }
else if (really_overloaded_fn (fn))
{
error ("`%D' should never be overloaded", fn);
return error_mark_node;
}
fn = OVL_CURRENT (fn); fn = OVL_CURRENT (fn);
exp = build_function_call (fn, tree_cons (NULL_TREE, exp, NULL_TREE)); exp = build_function_call (fn, tree_cons (NULL_TREE, exp, NULL_TREE));
} }
......
...@@ -2005,11 +2005,18 @@ build_new_1 (tree exp) ...@@ -2005,11 +2005,18 @@ build_new_1 (tree exp)
tree class_size = size_in_bytes (true_type); tree class_size = size_in_bytes (true_type);
static const char alloc_name[] = "_Jv_AllocObject"; static const char alloc_name[] = "_Jv_AllocObject";
use_java_new = 1; use_java_new = 1;
alloc_decl = IDENTIFIER_GLOBAL_VALUE (get_identifier (alloc_name)); if (!get_global_value_if_present (get_identifier (alloc_name),
if (alloc_decl == NULL_TREE) &alloc_decl))
fatal_error ("call to Java constructor with `%s' undefined", {
alloc_name); error ("call to Java constructor with `%s' undefined", alloc_name);
return error_mark_node;
}
else if (really_overloaded_fn (alloc_decl))
{
error ("`%D' should never be overloaded", alloc_decl);
return error_mark_node;
}
alloc_decl = OVL_CURRENT (alloc_decl);
class_addr = build1 (ADDR_EXPR, jclass_node, class_decl); class_addr = build1 (ADDR_EXPR, jclass_node, class_decl);
alloc_call = (build_function_call alloc_call = (build_function_call
(alloc_decl, (alloc_decl,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment