aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-09-20 22:38:29 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2004-09-20 20:38:29 +0000
commit8f2353433c31121e5ec31f24d70b80c385fb28ff (patch)
tree25c6e4482c10189121acfa2bf0f54130a9876b63 /gcc/ada
parent04161e2bde5dee7dbe9c7863f3cb6f262c8d059c (diff)
downloadgcc-8f2353433c31121e5ec31f24d70b80c385fb28ff.zip
gcc-8f2353433c31121e5ec31f24d70b80c385fb28ff.tar.gz
gcc-8f2353433c31121e5ec31f24d70b80c385fb28ff.tar.bz2
re PR middle-end/16460 (ICE when compiling glibc (ld-ctype.c))
PR middle-end/16460 * cgraph.c (cgraph_unnest_node): New function. (c_finalize): Rename to .... (c_warn_unused_result_recursivly): ... this one; do only the warning (finish_function): Finalize the toplevel function; do not lower nested tree. * cgraph.h (cgraph_unnest_node): Declare. * cgraphunit.c (decide_is_function_needed): Do not use cgraph nestedness datastructure. * cse.c (cse_insn): Do not cprop nonlocal LABEL_REFs. * reload1.c (set_label_offsets): Fix call of set_label_offsets. * tree-nested.c (finlize_nesting_tree_1): Use un-nesting code. * utils.c (gnat_finalize): Remove. (end_subprog_body): Directly call cgraph_finalize_function; do not lower the nested functions. * trans-decl.c (build_entry_thunks): Finalize the function; do not lower tree. (gfc_generate_function_code): Likewise. From-SVN: r87770
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/utils.c19
2 files changed, 7 insertions, 18 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8c1632d..d550302 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-20 Jan Hubicka <jh@suse.cz>
+
+ * utils.c (gnat_finalize): Remove.
+ (end_subprog_body): Directly call cgraph_finalize_function;
+ do not lower the nested functions.
+
2004-09-20 Robert Dewar <dewar@gnat.com>
PR ada/17540
diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c
index 1a5afb3..e09c83e 100644
--- a/gcc/ada/utils.c
+++ b/gcc/ada/utils.c
@@ -125,7 +125,6 @@ static tree compute_related_constant (tree, tree);
static tree split_plus (tree, tree *);
static bool value_zerop (tree);
static void gnat_gimplify_function (tree);
-static void gnat_finalize (tree);
static tree float_type_for_precision (int, enum machine_mode);
static tree convert_to_fat_pointer (tree, tree);
static tree convert_to_thin_pointer (tree, tree);
@@ -1793,8 +1792,7 @@ end_subprog_body (tree body)
if (!DECL_CONTEXT (fndecl))
{
gnat_gimplify_function (fndecl);
- lower_nested_functions (fndecl);
- gnat_finalize (fndecl);
+ cgraph_finalize_function (fndecl, false);
}
else
/* Register this function with cgraph just far enough to get it
@@ -1820,21 +1818,6 @@ gnat_gimplify_function (tree fndecl)
for (cgn = cgn->nested; cgn; cgn = cgn->next_nested)
gnat_gimplify_function (cgn->decl);
}
-
-/* Give FNDECL and all its nested functions to cgraph for compilation. */
-
-static void
-gnat_finalize (tree fndecl)
-{
- struct cgraph_node *cgn;
-
- /* Finalize all nested functions now. */
- cgn = cgraph_node (fndecl);
- for (cgn = cgn->nested; cgn ; cgn = cgn->next_nested)
- gnat_finalize (cgn->decl);
-
- cgraph_finalize_function (fndecl, false);
-}
/* Return a definition for a builtin function named NAME and whose data type
is TYPE. TYPE should be a function type with argument types.