tree-inline.c (find_builtin_longjmp_call): Save and restore lineno and input_filename.

* tree-inline.c (find_builtin_longjmp_call): Save and restore
        lineno and input_filename.
        (find_alloca_call): Likewise.
        (inlinable_function_p): Run the langhook earlier.

        * calls.c (compute_argument_addresses): Give the new MEMs a
        minimum alignment of PARM_BOUNDARY.
cp/
        * decl.c (start_function): Clear DECL_NUM_STMTS.

        * class.c (get_vtable_decl): Use vtbl_type_node.
        (build_primary_vtable): Check for it.

From-SVN: r63733
This commit is contained in:
Jason Merrill 2003-03-03 16:28:23 -05:00 committed by Jason Merrill
parent d44cc4047b
commit d1a74aa7d3
6 changed files with 41 additions and 9 deletions

View File

@ -1,3 +1,13 @@
2003-03-03 Jason Merrill <jason@redhat.com>
* tree-inline.c (find_builtin_longjmp_call): Save and restore
lineno and input_filename.
(find_alloca_call): Likewise.
(inlinable_function_p): Run the langhook earlier.
* calls.c (compute_argument_addresses): Give the new MEMs a
minimum alignment of PARM_BOUNDARY.
Mon Mar 3 20:45:25 2003 J"orn Rennecke <joern.rennecke@superh.com>
* config/sh/sh.h (EXTRA_SPECS): Add subtarget_asm_relax_spec and

View File

@ -1634,6 +1634,7 @@ compute_argument_addresses (args, argblock, num_actuals)
addr = plus_constant (addr, arg_offset);
args[i].stack = gen_rtx_MEM (args[i].mode, addr);
set_mem_align (args[i].stack, PARM_BOUNDARY);
set_mem_attributes (args[i].stack,
TREE_TYPE (args[i].tree_value), 1);
@ -1644,6 +1645,7 @@ compute_argument_addresses (args, argblock, num_actuals)
addr = plus_constant (addr, arg_offset);
args[i].stack_slot = gen_rtx_MEM (args[i].mode, addr);
set_mem_align (args[i].stack_slot, PARM_BOUNDARY);
set_mem_attributes (args[i].stack_slot,
TREE_TYPE (args[i].tree_value), 1);
@ -4578,7 +4580,6 @@ store_one_arg (arg, argblock, flags, variable_size, reg_parm_stack_space)
return sibcall_failure;
}
/* Nonzero if we do not know how to pass TYPE solely in registers.
We cannot do so in the following cases:

View File

@ -1,3 +1,10 @@
2003-03-03 Jason Merrill <jason@redhat.com>
* decl.c (start_function): Clear DECL_NUM_STMTS.
* class.c (get_vtable_decl): Use vtbl_type_node.
(build_primary_vtable): Check for it.
2003-03-02 Aldy Hernandez <aldyh@redhat.com>
* decl.c (check_initializer): Check for vector_opaque_p.

View File

@ -533,7 +533,7 @@ get_vtable_decl (tree type, int complete)
if (CLASSTYPE_VTABLES (type))
return CLASSTYPE_VTABLES (type);
decl = build_vtable (type, get_vtable_name (type), void_type_node);
decl = build_vtable (type, get_vtable_name (type), vtbl_type_node);
CLASSTYPE_VTABLES (type) = decl;
/* At one time the vtable info was grabbed 2 words at a time. This
@ -594,8 +594,7 @@ build_primary_vtable (tree binfo, tree type)
}
else
{
my_friendly_assert (TREE_CODE (TREE_TYPE (decl)) == VOID_TYPE,
20000118);
my_friendly_assert (TREE_TYPE (decl) == vtbl_type_node, 20000118);
virtuals = NULL_TREE;
}

View File

@ -13554,6 +13554,9 @@ start_function (tree declspecs, tree declarator, tree attrs, int flags)
/* Start the statement-tree, start the tree now. */
begin_stmt_tree (&DECL_SAVED_TREE (decl1));
/* Don't double-count statements in templates. */
DECL_NUM_STMTS (decl1) = 0;
/* Let the user know we're compiling this function. */
announce_function (decl1);

View File

@ -895,7 +895,12 @@ static tree
find_alloca_call (exp)
tree exp;
{
return walk_tree (&exp, find_alloca_call_1, NULL, NULL);
int line = lineno;
const char *file = input_filename;
tree ret = walk_tree (&exp, find_alloca_call_1, NULL, NULL);
lineno = line;
input_filename = file;
return ret;
}
static tree
@ -921,7 +926,12 @@ static tree
find_builtin_longjmp_call (exp)
tree exp;
{
return walk_tree (&exp, find_builtin_longjmp_call_1, NULL, NULL);
int line = lineno;
const char *file = input_filename;
tree ret = walk_tree (&exp, find_builtin_longjmp_call_1, NULL, NULL);
lineno = line;
input_filename = file;
return ret;
}
/* Returns nonzero if FN is a function that can be inlined into the
@ -942,6 +952,11 @@ inlinable_function_p (fn, id)
if (DECL_UNINLINABLE (fn))
return 0;
/* Check this now so that we instantiate C++ templates before reading
DECL_NUM_STMTS. */
if ((*lang_hooks.tree_inlining.cannot_inline_tree_fn) (&fn))
return 0;
/* Assume it is not inlinable. */
inlinable = 0;
@ -1022,9 +1037,6 @@ inlinable_function_p (fn, id)
}
}
if (inlinable && (*lang_hooks.tree_inlining.cannot_inline_tree_fn) (&fn))
inlinable = 0;
/* If we don't have the function body available, we can't inline
it. */
if (! DECL_SAVED_TREE (fn))