diff options
-rw-r--r-- | contrib/gcc/Makefile.in | 10 | ||||
-rw-r--r-- | contrib/gcc/flags.h | 4 | ||||
-rw-r--r-- | contrib/gcc/libgcc2.c | 9 | ||||
-rw-r--r-- | contrib/gcc/reload.c | 32 |
4 files changed, 37 insertions, 18 deletions
diff --git a/contrib/gcc/Makefile.in b/contrib/gcc/Makefile.in index 46c96c5..fb75d52 100644 --- a/contrib/gcc/Makefile.in +++ b/contrib/gcc/Makefile.in @@ -1005,7 +1005,7 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \ SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ - SHLIB_SLIBDIR_SUFFIXES='$(SHLIB_SLIBDIR_SUFFIXES)' \ + MULTILIB_OSDIRNAMES='$(MULTILIB_OSDIRNAMES)' \ mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \ $(SHELL) mklibgcc > tmp-libgcc.mk mv tmp-libgcc.mk libgcc.mk @@ -1039,7 +1039,8 @@ libgcc.a: $(LIBGCC_DEPS) # switches. multilib.h: s-mlib; @true s-mlib: $(srcdir)/genmultilib Makefile - if test @enable_multilib@ = yes; then \ + if test @enable_multilib@ = yes \ + || test -n "$(MULTILIB_OSDIRNAMES)"; then \ $(SHELL) $(srcdir)/genmultilib \ "$(MULTILIB_OPTIONS)" \ "$(MULTILIB_DIRNAMES)" \ @@ -1047,9 +1048,12 @@ s-mlib: $(srcdir)/genmultilib Makefile "$(MULTILIB_EXCEPTIONS)" \ "$(MULTILIB_EXTRA_OPTS)" \ "$(MULTILIB_EXCLUSIONS)" \ + "$(MULTILIB_OSDIRNAMES)" \ + "@enable_multilib@" \ > tmp-mlib.h; \ else \ - $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' > tmp-mlib.h; \ + $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \ + > tmp-mlib.h; \ fi $(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h $(STAMP) s-mlib diff --git a/contrib/gcc/flags.h b/contrib/gcc/flags.h index d402ec8..16848f6 100644 --- a/contrib/gcc/flags.h +++ b/contrib/gcc/flags.h @@ -606,6 +606,10 @@ extern int align_labels_max_skip; extern int align_functions; extern int align_functions_log; +/* Like align_functions_log above, but used by front-ends to force the + minimum function alignment. Zero means no alignment is forced. */ +extern int force_align_functions_log; + /* Nonzero if we dump in VCG format, not plain text. */ extern int dump_for_graph; diff --git a/contrib/gcc/libgcc2.c b/contrib/gcc/libgcc2.c index fe93de3..322ee92 100644 --- a/contrib/gcc/libgcc2.c +++ b/contrib/gcc/libgcc2.c @@ -1,7 +1,7 @@ /* More subroutines needed by GCC output code on some machines. */ /* Compile this one with gcc. */ /* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 Free Software Foundation, Inc. + 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GCC. @@ -38,8 +38,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "tconfig.h" #include "tsystem.h" -#include "machmode.h" - /* Don't use `fancy_abort' here even if config.h says to use it. */ #ifdef abort #undef abort @@ -1119,7 +1117,10 @@ __floatdisf (DWtype u) && u < ((DWtype) 1 << DF_SIZE))) { if ((UDWtype) u & (REP_BIT - 1)) - u |= REP_BIT; + { + u &= ~ (REP_BIT - 1); + u |= REP_BIT; + } } } f = (Wtype) (u >> WORD_SIZE); diff --git a/contrib/gcc/reload.c b/contrib/gcc/reload.c index 4b331f0..bbb1f94 100644 --- a/contrib/gcc/reload.c +++ b/contrib/gcc/reload.c @@ -1287,12 +1287,17 @@ push_reload (in, out, inloc, outloc, class, So add an additional reload. */ #ifdef SECONDARY_MEMORY_NEEDED - /* If a memory location is needed for the copy, make one. */ - if (in != 0 && GET_CODE (in) == REG - && REGNO (in) < FIRST_PSEUDO_REGISTER - && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (in)), - class, inmode)) - get_secondary_mem (in, inmode, opnum, type); + { + int regnum; + + /* If a memory location is needed for the copy, make one. */ + if (in != 0 + && ((regnum = true_regnum (in)) >= 0) + && regnum < FIRST_PSEUDO_REGISTER + && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (regnum), + class, inmode)) + get_secondary_mem (in, inmode, opnum, type); + } #endif i = n_reloads; @@ -1318,11 +1323,16 @@ push_reload (in, out, inloc, outloc, class, n_reloads++; #ifdef SECONDARY_MEMORY_NEEDED - if (out != 0 && GET_CODE (out) == REG - && REGNO (out) < FIRST_PSEUDO_REGISTER - && SECONDARY_MEMORY_NEEDED (class, REGNO_REG_CLASS (REGNO (out)), - outmode)) - get_secondary_mem (out, outmode, opnum, type); + { + int regnum; + + if (out != 0 + && ((regnum = true_regnum (out)) >= 0) + && regnum < FIRST_PSEUDO_REGISTER + && SECONDARY_MEMORY_NEEDED (class, REGNO_REG_CLASS (regnum), + outmode)) + get_secondary_mem (out, outmode, opnum, type); + } #endif } else |