aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-06-22 02:02:28 +0000
committerRichard Stallman <rms@gnu.org>1992-06-22 02:02:28 +0000
commitab40ad2b6ad5769c8bcb4741c47b93622d1a8a09 (patch)
treebf1819d4928a2b99055cc89e9dae5efea06297fd /gcc
parent4d06f14570ebec47f666a03bd7f67b832d1e7f0f (diff)
downloadgcc-ab40ad2b6ad5769c8bcb4741c47b93622d1a8a09.zip
gcc-ab40ad2b6ad5769c8bcb4741c47b93622d1a8a09.tar.gz
gcc-ab40ad2b6ad5769c8bcb4741c47b93622d1a8a09.tar.bz2
*** empty log message ***
From-SVN: r1231
Diffstat (limited to 'gcc')
-rw-r--r--gcc/global.c9
-rw-r--r--gcc/toplev.c12
2 files changed, 14 insertions, 7 deletions
diff --git a/gcc/global.c b/gcc/global.c
index 3f9b081..527d67f 100644
--- a/gcc/global.c
+++ b/gcc/global.c
@@ -262,9 +262,12 @@ static void set_preference ();
/* Perform allocation of pseudo-registers not allocated by local_alloc.
FILE is a file to output debugging information on,
- or zero if such output is not desired. */
+ or zero if such output is not desired.
-void
+ Return value is nonzero if reload failed
+ and we must not do any more for this function. */
+
+int
global_alloc (file)
FILE *file;
{
@@ -543,7 +546,7 @@ global_alloc (file)
for the sake of debugging information. */
if (n_basic_blocks > 0)
#endif
- reload (get_insns (), 1, file);
+ return reload (get_insns (), 1, file);
}
/* Sort predicate for ordering the allocnos.
diff --git a/gcc/toplev.c b/gcc/toplev.c
index a814984..a4da795 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1977,6 +1977,7 @@ rest_of_compilation (decl)
to be restored after we finish compiling the function
(for use when compiling inline calls to this function). */
tree saved_block_tree = 0;
+ int failure = 0;
/* If we are reconsidering an inline function
at the end of compilation, skip the stuff for making it inline. */
@@ -2343,10 +2344,10 @@ rest_of_compilation (decl)
TIMEVAR (global_alloc_time,
{
if (!obey_regdecls)
- global_alloc (global_reg_dump ? global_reg_dump_file : 0);
+ failure = global_alloc (global_reg_dump ? global_reg_dump_file : 0);
else
- reload (insns, 0,
- global_reg_dump ? global_reg_dump_file : 0);
+ failure = reload (insns, 0,
+ global_reg_dump ? global_reg_dump_file : 0);
});
if (global_reg_dump)
@@ -2357,6 +2358,9 @@ rest_of_compilation (decl)
fflush (global_reg_dump_file);
});
+ if (failure)
+ goto exit_rest_of_compilation;
+
reload_completed = 1;
if (optimize > 0 && flag_schedule_insns_after_reload)
@@ -2386,7 +2390,7 @@ rest_of_compilation (decl)
#ifdef LEAF_REGISTERS
leaf_function = 0;
if (optimize > 0 && only_leaf_regs_used () && leaf_function_p ())
- leaf_function = 1;
+ leaf_function = 1;
#endif
/* One more attempt to remove jumps to .+1