summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvs2svn <cvs2svn@FreeBSD.org>1996-10-03 22:58:34 +0000
committercvs2svn <cvs2svn@FreeBSD.org>1996-10-03 22:58:34 +0000
commitde2e226e9fba20be2fc5c0489006d990f661e78a (patch)
treed6723a40204712867675c0ab9a6c681d1884e980
parente028853bf6aa638d07fb5ccd03ef46d0ca1e9469 (diff)
Notes
-rw-r--r--contrib/gcc/ChangeLog115
-rw-r--r--contrib/gcc/NEWS4
-rw-r--r--contrib/gcc/c-typeck.c2
-rw-r--r--contrib/gcc/collect2.c106
-rw-r--r--contrib/gcc/config/i386/freebsd.h6
-rw-r--r--contrib/gcc/config/i386/freebsd.h.fixed6
-rw-r--r--contrib/gcc/config/svr4.h14
-rw-r--r--contrib/gcc/cp/decl2.c6
-rw-r--r--contrib/gcc/cp/lex.c8
-rw-r--r--contrib/gcc/expr.c2
-rw-r--r--contrib/gcc/fix-header.c11
-rwxr-xr-xcontrib/gcc/fixincludes27
-rw-r--r--contrib/gcc/gcc.texi41
-rw-r--r--contrib/gcc/install.texi77
-rw-r--r--contrib/gcc/loop.c36
-rw-r--r--contrib/gcc/objc/hash.c5
-rw-r--r--contrib/gcc/stor-layout.c2
-rw-r--r--contrib/gcc/version.c2
18 files changed, 159 insertions, 311 deletions
diff --git a/contrib/gcc/ChangeLog b/contrib/gcc/ChangeLog
index 3f955fb4a2e5..21a129dc72b0 100644
--- a/contrib/gcc/ChangeLog
+++ b/contrib/gcc/ChangeLog
@@ -1,118 +1,3 @@
-Sat Jun 29 12:33:39 1996 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
-
- * Version 2.7.2.1 released.
-
-Tue Jun 11 20:18:03 1996 Per Bothner <bothner@cygnus.com>
-
- * fix-header.c (read_scna_file): Invoke FIXPROTO_INIT if defined.
- * alpha.h (FIXPROTO_INIT): Define new macro.
-
-Fri May 10 18:35:00 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
-
- * loop.c (maybe_eliminate_biv_1): Disable all but two cases
- of biv elimination with givs and restrict those two cases to
- an ADD_VAL that is an address.
-
-Mon Apr 22 16:50:19 1996 Jeremy Bettis <jeremy@hksys.com>
-
- * objc/hash.c (hash_value_for_key): Prevent endless loop when 0 was
- stored in a hashtable.
-
-Wed Apr 17 17:53:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * rs6000.c (expand_block_move_mem): Copy RTX_UNCHANGING_P.
- (expand_block_move): Copy dest/src to registers using
- copy_addr_to_reg, call expand_block_move_mem to copy all of the
- bits.
-
-Mon Apr 8 13:46:28 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * rs6000.c (output_{prolog,epilog}): For V.4/eabi systems, change
- prologue and epilogue so that accesses beyond the current stack
- pointer are not done like they are for AIX.
-
-Fri Mar 26 05:43:06 1996 Torbjorn Granlund <tege@noisy.matematik.su.se>
-
- * vax.md (insv matcher): Call CC_STATUS_INIT.
- * vax.h (NOTICE_UPDATE_CC): Handle ZERO_EXTRACT destination.
-
-Sat Mar 23 18:25:39 1996 J"orn Rennecke (amylaar@meolyon.hanse.de)
-
- * c-typeck.c (set_init_index): Check for use outside an array
- initializer.
-
-Sat Mar 23 09:21:40 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Don't unfix %g[234]
- if fixed with -ffixed-.
-
-Wed Mar 13 20:36:10 1996 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * mips.c (mips_expand_prologue): Change TYPE_NEEDS_CONSTRUCTING to
- TREE_ADDRESSABLE;
- * pa.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
-
-Tue Mar 12 14:36:02 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * lex.c (real_yylex): Warn about using the `namespace' keyword.
-
-Tue Feb 27 08:18:12 1996 Richard Earnshaw (rearnsha@armltd.co.uk)
-
- * arm.md (mov{si,sf,df}cc and matchers): All conditional move
- patterns must have a mode.
-
-Mon Feb 19 07:35:07 1996 Torbjorn Granlund <tege@tmg.se>
-
- * rs6000.md (not:SI with assign and compare): Fix typo.
-
-Wed Jan 24 18:00:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * alpha.c (alpha_write_verstamp): Only emit MS_STAMP and LS_STAMP,
- not the extra numbers.
-
-Wed Jan 17 21:22:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * cp/decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
- Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
- only ever used for functions in it.
-
-Tue Jan 16 06:01:28 1996 Thomas Graichen <graichen@omega.physik.fu-berlin.de>
-
- * i386/freebsd.h (ASM_WEAKEN_LABEL): Deleted; not supported.
-
-Sun Jan 7 17:11:11 1996 David Edelsohn <edelsohn@mhpcc.edu>
-
- * collect2.c (scan_libraries): Correct Import File ID interpretation.
-
-Thu Dec 28 22:24:53 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * rs6000.md (common mode functions): Add condition reg clobbers.
-
-Tue Dec 19 15:08:31 1995 Jason Merrill <jason@yorick.cygnus.com>
-
- * collect2.c: Remove auto_export functionality.
-
-Mon Dec 18 18:40:34 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * svr4.h (ASM_IDENTIFY_GCC): Don't output stab here.
- (ASM_IDENTIFY_GCC_AFTER_SOURCE): Output stab here instead of
- above.
-
-Sat Dec 16 07:03:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
-
- * stor-layout.c (layout_record): When PCC_BITFIELD_TYPE_MATTERS,
- compute bitpos using field_size % type_align instead of field_size.
-
-Fri Dec 15 18:41:50 1995 Philippe De Muyter (phdm@info.ucl.ac.be)
-
- * fixincludes (sys/wait.h): Add forward declaration of struct rusage
- on AIX 3.2.5.
-
-Sat Dec 9 18:05:03 1995 Jim Wilson <wilson@cygnus.com>
-
- * expr.c (expand_expr, case INDIRECT_REF): Correct typo in May 8
- change.
-
Sun Nov 26 14:47:42 1995 Richard Kenner <kenner@mole.gnu.ai.mit.edu>
* Version 2.7.2 released.
diff --git a/contrib/gcc/NEWS b/contrib/gcc/NEWS
index 9c2309328e4b..2a665a1a60c2 100644
--- a/contrib/gcc/NEWS
+++ b/contrib/gcc/NEWS
@@ -1,7 +1,3 @@
-Noteworthy changes in GCC version 2.7.2.1:
-
-This release fixes some serious bugs discovered since the 2.7.2 release.
-
Noteworthy changes in GCC version 2.7.2:
A few bugs have been fixed (most notably the generation of an
diff --git a/contrib/gcc/c-typeck.c b/contrib/gcc/c-typeck.c
index bae52e323f4a..e9d6b2a41963 100644
--- a/contrib/gcc/c-typeck.c
+++ b/contrib/gcc/c-typeck.c
@@ -5723,8 +5723,6 @@ set_init_index (first, last)
error_init ("nonconstant array index in initializer%s", " for `%s'", NULL);
else if (last != 0 && TREE_CODE (last) != INTEGER_CST)
error_init ("nonconstant array index in initializer%s", " for `%s'", NULL);
- else if (! constructor_unfilled_index)
- error_init ("array index in non-array initializer%s", " for `%s'", NULL);
else if (tree_int_cst_lt (first, constructor_unfilled_index))
error_init ("duplicate array index in initializer%s", " for `%s'", NULL);
else
diff --git a/contrib/gcc/collect2.c b/contrib/gcc/collect2.c
index 30fb49d8e630..a74a7f069924 100644
--- a/contrib/gcc/collect2.c
+++ b/contrib/gcc/collect2.c
@@ -255,6 +255,7 @@ static char *temp_filename; /* Base of temp filenames */
static char *c_file; /* <xxx>.c for constructor/destructor list. */
static char *o_file; /* <xxx>.o for constructor/destructor list. */
static char *export_file; /* <xxx>.x for AIX export list. */
+static int auto_export = 1; /* true if exporting everything. */
char *ldout; /* File for ld errors. */
static char *output_file; /* Output file for ld. */
static char *nm_file_name; /* pathname of nm */
@@ -1242,6 +1243,15 @@ main (argc, argv)
}
break;
+#ifdef COLLECT_EXPORT_LIST
+ case 'b':
+ if ((!strncmp (arg, "-bE:", 4)
+ || !strncmp (arg, "-bexport:", 9))
+ && strcmp (arg, "-bexport:/usr/lib/libg.exp"))
+ auto_export = 0;
+ break;
+#endif
+
case 'l':
if (first_file)
{
@@ -2544,6 +2554,8 @@ scan_prog_file (prog_name, which_pass)
break;
default: /* not a constructor or destructor */
+ if (which_pass == PASS_OBJ && auto_export)
+ add_to_list (&exports, name);
continue;
}
@@ -2594,72 +2606,62 @@ scan_libraries (prog_name)
{
LDHDR ldh;
char *impbuf;
- int entry;
-
+ int idx;
FSEEK (ldptr, ldsh.s_scnptr, BEGINNING);
- FREAD (&ldh, sizeof (ldh), 1, ldptr);
+ FREAD (&ldh, sizeof ldh, 1, ldptr);
/* read import library list */
impbuf = alloca (ldh.l_istlen);
FSEEK (ldptr, ldh.l_impoff + ldsh.s_scnptr, BEGINNING);
FREAD (impbuf, ldh.l_istlen, 1, ldptr);
-
+ idx = strlen (impbuf) + 1;
+ idx += strlen (impbuf+idx) + 1;
if (debug)
fprintf (stderr, "LIBPATH=%s\n", impbuf);
prefix_from_string (impbuf, &libpath);
-
- /* skip LIBPATH and empty base and member fields */
- impbuf += strlen (impbuf) + 3;
- for (entry = 1; entry < ldh.l_nimpid; ++entry)
+ while (idx < ldh.l_istlen)
{
- char *impath = impbuf;
- char *implib = impath + strlen (impath) + 1;
+ char *implib = impbuf + idx;
char *impmem = implib + strlen (implib) + 1;
- char *soname = NULL;
- char *trial;
- int pathlen;
+ char *soname = 0;
LDFILE *libptr = NULL;
struct prefix_list *pl;
ARCHDR ah;
-
- impbuf = impmem + strlen (impmem) + 1;
- if (debug)
- fprintf (stderr, "PATH+BASE=%s%s\n", impath, implib);
- /* Skip AIX kernel exports */
- if (*impath == '/' && *(impath+1) == '\0'
- && strcmp (implib, "unix") == 0)
+ idx += strlen (implib) + 1;
+ if (!implib[0])
continue;
- pathlen = strlen (impath);
- trial = alloca (MAX (pathlen + 1, libpath.max_len)
- + strlen (implib) + 1);
- if (*impath)
+ idx += strlen (impmem) + 1;
+ if (*implib == '/')
{
- strcpy (trial, impath);
- if (impath[pathlen - 1] != '/')
- trial[pathlen++] = '/';
- strcpy (trial + pathlen, implib);
- if (access (trial, R_OK) == 0)
- soname = trial;
+ if (access (soname, R_OK) == 0)
+ soname = implib;
}
else
- for (pl = libpath.plist; pl; pl = pl->next)
- {
- strcpy (trial, pl->prefix);
- strcat (trial, implib);
- if (access (trial, R_OK) == 0)
- {
- soname = trial;
- break;
- }
- }
-
- if (! soname)
- fatal ("%s: library not found", implib);
+ {
+ char *temp = alloca (libpath.max_len + strlen (implib) + 1);
+ for (pl = libpath.plist; pl; pl = pl->next)
+ {
+ strcpy (temp, pl->prefix);
+ strcat (temp, implib);
+ if (access (temp, R_OK) == 0)
+ {
+ soname = temp;
+ break;
+ }
+ }
+ }
+ if (!soname)
+ {
+ fatal ("%s: library not found", implib);
+ continue;
+ }
if (debug)
- if (*impmem)
- fprintf (stderr, "%s (%s)\n", soname, impmem);
- else
- fprintf (stderr, "%s\n", soname);
-
+ {
+ if (impmem[0])
+ fprintf (stderr, "%s (%s)\n", soname, impmem);
+ else
+ fprintf (stderr, "%s\n", soname);
+ }
+ ah.ar_name[0] = 0;
do
{
/* scan imported shared objects for GCC GLOBAL ctors */
@@ -2669,7 +2671,7 @@ scan_libraries (prog_name)
if (TYPE (libptr) == ARTYPE)
{
LDFILE *memptr;
- if (! *impmem)
+ if (!impmem[0])
fatal ("%s: no archive member specified", soname);
ldahread (libptr, &ah);
if (strcmp (ah.ar_name, impmem))
@@ -2686,12 +2688,12 @@ scan_libraries (prog_name)
if (!ldnshread (libptr, _LOADER, &soldsh))
fatal ("%s: not an import library", soname);
FSEEK (libptr, soldsh.s_scnptr, BEGINNING);
- if (FREAD (&soldh, sizeof (soldh), 1, libptr) != 1)
+ if (FREAD (&soldh, sizeof soldh, 1, libptr) != 1)
fatal ("%s: can't read loader section", soname);
/*fprintf (stderr, "\tscanning %s\n", soname);*/
symcnt = soldh.l_nsyms;
- lsyms = (LDSYM*) alloca (symcnt * sizeof (*lsyms));
- symcnt = FREAD (lsyms, sizeof (*lsyms), symcnt, libptr);
+ lsyms = (LDSYM*) alloca (symcnt * sizeof *lsyms);
+ symcnt = FREAD (lsyms, sizeof *lsyms, symcnt, libptr);
ldstrings = alloca (soldh.l_stlen);
FSEEK (libptr, soldsh.s_scnptr+soldh.l_stoff, BEGINNING);
FREAD (ldstrings, soldh.l_stlen, 1, libptr);
diff --git a/contrib/gcc/config/i386/freebsd.h b/contrib/gcc/config/i386/freebsd.h
index c4e9991c62f6..72fcdd133668 100644
--- a/contrib/gcc/config/i386/freebsd.h
+++ b/contrib/gcc/config/i386/freebsd.h
@@ -120,6 +120,12 @@ Boston, MA 02111-1307, USA. */
#define TYPE_ASM_OP ".type"
#define SIZE_ASM_OP ".size"
+/* This is how we tell the assembler that a symbol is weak. */
+
+#define ASM_WEAKEN_LABEL(FILE,NAME) \
+ do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
+ fputc ('\n', FILE); } while (0)
+
/* The following macro defines the format used to output the second
operand of the .type assembler directive. Different svr4 assemblers
expect various different forms for this operand. The one given here
diff --git a/contrib/gcc/config/i386/freebsd.h.fixed b/contrib/gcc/config/i386/freebsd.h.fixed
index c4e9991c62f6..72fcdd133668 100644
--- a/contrib/gcc/config/i386/freebsd.h.fixed
+++ b/contrib/gcc/config/i386/freebsd.h.fixed
@@ -120,6 +120,12 @@ Boston, MA 02111-1307, USA. */
#define TYPE_ASM_OP ".type"
#define SIZE_ASM_OP ".size"
+/* This is how we tell the assembler that a symbol is weak. */
+
+#define ASM_WEAKEN_LABEL(FILE,NAME) \
+ do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
+ fputc ('\n', FILE); } while (0)
+
/* The following macro defines the format used to output the second
operand of the .type assembler directive. Different svr4 assemblers
expect various different forms for this operand. The one given here
diff --git a/contrib/gcc/config/svr4.h b/contrib/gcc/config/svr4.h
index 41c6ffa0e10b..bc80297359df 100644
--- a/contrib/gcc/config/svr4.h
+++ b/contrib/gcc/config/svr4.h
@@ -273,23 +273,15 @@ do { \
#define DBX_BLOCKS_FUNCTION_RELATIVE 1
/* When using stabs, gcc2_compiled must be a stabs entry, not an
- ordinary symbol, or gdb won't see it. Furthermore, since gdb reads
- the input piecemeal, starting with each N_SO, it's a lot easier if
- the gcc2 flag symbol is *after* the N_SO rather than before it. So
- we emit an N_OPT stab there. */
+ ordinary symbol, or gdb won't see it. The stabs entry must be
+ before the N_SO in order for gdb to find it. */
#define ASM_IDENTIFY_GCC(FILE) \
do \
{ \
if (write_symbols != DBX_DEBUG) \
fputs ("gcc2_compiled.:\n", FILE); \
- } \
-while (0)
-
-#define ASM_IDENTIFY_GCC_AFTER_SOURCE(FILE) \
-do \
- { \
- if (write_symbols == DBX_DEBUG) \
+ else \
fputs ("\t.stabs\t\"gcc2_compiled.\", 0x3c, 0, 0, 0\n", FILE); \
} \
while (0)
diff --git a/contrib/gcc/cp/decl2.c b/contrib/gcc/cp/decl2.c
index 9b7f88e2d683..7a3f7d5e0942 100644
--- a/contrib/gcc/cp/decl2.c
+++ b/contrib/gcc/cp/decl2.c
@@ -1363,7 +1363,7 @@ grokfield (declarator, declspecs, raises, init, asmspec_tree, attrlist)
init = NULL_TREE;
value = grokdeclarator (declarator, declspecs, FIELD, init != 0,
- raises, NULL_TREE);
+ raises, attrlist);
if (! value)
return value; /* friend or constructor went bad. */
@@ -1477,10 +1477,6 @@ grokfield (declarator, declspecs, raises, init, asmspec_tree, attrlist)
/* The corresponding pop_obstacks is in cp_finish_decl. */
push_obstacks_nochange ();
- if (attrlist)
- cplus_decl_attributes (value, TREE_PURPOSE (attrlist),
- TREE_VALUE (attrlist));
-
if (TREE_CODE (value) == VAR_DECL)
{
/* We cannot call pushdecl here, because that would
diff --git a/contrib/gcc/cp/lex.c b/contrib/gcc/cp/lex.c
index 22763f56f626..1861f9ea9778 100644
--- a/contrib/gcc/cp/lex.c
+++ b/contrib/gcc/cp/lex.c
@@ -3313,14 +3313,6 @@ real_yylex ()
token_buffer[0] = '^';
token_buffer[1] = 0;
}
- else if (ptr->token == NAMESPACE)
- {
- static int warned;
- if (! warned)
- warning ("namespaces are mostly broken in this version of g++");
-
- warned = 1;
- }
value = (int) ptr->token;
}
diff --git a/contrib/gcc/expr.c b/contrib/gcc/expr.c
index 39591c9efef8..2d307a2af67f 100644
--- a/contrib/gcc/expr.c
+++ b/contrib/gcc/expr.c
@@ -4582,7 +4582,7 @@ expand_expr (exp, target, tmode, modifier)
through a pointer to const does not mean that the value there can
never change. Languages where it can never change should
also set TREE_STATIC. */
- RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) & TREE_STATIC (exp);
+ RTX_UNCHANGING_P (temp) = TREE_READONLY (exp) | TREE_STATIC (exp);
return temp;
}
diff --git a/contrib/gcc/fix-header.c b/contrib/gcc/fix-header.c
index 7059d12e1024..53e5c06052ad 100644
--- a/contrib/gcc/fix-header.c
+++ b/contrib/gcc/fix-header.c
@@ -531,18 +531,7 @@ read_scan_file (in_fname, argc, argv)
push_parse_file (&scan_in, in_fname);
CPP_OPTIONS (&scan_in)->no_line_commands = 1;
-#ifdef FIXPROTO_INIT
- /* Some targets may assume special definitions (for example
- OSF header files assume __LANGUAGE_C__). These macros
- are normally passed to cpplib by gcc - but we here invoke
- cpplib directly, without going through gcc.
- Handle these and other target-dependent initializations here. */
- FIXPROTO_INIT (&scan_in);
-#endif
-
- /* Actually (pre-)process the header file. */
scan_decls (&scan_in, argc, argv);
-
check_macro_names (&scan_in, include_entry->required);
check_macro_names (&scan_in, include_entry->extra);
diff --git a/contrib/gcc/fixincludes b/contrib/gcc/fixincludes
index cc8801d349b9..ba6781df59eb 100755
--- a/contrib/gcc/fixincludes
+++ b/contrib/gcc/fixincludes
@@ -1520,33 +1520,6 @@ if [ -r ${LIB}/$file ]; then
fi
fi
-# sys/wait.h on AIX 3.2.5 puts the declaration of wait3 before the definition
-# of struct rusage, so the prototype (added by fixproto) causes havoc.
-file=sys/wait.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ] \
- && grep 'bos325,' ${LIB}/$file >/dev/null; then
- echo Fixing $file, wait3 declaration
- sed -e '/^extern pid_t wait3();$/i\
-struct rusage;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
# NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
# Note that version 3 of the NeXT system has wait.h in a different directory,
# so that this code won't do anything. But wait.h in version 3 has a
diff --git a/contrib/gcc/gcc.texi b/contrib/gcc/gcc.texi
index f8585919be0b..7c6b0569f42c 100644
--- a/contrib/gcc/gcc.texi
+++ b/contrib/gcc/gcc.texi
@@ -147,11 +147,11 @@ original English.
@sp 2
@center Richard M. Stallman
@sp 3
-@center Last updated 29 June 1996
+@center Last updated 26 November 1995
@sp 1
@c The version number appears twice more in this file.
-@center for version 2.7.2.1
+@center for version 2.7.2
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1988, 89, 92, 93, 94, 1995 Free Software Foundation, Inc.
@@ -904,23 +904,18 @@ the ones who have actually sued. Apple's lawsuit was defeated, for
reasons only partly related to the general issue of interface copyright.
Lotus won lawsuits against two small companies, which were thus put out
-of business. Then Lotus sued Borland; Lotus won in the trial court (no
+of business. Then they sued Borland; they won in the trial court (no
surprise, since it was the same court that had ruled for Lotus twice
-before), but the court of appeals ruled in favor of Borland, which was
-assisted by a friend-of-the-court brief from the League for Programming
-Freedom.
-
-Lotus appealed the case to the Supreme Court, which heard the case but
-was unable to reach a decision. This failure means that the appeals
-court decision stands, in one portion of the United States, and may
-influence the other appeals courts, but it does not set a nationwide
-precedent. The battle is not over, and it is not limited to the United
-States.
-
-The battle is extending into other areas of software as well. In 1995 a
-company that produced a simulator for a CDC computer was shut down by a
-copyright lawsuit, in which CDC charged that the simulator infringed the
-copyright on the manuals for the computer.
+before), but the decision was reversed by the court of appeals, with
+help from the League for Programming Freedom in the form of a
+friend-of-the-court brief. We are now waiting to see if the Supreme
+Court will hear the case. If it does, the League for Programming
+Freedom will again submit a brief.
+
+The battle is not over. Just this summer a company that produced a
+simulator for a CDC computer was shut down by a copyright lawsuit by
+CDC, which charged that the simulator infringed the copyright on the
+manuals for the computer.
If the monopolists get their way, they will hobble the software field:
@@ -1243,11 +1238,11 @@ GNU CC. The fix is to get rid of the file @code{real-ld} which purify
installs---so that GNU CC won't try to use it.
@item
-On SLS 1.01, a Linux-based GNU system, there is a problem with
-@file{libc.a}: it does not contain the obstack functions. However, GNU
-CC assumes that the obstack functions are in @file{libc.a} when it is
-the GNU C library. To work around this problem, change the
-@code{__GNU_LIBRARY__} conditional around line 31 to @samp{#if 1}.
+On Linux SLS 1.01, there is a problem with @file{libc.a}: it does not
+contain the obstack functions. However, GNU CC assumes that the obstack
+functions are in @file{libc.a} when it is the GNU C library. To work
+around this problem, change the @code{__GNU_LIBRARY__} conditional
+around line 31 to @samp{#if 1}.
@item
On some 386 systems, building the compiler never finishes because
diff --git a/contrib/gcc/install.texi b/contrib/gcc/install.texi
index 962a6e7a088b..0a4c99b97cfe 100644
--- a/contrib/gcc/install.texi
+++ b/contrib/gcc/install.texi
@@ -778,45 +778,82 @@ first three arguments in function calls in registers. Structures are no
longer a multiple of 2 bytes.
@item hppa*-*-*
-There are several variants of the HP-PA processor which run a variety
-of operating systems. GNU CC must be configured to use the correct
-processor type and operating system, or GNU CC will not function correctly.
-The easiest way to handle this problem is to @emph{not} specify a target
-when configuring GNU CC, the @file{configure} script will try to automatically
-determine the right processor type and operating system.
+There are two variants of this CPU, called 1.0 and 1.1, which have
+different machine descriptions. You must use the right one for your
+machine. All 7@var{nn} machines and 8@var{n}7 machines use 1.1, while
+all other 8@var{nn} machines use 1.0.
+
+The easiest way to handle this problem is to use @samp{configure
+hp@var{nnn}} or @samp{configure hp@var{nnn}-hpux}, where @var{nnn} is
+the model number of the machine. Then @file{configure} will figure out
+if the machine is a 1.0 or 1.1. Use @samp{uname -a} to find out the
+model number of your machine.
@samp{-g} does not work on HP-UX, since that system uses a peculiar
debugging format which GNU CC does not know about. However, @samp{-g}
will work if you also use GAS and GDB in conjunction with GCC. We
highly recommend using GAS for all HP-PA configurations.
-You should be using GAS-2.6 (or later) along with GDB-4.16 (or later). These
+You should be using GAS-2.3 (or later) along with GDB-4.12 (or later). These
can be retrieved from all the traditional GNU ftp archive sites.
-GAS will need to be installed into a directory before @code{/bin},
-@code{/usr/bin}, and @code{/usr/ccs/bin} in your search path. You
-should install GAS before you build GNU CC.
+Build GAS and install the resulting binary as:
+
+@example
+/usr/local/lib/gcc-lib/@var{configuration}/@var{gccversion}/as
+@end example
+
+@noindent
+where @var{configuration} is the configuration name (perhaps
+@samp{hp@var{nnn}-hpux}) and @var{gccversion} is the GNU CC version
+number. Do this @emph{before} starting the build process, otherwise you will
+get errors from the HPUX assembler while building @file{libgcc2.a}. The
+command
+
+@example
+make install-dir
+@end example
+
+@noindent
+will create the necessary directory hierarchy so you can install GAS before
+building GCC.
+
+To enable debugging, configure GNU CC with the @samp{--with-gnu-as} option
+before building.
-To enable debugging, you must configure GNU CC with the @samp{--with-gnu-as}
-option before building.
+It has been reported that GNU CC produces invalid assembly code for
+1.1 machines running HP-UX 8.02 when using the HP assembler. Typically
+the errors look like this:
+@example
+as: bug.s @@line#15 [err#1060]
+ Argument 0 or 2 in FARG upper
+ - lookahead = ARGW1=FR,RTNVAL=GR
+as: foo.s @@line#28 [err#1060]
+ Argument 0 or 2 in FARG upper
+ - lookahead = ARGW1=FR
+@end example
+
+You can check the version of HP-UX you are running by executing the command
+@samp{uname -r}. If you are indeed running HP-UX 8.02 on a PA and
+using the HP assembler then configure GCC with "hp@var{nnn}-hpux8.02".
@item i370-*-*
This port is very preliminary and has many known bugs. We hope to
have a higher-quality port for this machine soon.
@item i386-*-linuxoldld
-Use this configuration to generate a.out binaries on Linux-based GNU
-systems, if you do not have gas/binutils version 2.5.2 or later
-installed. This is an obsolete configuration.
+Use this configuration to generate a.out binaries on Linux if you do not
+have gas/binutils version 2.5.2 or later installed. This is an obsolete
+configuration.
@item i386-*-linuxaout
-Use this configuration to generate a.out binaries on Linux-based GNU
-systems. This configuration is being superseded. You must use
-gas/binutils version 2.5.2 or later.
+Use this configuration to generate a.out binaries on Linux. This configuration
+is being superseded. You must use gas/binutils version 2.5.2 or
+later.
@item i386-*-linux
-Use this configuration to generate ELF binaries on Linux-based GNU
-systems. You must use gas/binutils version 2.5.2 or later.
+Use this configuration to generate ELF binaries on Linux. You must
+use gas/binutils version 2.5.2 or later.
@item i386-*-sco
Compilation with RCC is recommended. Also, it may be a good idea to
diff --git a/contrib/gcc/loop.c b/contrib/gcc/loop.c
index 338f96829fb9..8711cc042008 100644
--- a/contrib/gcc/loop.c
+++ b/contrib/gcc/loop.c
@@ -6041,16 +6041,13 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where)
{
/* Can replace with any giv that was reduced and
that has (MULT_VAL != 0) and (ADD_VAL == 0).
- Require a constant for MULT_VAL, so we know it's nonzero.
- ??? We disable this optimization to avoid potential
- overflows. */
+ Require a constant for MULT_VAL, so we know it's nonzero. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx
&& v->add_val == const0_rtx
&& ! v->ignore && ! v->maybe_dead && v->always_computable
- && v->mode == mode
- && 0)
+ && v->mode == mode)
{
if (! eliminate_p)
return 1;
@@ -6070,19 +6067,12 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where)
/* Look for a giv with (MULT_VAL != 0) and (ADD_VAL != 0);
replace test insn with a compare insn (cmp REDUCED_GIV ADD_VAL).
- Require a constant for MULT_VAL, so we know it's nonzero.
- ??? Do this only if ADD_VAL is a pointer to avoid a potential
- overflow problem. */
+ Require a constant for MULT_VAL, so we know it's nonzero. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx
&& ! v->ignore && ! v->maybe_dead && v->always_computable
- && v->mode == mode
- && (GET_CODE (v->add_val) == SYMBOL_REF
- || GET_CODE (v->add_val) == LABEL_REF
- || GET_CODE (v->add_val) == CONST
- || (GET_CODE (v->add_val) == REG
- && REGNO_POINTER_FLAG (REGNO (v->add_val)))))
+ && v->mode == mode)
{
if (! eliminate_p)
return 1;
@@ -6137,11 +6127,7 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where)
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
- && (GET_CODE (v->add_val) == SYMBOL_REF
- || GET_CODE (v->add_val) == LABEL_REF
- || GET_CODE (v->add_val) == CONST
- || (GET_CODE (v->add_val) == REG
- && REGNO_POINTER_FLAG (REGNO (v->add_val))))
+ && CONSTANT_P (v->add_val)
&& ! v->ignore && ! v->maybe_dead && v->always_computable
&& v->mode == mode)
{
@@ -6174,14 +6160,12 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where)
}
/* Look for giv with positive constant mult_val and nonconst add_val.
- Insert insns to calculate new compare value.
- ??? Turn this off due to possible overflow. */
+ Insert insns to calculate new compare value. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
&& ! v->ignore && ! v->maybe_dead && v->always_computable
- && v->mode == mode
- && 0)
+ && v->mode == mode)
{
rtx tem;
@@ -6207,14 +6191,12 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where)
if (invariant_p (arg) == 1)
{
/* Look for giv with constant positive mult_val and nonconst
- add_val. Insert insns to compute new compare value.
- ??? Turn this off due to possible overflow. */
+ add_val. Insert insns to compute new compare value. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
&& ! v->ignore && ! v->maybe_dead && v->always_computable
- && v->mode == mode
- && 0)
+ && v->mode == mode)
{
rtx tem;
diff --git a/contrib/gcc/objc/hash.c b/contrib/gcc/objc/hash.c
index a3077597e428..33912743fd82 100644
--- a/contrib/gcc/objc/hash.c
+++ b/contrib/gcc/objc/hash.c
@@ -243,10 +243,9 @@ hash_value_for_key (cache_ptr cache, const void *key)
if (node)
do {
- if ((*cache->compare_func)(node->key, key)) {
+ if ((*cache->compare_func)(node->key, key))
retval = node->value;
- break;
- } else
+ else
node = node->next;
} while (!retval && node);
diff --git a/contrib/gcc/stor-layout.c b/contrib/gcc/stor-layout.c
index e743c373766e..8cdbf86aa80b 100644
--- a/contrib/gcc/stor-layout.c
+++ b/contrib/gcc/stor-layout.c
@@ -437,7 +437,7 @@ layout_record (rec)
That can happen because the width exceeds BIGGEST_ALIGNMENT
or because it exceeds maximum_field_alignment. */
if (const_size / type_align
- != (const_size + (field_size % type_align) - 1) / type_align)
+ != (const_size + field_size - 1) / type_align)
const_size = CEIL (const_size, type_align) * type_align;
}
#endif
diff --git a/contrib/gcc/version.c b/contrib/gcc/version.c
index 3480e3fdac2e..4afca5693abd 100644
--- a/contrib/gcc/version.c
+++ b/contrib/gcc/version.c
@@ -1 +1 @@
-char *version_string = "2.7.2.1";
+char *version_string = "2.7.2";