diff options
author | Richard Stallman <rms@gnu.org> | 1992-06-22 02:02:28 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-06-22 02:02:28 +0000 |
commit | ab40ad2b6ad5769c8bcb4741c47b93622d1a8a09 (patch) | |
tree | bf1819d4928a2b99055cc89e9dae5efea06297fd /gcc | |
parent | 4d06f14570ebec47f666a03bd7f67b832d1e7f0f (diff) | |
download | gcc-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.c | 9 | ||||
-rw-r--r-- | gcc/toplev.c | 12 |
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 |