This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

4.3 target deprecation patch part 1: c4x removal, whole-target deprecations


This is the first of two patches to implement the target deprecations 
being discussed for 4.3.  This patch:

* Removes c4x code (deprecated since 4.0).  (This is a diff with 
--no-diff-deleted to keep down patch size.)

* Removes config.gcc and libgcc/config.host cases for other previously 
removed targets that I noticed in the course of preparing deprecation 
lists.

* Deprecates crx-*, mt-* and xstormy16-* as discussed.

* Adds release notes for these changes, based on those for previous 
deprecations.

In the course of removing c4x support I removed references to c4x source 
files as examples in the documentation (people can grep for how a target 
macro is used) but left references to the properties of the processor; 
those seem reasonable even in the absence of processor support.  The 
following such references were left:

gcc/doc/md.texi:provide low-overhead loop support.  For example, the TI TMS320C3x/C4x
gcc/doc/md.texi:emitted at the top of the loop (e.g., the TMS320C3x/C4x DSPs).  Emitting
gcc/tree.c:      /* ??? Note that this is not correct for C4X float formats.  There,
gcc/fold-const.c:      /* Two's complement FP formats, such as c4x, may overflow.  */
gcc/reorg.c:   The TMS320C3x and C4x have three branch delay slots.  When the three
gcc/stor-layout.c:      /* With some targets, eg. c4x, it is sub-optimal
gcc/loop-doloop.c:  /* Some targets (eg, C4x) need to initialize special looping
libjava/include/jni_md.h:   instance on the c4x it will be wrong -- it depends on whether

A previous version of this patch with iq2000 deprecation as well was 
tested with no regressions on i686-pc-linux-gnu; after Nick Clifton spoke 
up for iq2000, I removed that deprecation and retested as far as 
configuring gcc/ to make sure config.gcc was still syntactically correct.  
OK to commit?

Deprecations of individual targets and OSes (just adding to the case 
statement in config.gcc and updating the release notes) will follow in a 
separate patch after some more time for discussion of the proposed list.

Index: gcc-4.3/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.3/changes.html,v
retrieving revision 1.91
diff -u -r1.91 changes.html
--- gcc-4.3/changes.html	13 Jan 2008 08:34:56 -0000	1.91
+++ gcc-4.3/changes.html	23 Jan 2008 23:01:14 -0000
@@ -47,6 +47,27 @@
     We removed these targets without a deprecation period because we
     discovered that they have been unusable since GCC 4.0.0.</li>
 
+    <li>Support for the TMS320C3x/C4x processor (targets
+    <code>c4x-*</code> and <code>tic4x-*</code>) has been removed.
+    This support had been deprecated since GCC 4.0.0.</li>
+
+    <li><p>Support for a number of older systems and recently
+    unmaintained or untested target ports of GCC has been declared
+    obsolete in GCC 4.3.  Unless there is activity to revive them, the
+    next release of GCC will have their sources permanently
+    <strong>removed</strong>.</p>
+
+    <p>All GCC ports for the following processor architectures have
+    been declared obsolete:</p>
+
+    <ul>
+      <li>National Semiconductor CRX (<code>crx-*</code>)</li>
+      <li>Morpho MT (<code>mt-*</code>)</li>
+      <li>Xstormy16 (<code>xstormy16-*</code>)</li>
+    </ul>
+
+    </li>
+
     <li>The <code><a
     href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options";
     >-Wconversion</a></code> option has been modified. Its purpose now


2008-01-23  Joseph Myers  <joseph@codesourcery.com>

	* MAINTAINERS (c4x port): Remove.

contrib:
2008-01-23  Joseph Myers  <joseph@codesourcery.com>

	* paranoia.cc (main): Remove handling of c4x_single and
	c4x_extended formats.

gcc:
2008-01-23  Joseph Myers  <joseph@codesourcery.com>

	* config/c4x: Remove directory.
	* config.gcc (crx-*, mt-*, xstormy16-*): Mark obsolete.
	(c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
	h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
	sh-*-rtemscoff*): Remove cases.
	* defaults.h (C4X_FLOAT_FORMAT): Remove.
	* real.c (encode_c4x_single, decode_c4x_single,
	encode_c4x_extended, decode_c4x_extended, c4x_single_format,
	c4x_extended_format): Remove.
	* real.h (c4x_single_format, c4x_extended_format): Remove.
	* doc/extend.texi (interrupt, naked): Remove mention of attributes
	on C4x.
	(Pragmas): Remove comment about c4x pragmas.
	* doc/install.texi (c4x): Remove target-specific instructions.
	* doc/invoke.texi (TMS320C3x/C4x Options): Remove.
	* doc/md.texi (Machine Constraints): Remove C4x documentation.
	* doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
	refer to C4x source files as examples.
	(C4X_FLOAT_FORMAT): Remove documentation.

gcc/testsuite:
2008-01-23  Joseph Myers  <joseph@codesourcery.com>

	* gcc.dg/builtin-inf-1.c, gcc.dg/compare6.c, gcc.dg/sibcall-3.c,
	gcc.dg/sibcall-4.c, gcc.dg/torture/builtin-attr-1.c: Don't handle
	c4x-*-* targets.

libgcc:
2008-01-23  Joseph Myers  <joseph@codesourcery.com>

	* config.host (tic4x-*-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*,
	tic4x-*, h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
	sh-*-rtemscoff*): Remove cases.

Index: libgcc/config.host
===================================================================
--- libgcc/config.host	(revision 131758)
+++ libgcc/config.host	(working copy)
@@ -137,9 +137,6 @@
 sh[123456789lbe]*-*-*)
 	cpu_type=sh
 	;;
-tic4x-*-*)
-        cpu_type=c4x
-        ;;
 esac
 
 # Common parts for widely ported systems.
@@ -258,10 +255,6 @@
 	;;
 bfin*-*)
         ;;
-c4x-*-rtems* | tic4x-*-rtems*)
-	;;
-c4x-* | tic4x-*)
-	;;
 cris-*-aout)
 	;;
 crisv32-*-elf | crisv32-*-none | cris-*-elf | cris-*-none)
@@ -279,8 +272,6 @@
 	;;
 frv-*-*linux*)
 	;;
-h8300-*-rtemscoff*)
-	;;
 h8300-*-rtems*)
 	;;
 h8300-*-elf*)
@@ -473,11 +464,6 @@
 	;;
 mt-*-elf)
         ;;
-ns32k-*-netbsdelf*)
-	echo "GCC does not yet support the ${host} target"; exit 1
-	;;
-ns32k-*-netbsd*)
-	;;
 pdp11-*-bsd)
         ;;
 pdp11-*-*)
@@ -574,8 +560,6 @@
 		;;
 	esac
 	;;
-sh-*-rtemscoff*)
-	;;
 sh-*-rtems*)
 	;;
 sh-wrs-vxworks)
Index: gcc/doc/extend.texi
===================================================================
--- gcc/doc/extend.texi	(revision 131758)
+++ gcc/doc/extend.texi	(working copy)
@@ -2336,7 +2336,7 @@
 
 @item interrupt
 @cindex interrupt handler functions
-Use this attribute on the ARM, AVR, C4x, CRX, M32C, M32R/D, m68k, MS1,
+Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k, MS1,
 and Xstormy16 ports to indicate that the specified function is an
 interrupt handler.  The compiler will generate function entry and exit
 sequences suitable for use in an interrupt handler when this attribute
@@ -2484,7 +2484,7 @@
 
 @item naked
 @cindex function without a prologue/epilogue code
-Use this attribute on the ARM, AVR, C4x, IP2K and SPU ports to indicate that
+Use this attribute on the ARM, AVR, IP2K and SPU ports to indicate that
 the specified function does not need prologue/epilogue sequences generated by
 the compiler.  It is up to the programmer to provide these sequences.
 
@@ -10892,7 +10892,6 @@
 declarations.
 @end table
 
-@c Describe c4x pragmas here.
 @c Describe h8300 pragmas here.
 @c Describe sh pragmas here.
 @c Describe v850 pragmas here.
Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi	(revision 131758)
+++ gcc/doc/tm.texi	(working copy)
@@ -1288,9 +1288,7 @@
 case where structures of one field would require the structure's mode to
 retain the field's mode.
 
-Normally, this is not needed.  See the file @file{c4x.h} for an example
-of how to use this macro to prevent a structure having a floating point
-field from being accessed in an integer mode.
+Normally, this is not needed.
 @end defmac
 
 @defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
@@ -1351,7 +1349,7 @@
 
 @defmac TARGET_FLOAT_FORMAT
 A code distinguishing the floating point format of the target machine.
-There are four defined values:
+There are two defined values:
 
 @ftable @code
 @item IEEE_FLOAT_FORMAT
@@ -1361,9 +1359,6 @@
 @item VAX_FLOAT_FORMAT
 This code indicates the ``F float'' (for @code{float}) and ``D float''
 or ``G float'' formats (for @code{double}) used on the VAX and PDP-11@.
-
-@item C4X_FLOAT_FORMAT
-This code indicates the format used on the TMS320C3x/C4x.
 @end ftable
 
 If your target uses a floating point format other than these, you must
@@ -9807,9 +9802,6 @@
 @code{c_register_pragma_with_expansion} but not on the arguments of
 pragmas registered with @code{c_register_pragma}.
 
-For an example use of this routine, see @file{c4x.h} and the callback
-routines defined in @file{c4x-c.c}.
-
 Note that the use of @code{pragma_lex} is specific to the C and C++
 compilers.  It will not work in the Java or Fortran compilers, or any
 other language compilers for that matter.  Thus if @code{pragma_lex} is going
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 131758)
+++ gcc/doc/invoke.texi	(working copy)
@@ -772,12 +772,6 @@
 @emph{System V Options}
 @gccoptlist{-Qy  -Qn  -YP,@var{paths}  -Ym,@var{dir}}
 
-@emph{TMS320C3x/C4x Options}
-@gccoptlist{-mcpu=@var{cpu}  -mbig  -msmall  -mregparm  -mmemparm @gol
--mfast-fix  -mmpyi  -mbk  -mti  -mdp-isr-reload @gol
--mrpts=@var{count}  -mrptb  -mdb  -mloop-unsigned @gol
--mparallel-insns  -mparallel-mpy  -mpreserve-float}
-
 @emph{V850 Options}
 @gccoptlist{-mlong-calls  -mno-long-calls  -mep  -mno-ep @gol
 -mprolog-function  -mno-prolog-function  -mspace @gol
@@ -8257,7 +8251,6 @@
 * SPARC Options::
 * SPU Options::
 * System V Options::
-* TMS320C3x/C4x Options::
 * V850 Options::
 * VAX Options::
 * VxWorks Options::
@@ -14335,158 +14328,6 @@
 @c the generic assembler that comes with Solaris takes just -Ym.
 @end table
 
-@node TMS320C3x/C4x Options
-@subsection TMS320C3x/C4x Options
-@cindex TMS320C3x/C4x Options
-
-These @samp{-m} options are defined for TMS320C3x/C4x implementations:
-
-@table @gcctabopt
-
-@item -mcpu=@var{cpu_type}
-@opindex mcpu
-Set the instruction set, register set, and instruction scheduling
-parameters for machine type @var{cpu_type}.  Supported values for
-@var{cpu_type} are @samp{c30}, @samp{c31}, @samp{c32}, @samp{c40}, and
-@samp{c44}.  The default is @samp{c40} to generate code for the
-TMS320C40.
-
-@item -mbig-memory
-@itemx -mbig
-@itemx -msmall-memory
-@itemx -msmall
-@opindex mbig-memory
-@opindex mbig
-@opindex msmall-memory
-@opindex msmall
-Generates code for the big or small memory model.  The small memory
-model assumed that all data fits into one 64K word page.  At run-time
-the data page (DP) register must be set to point to the 64K page
-containing the .bss and .data program sections.  The big memory model is
-the default and requires reloading of the DP register for every direct
-memory access.
-
-@item -mbk
-@itemx -mno-bk
-@opindex mbk
-@opindex mno-bk
-Allow (disallow) allocation of general integer operands into the block
-count register BK@.
-
-@item -mdb
-@itemx -mno-db
-@opindex mdb
-@opindex mno-db
-Enable (disable) generation of code using decrement and branch,
-DBcond(D), instructions.  This is enabled by default for the C4x.  To be
-on the safe side, this is disabled for the C3x, since the maximum
-iteration count on the C3x is @math{2^{23} + 1} (but who iterates loops more than
-@math{2^{23}} times on the C3x?).  Note that GCC will try to reverse a loop so
-that it can utilize the decrement and branch instruction, but will give
-up if there is more than one memory reference in the loop.  Thus a loop
-where the loop counter is decremented can generate slightly more
-efficient code, in cases where the RPTB instruction cannot be utilized.
-
-@item -mdp-isr-reload
-@itemx -mparanoid
-@opindex mdp-isr-reload
-@opindex mparanoid
-Force the DP register to be saved on entry to an interrupt service
-routine (ISR), reloaded to point to the data section, and restored on
-exit from the ISR@.  This should not be required unless someone has
-violated the small memory model by modifying the DP register, say within
-an object library.
-
-@item -mmpyi
-@itemx -mno-mpyi
-@opindex mmpyi
-@opindex mno-mpyi
-For the C3x use the 24-bit MPYI instruction for integer multiplies
-instead of a library call to guarantee 32-bit results.  Note that if one
-of the operands is a constant, then the multiplication will be performed
-using shifts and adds.  If the @option{-mmpyi} option is not specified for the C3x,
-then squaring operations are performed inline instead of a library call.
-
-@item -mfast-fix
-@itemx -mno-fast-fix
-@opindex mfast-fix
-@opindex mno-fast-fix
-The C3x/C4x FIX instruction to convert a floating point value to an
-integer value chooses the nearest integer less than or equal to the
-floating point value rather than to the nearest integer.  Thus if the
-floating point number is negative, the result will be incorrectly
-truncated an additional code is necessary to detect and correct this
-case.  This option can be used to disable generation of the additional
-code required to correct the result.
-
-@item -mrptb
-@itemx -mno-rptb
-@opindex mrptb
-@opindex mno-rptb
-Enable (disable) generation of repeat block sequences using the RPTB
-instruction for zero overhead looping.  The RPTB construct is only used
-for innermost loops that do not call functions or jump across the loop
-boundaries.  There is no advantage having nested RPTB loops due to the
-overhead required to save and restore the RC, RS, and RE registers.
-This is enabled by default with @option{-O2}.
-
-@item -mrpts=@var{count}
-@itemx -mno-rpts
-@opindex mrpts
-@opindex mno-rpts
-Enable (disable) the use of the single instruction repeat instruction
-RPTS@.  If a repeat block contains a single instruction, and the loop
-count can be guaranteed to be less than the value @var{count}, GCC will
-emit a RPTS instruction instead of a RPTB@.  If no value is specified,
-then a RPTS will be emitted even if the loop count cannot be determined
-at compile time.  Note that the repeated instruction following RPTS does
-not have to be reloaded from memory each iteration, thus freeing up the
-CPU buses for operands.  However, since interrupts are blocked by this
-instruction, it is disabled by default.
-
-@item -mloop-unsigned
-@itemx -mno-loop-unsigned
-@opindex mloop-unsigned
-@opindex mno-loop-unsigned
-The maximum iteration count when using RPTS and RPTB (and DB on the C40)
-is @math{2^{31} + 1} since these instructions test if the iteration count is
-negative to terminate the loop.  If the iteration count is unsigned
-there is a possibility than the @math{2^{31} + 1} maximum iteration count may be
-exceeded.  This switch allows an unsigned iteration count.
-
-@item -mti
-@opindex mti
-Try to emit an assembler syntax that the TI assembler (asm30) is happy
-with.  This also enforces compatibility with the API employed by the TI
-C3x C compiler.  For example, long doubles are passed as structures
-rather than in floating point registers.
-
-@item -mregparm
-@itemx -mmemparm
-@opindex mregparm
-@opindex mmemparm
-Generate code that uses registers (stack) for passing arguments to functions.
-By default, arguments are passed in registers where possible rather
-than by pushing arguments on to the stack.
-
-@item -mparallel-insns
-@itemx -mno-parallel-insns
-@opindex mparallel-insns
-@opindex mno-parallel-insns
-Allow the generation of parallel instructions.  This is enabled by
-default with @option{-O2}.
-
-@item -mparallel-mpy
-@itemx -mno-parallel-mpy
-@opindex mparallel-mpy
-@opindex mno-parallel-mpy
-Allow the generation of MPY||ADD and MPY||SUB parallel instructions,
-provided @option{-mparallel-insns} is also specified.  These instructions have
-tight register constraints which can pessimize the code generation
-of large functions.
-
-@end table
-
 @node V850 Options
 @subsection V850 Options
 @cindex V850 Options
Index: gcc/doc/md.texi
===================================================================
--- gcc/doc/md.texi	(revision 131758)
+++ gcc/doc/md.texi	(working copy)
@@ -2847,88 +2847,6 @@
 
 @end table
 
-@item TMS320C3x/C4x---@file{config/c4x/c4x.h}
-@table @code
-@item a
-Auxiliary (address) register (ar0-ar7)
-
-@item b
-Stack pointer register (sp)
-
-@item c
-Standard (32-bit) precision integer register
-
-@item f
-Extended (40-bit) precision register (r0-r11)
-
-@item k
-Block count register (bk)
-
-@item q
-Extended (40-bit) precision low register (r0-r7)
-
-@item t
-Extended (40-bit) precision register (r0-r1)
-
-@item u
-Extended (40-bit) precision register (r2-r3)
-
-@item v
-Repeat count register (rc)
-
-@item x
-Index register (ir0-ir1)
-
-@item y
-Status (condition code) register (st)
-
-@item z
-Data page register (dp)
-
-@item G
-Floating-point zero
-
-@item H
-Immediate 16-bit floating-point constant
-
-@item I
-Signed 16-bit constant
-
-@item J
-Signed 8-bit constant
-
-@item K
-Signed 5-bit constant
-
-@item L
-Unsigned 16-bit constant
-
-@item M
-Unsigned 8-bit constant
-
-@item N
-Ones complement of unsigned 16-bit constant
-
-@item O
-High 16-bit constant (32-bit constant with 16 LSBs zero)
-
-@item Q
-Indirect memory reference with signed 8-bit or index register displacement
-
-@item R
-Indirect memory reference with unsigned 5-bit displacement
-
-@item S
-Indirect memory reference with 1 bit or index register displacement
-
-@item T
-Direct memory reference
-
-@item U
-Symbolic address
-
-@end table
-
 @item S/390 and zSeries---@file{config/s390/s390.h}
 @table @code
 @item a
Index: gcc/doc/install.texi
===================================================================
--- gcc/doc/install.texi	(revision 131758)
+++ gcc/doc/install.texi	(working copy)
@@ -2492,8 +2492,6 @@
 @item
 @uref{#bfin,,Blackfin}
 @item
-@uref{#c4x,,c4x}
-@item
 @uref{#dos,,DOS}
 @item
 @uref{#x-x-freebsd,,*-*-freebsd*}
@@ -2824,36 +2822,6 @@
 @html
 <hr />
 @end html
-@heading @anchor{c4x}c4x
-
-Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
-Processors.  These are used in embedded applications.  There are no
-standard Unix configurations.
-@ifnothtml
-@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using the
-GNU Compiler Collection (GCC)},
-@end ifnothtml
-@ifhtml
-See ``TMS320C3x/C4x Options'' in the main manual
-@end ifhtml
-for the list of supported MCU types.
-
-GCC can be configured as a cross compiler for both the C3x and C4x
-architectures on the same system.  Use @samp{configure --target=c4x
---enable-languages="c,c++"} to configure.
-
-
-Further installation notes and other useful information about C4x tools
-can also be obtained from:
-
-@itemize @bullet
-@item
-@uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/}
-@end itemize
-
-@html
-<hr />
-@end html
 @heading @anchor{cris}CRIS
 
 CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
Index: gcc/defaults.h
===================================================================
--- gcc/defaults.h	(revision 131758)
+++ gcc/defaults.h	(working copy)
@@ -655,7 +655,6 @@
 #define UNKNOWN_FLOAT_FORMAT 0
 #define IEEE_FLOAT_FORMAT 1
 #define VAX_FLOAT_FORMAT 2
-#define C4X_FLOAT_FORMAT 3
 
 /* Default to IEEE float if not specified.  Nearly all machines use it.  */
 #ifndef TARGET_FLOAT_FORMAT
Index: gcc/real.c
===================================================================
--- gcc/real.c	(revision 131758)
+++ gcc/real.c	(working copy)
@@ -4278,235 +4278,6 @@
     false
   };
 
-/* The "twos-complement" c4x format is officially defined as
-
-	x = s(~s).f * 2**e
-
-   This is rather misleading.  One must remember that F is signed.
-   A better description would be
-
-	x = -1**s * ((s + 1 + .f) * 2**e
-
-   So if we have a (4 bit) fraction of .1000 with a sign bit of 1,
-   that's -1 * (1+1+(-.5)) == -1.5.  I think.
-
-   The constructions here are taken from Tables 5-1 and 5-2 of the
-   TMS320C4x User's Guide wherein step-by-step instructions for
-   conversion from IEEE are presented.  That's close enough to our
-   internal representation so as to make things easy.
-
-   See http://www-s.ti.com/sc/psheets/spru063c/spru063c.pdf  */
-
-static void encode_c4x_single (const struct real_format *fmt,
-			       long *, const REAL_VALUE_TYPE *);
-static void decode_c4x_single (const struct real_format *,
-			       REAL_VALUE_TYPE *, const long *);
-static void encode_c4x_extended (const struct real_format *fmt,
-				 long *, const REAL_VALUE_TYPE *);
-static void decode_c4x_extended (const struct real_format *,
-				 REAL_VALUE_TYPE *, const long *);
-
-static void
-encode_c4x_single (const struct real_format *fmt ATTRIBUTE_UNUSED,
-		   long *buf, const REAL_VALUE_TYPE *r)
-{
-  unsigned long image, exp, sig;
-
-  switch (r->cl)
-    {
-    case rvc_zero:
-      exp = -128;
-      sig = 0;
-      break;
-
-    case rvc_inf:
-    case rvc_nan:
-      exp = 127;
-      sig = 0x800000 - r->sign;
-      break;
-
-    case rvc_normal:
-      exp = REAL_EXP (r) - 1;
-      sig = (r->sig[SIGSZ-1] >> (HOST_BITS_PER_LONG - 24)) & 0x7fffff;
-      if (r->sign)
-	{
-	  if (sig)
-	    sig = -sig;
-	  else
-	    exp--;
-	  sig |= 0x800000;
-	}
-      break;
-
-    default:
-      gcc_unreachable ();
-    }
-
-  image = ((exp & 0xff) << 24) | (sig & 0xffffff);
-  buf[0] = image;
-}
-
-static void
-decode_c4x_single (const struct real_format *fmt ATTRIBUTE_UNUSED,
-		   REAL_VALUE_TYPE *r, const long *buf)
-{
-  unsigned long image = buf[0];
-  unsigned long sig;
-  int exp, sf;
-
-  exp = (((image >> 24) & 0xff) ^ 0x80) - 0x80;
-  sf = ((image & 0xffffff) ^ 0x800000) - 0x800000;
-
-  memset (r, 0, sizeof (*r));
-
-  if (exp != -128)
-    {
-      r->cl = rvc_normal;
-
-      sig = sf & 0x7fffff;
-      if (sf < 0)
-	{
-	  r->sign = 1;
-	  if (sig)
-	    sig = -sig;
-	  else
-	    exp++;
-	}
-      sig = (sig << (HOST_BITS_PER_LONG - 24)) | SIG_MSB;
-
-      SET_REAL_EXP (r, exp + 1);
-      r->sig[SIGSZ-1] = sig;
-    }
-}
-
-static void
-encode_c4x_extended (const struct real_format *fmt ATTRIBUTE_UNUSED,
-		     long *buf, const REAL_VALUE_TYPE *r)
-{
-  unsigned long exp, sig;
-
-  switch (r->cl)
-    {
-    case rvc_zero:
-      exp = -128;
-      sig = 0;
-      break;
-
-    case rvc_inf:
-    case rvc_nan:
-      exp = 127;
-      sig = 0x80000000 - r->sign;
-      break;
-
-    case rvc_normal:
-      exp = REAL_EXP (r) - 1;
-
-      sig = r->sig[SIGSZ-1];
-      if (HOST_BITS_PER_LONG == 64)
-	sig = sig >> 1 >> 31;
-      sig &= 0x7fffffff;
-
-      if (r->sign)
-	{
-	  if (sig)
-	    sig = -sig;
-	  else
-	    exp--;
-	  sig |= 0x80000000;
-	}
-      break;
-
-    default:
-      gcc_unreachable ();
-    }
-
-  exp = (exp & 0xff) << 24;
-  sig &= 0xffffffff;
-
-  if (FLOAT_WORDS_BIG_ENDIAN)
-    buf[0] = exp, buf[1] = sig;
-  else
-    buf[0] = sig, buf[0] = exp;
-}
-
-static void
-decode_c4x_extended (const struct real_format *fmt ATTRIBUTE_UNUSED,
-		     REAL_VALUE_TYPE *r, const long *buf)
-{
-  unsigned long sig;
-  int exp, sf;
-
-  if (FLOAT_WORDS_BIG_ENDIAN)
-    exp = buf[0], sf = buf[1];
-  else
-    sf = buf[0], exp = buf[1];
-
-  exp = (((exp >> 24) & 0xff) & 0x80) - 0x80;
-  sf = ((sf & 0xffffffff) ^ 0x80000000) - 0x80000000;
-
-  memset (r, 0, sizeof (*r));
-
-  if (exp != -128)
-    {
-      r->cl = rvc_normal;
-
-      sig = sf & 0x7fffffff;
-      if (sf < 0)
-	{
-	  r->sign = 1;
-	  if (sig)
-	    sig = -sig;
-	  else
-	    exp++;
-	}
-      if (HOST_BITS_PER_LONG == 64)
-	sig = sig << 1 << 31;
-      sig |= SIG_MSB;
-
-      SET_REAL_EXP (r, exp + 1);
-      r->sig[SIGSZ-1] = sig;
-    }
-}
-
-const struct real_format c4x_single_format =
-  {
-    encode_c4x_single,
-    decode_c4x_single,
-    2,
-    24,
-    24,
-    -126,
-    128,
-    23,
-    -1,
-    false,
-    false,
-    false,
-    false,
-    false,
-    false
-  };
-
-const struct real_format c4x_extended_format =
-  {
-    encode_c4x_extended,
-    decode_c4x_extended,
-    2,
-    32,
-    32,
-    -126,
-    128,
-    31,
-    -1,
-    false,
-    false,
-    false,
-    false,
-    false,
-    false
-  };
-
-
 /* A synthetic "format" for internal arithmetic.  It's the size of the
    internal significand minus the two bits needed for proper rounding.
    The encode and decode routines exist only to satisfy our paranoia
Index: gcc/real.h
===================================================================
--- gcc/real.h	(revision 131758)
+++ gcc/real.h	(working copy)
@@ -271,8 +271,6 @@
 extern const struct real_format vax_f_format;
 extern const struct real_format vax_d_format;
 extern const struct real_format vax_g_format;
-extern const struct real_format c4x_single_format;
-extern const struct real_format c4x_extended_format;
 extern const struct real_format real_internal_format;
 extern const struct real_format decimal_single_format;
 extern const struct real_format decimal_double_format;
Index: gcc/testsuite/gcc.dg/sibcall-4.c
===================================================================
--- gcc/testsuite/gcc.dg/sibcall-4.c	(revision 131758)
+++ gcc/testsuite/gcc.dg/sibcall-4.c	(working copy)
@@ -5,7 +5,7 @@
    Copyright (C) 2002 Free Software Foundation Inc.
    Contributed by Hans-Peter Nilsson  <hp@bitrange.com>  */
 
-/* { dg-do run { xfail arc-*-* avr-*-* c4x-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa-*-* } } */
+/* { dg-do run { xfail arc-*-* avr-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa-*-* } } */
 /* -mlongcall disables sibcall patterns.  */
 /* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
 /* { dg-options "-O2 -foptimize-sibling-calls" } */
Index: gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/builtin-attr-1.c	(revision 131758)
+++ gcc/testsuite/gcc.dg/torture/builtin-attr-1.c	(working copy)
@@ -339,7 +339,7 @@
 BUILTIN_FPTEST0    (huge_val)
 FPTEST2            (hypot)
 FPTEST1T           (ilogb, int)
-BUILTIN_FPTEST0    (inf) /* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* c4x-*-* pdp11-*-* spu-*-* } } */
+BUILTIN_FPTEST0    (inf) /* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* pdp11-*-* spu-*-* } } */
 FPTEST1            (j0)
 FPTEST1            (j1)
 FPTEST2ARG1        (jn, int)
Index: gcc/testsuite/gcc.dg/sibcall-3.c
===================================================================
--- gcc/testsuite/gcc.dg/sibcall-3.c	(revision 131758)
+++ gcc/testsuite/gcc.dg/sibcall-3.c	(working copy)
@@ -5,7 +5,7 @@
    Copyright (C) 2002 Free Software Foundation Inc.
    Contributed by Hans-Peter Nilsson  <hp@bitrange.com>  */
 
-/* { dg-do run { xfail arc-*-* avr-*-* c4x-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa-*-* } } */
+/* { dg-do run { xfail arc-*-* avr-*-* cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* m68hc1?-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa-*-* } } */
 /* -mlongcall disables sibcall patterns.  */
 /* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
 /* { dg-options "-O2 -foptimize-sibling-calls" } */
Index: gcc/testsuite/gcc.dg/compare6.c
===================================================================
--- gcc/testsuite/gcc.dg/compare6.c	(revision 131758)
+++ gcc/testsuite/gcc.dg/compare6.c	(working copy)
@@ -1,7 +1,6 @@
 /* PR c/2098 */
 /* Test for a warning on comparison on out-of-range data.  */
 /* { dg-do compile } */
-/* { dg-xfail-if "" { c4x-*-* } { "*" } { "" } } */
 /* { dg-options "-Wtype-limits" } */
 
 signed char sc;
Index: gcc/testsuite/gcc.dg/builtin-inf-1.c
===================================================================
--- gcc/testsuite/gcc.dg/builtin-inf-1.c	(revision 131758)
+++ gcc/testsuite/gcc.dg/builtin-inf-1.c	(working copy)
@@ -8,6 +8,6 @@
 double dh = __builtin_huge_val();
 long double lh = __builtin_huge_vall();
 
-/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* c4x-*-* } 3 } */
-/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* c4x-*-* } 4 } */
-/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* c4x-*-* } 5 } */
+/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* } 3 } */
+/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* } 4 } */
+/* { dg-warning "does not support infinity" "INF unsupported" { target vax-*-* } 5 } */
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 131758)
+++ gcc/config.gcc	(working copy)
@@ -1,6 +1,6 @@
 # GCC target-specific configuration file.
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+# 2008 Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
@@ -195,8 +195,9 @@
 
 # Obsolete configurations.
 case ${target} in
-   c4x-*		\
- | tic4x-*		\
+   crx-*		\
+ | mt-*			\
+ | xstormy16-*		\
  )
     if test "x$enable_obsolete" != xyes; then
       echo "*** Configuration ${target} is obsolete." >&2
@@ -351,9 +352,6 @@
 	cpu_type=sh
 	need_64bit_hwint=yes
 	;;
-tic4x-*-*)
-        cpu_type=c4x
-        ;;
 esac
 
 tm_file=${cpu_type}/${cpu_type}.h
@@ -830,17 +828,6 @@
 	tmake_file=bfin/t-bfin
 	use_collect2=no
 	;;
-c4x-*-rtems* | tic4x-*-rtems*)
-	tmake_file="c4x/t-c4x t-rtems c4x/t-rtems"
-	tm_file="c4x/c4x.h c4x/rtems.h rtems.h"
-	c_target_objs="c4x-c.o"
-	cxx_target_objs="c4x-c.o"
-	;;
-c4x-* | tic4x-*)
-	tmake_file=c4x/t-c4x
-	c_target_objs="c4x-c.o"
-	cxx_target_objs="c4x-c.o"
-	;;
 cris-*-aout)
 	tm_file="dbxelf.h ${tm_file} cris/aout.h"
 	gas=yes
@@ -895,10 +882,6 @@
 	         linux.h frv/linux.h frv/frv-abi.h"
 	tmake_file="${tmake_file} frv/t-frv frv/t-linux"
 	;;
-h8300-*-rtemscoff*)
-	tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
-	tm_file="h8300/h8300.h dbxcoff.h h8300/coff.h h8300/rtems.h rtems.h"
-	;;
 h8300-*-rtems*)
 	tmake_file="h8300/t-h8300 h8300/t-elf t-rtems h8300/t-rtems"
 	tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h"
@@ -1828,16 +1811,6 @@
         tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
         tmake_file="${tmake_file} mt/t-mt"
         ;;
-ns32k-*-netbsdelf*)
-	echo "GCC does not yet support the ${target} target"; exit 1
-	;;
-ns32k-*-netbsd*)
-	tm_file="${tm_file} netbsd.h netbsd-aout.h ns32k/netbsd.h"
-	# On NetBSD, the headers are already okay, except for math.h.
-	tmake_file="t-netbsd ns32k/t-ns32k"
-	extra_parts=""
-	use_collect2=yes
-	;;
 pdp11-*-bsd)
 	tm_file="${tm_file} pdp11/2bsd.h"
 	use_fixproto=yes
@@ -2304,10 +2277,6 @@
 	fi
 	use_fixproto=yes
 	;;
-sh-*-rtemscoff*)
-	tmake_file="sh/t-sh t-rtems sh/t-rtems"
-	tm_file="${tm_file} dbxcoff.h sh/coff.h sh/rtems.h rtems.h"
-	;;
 sh-*-rtems*)
 	tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
Index: gcc/config/c4x/c4x-c.c (deleted)
===================================================================
Index: gcc/config/c4x/c4x.c (deleted)
===================================================================
Index: gcc/config/c4x/c4x.opt (deleted)
===================================================================
Index: gcc/config/c4x/t-c4x (deleted)
===================================================================
Index: gcc/config/c4x/c4x-modes.def (deleted)
===================================================================
Index: gcc/config/c4x/rtems.h (deleted)
===================================================================
Index: gcc/config/c4x/predicates.md (deleted)
===================================================================
Index: gcc/config/c4x/c4x.h (deleted)
===================================================================
Index: gcc/config/c4x/libgcc.S (deleted)
===================================================================
Index: gcc/config/c4x/c4x-protos.h (deleted)
===================================================================
Index: gcc/config/c4x/t-rtems (deleted)
===================================================================
Index: gcc/config/c4x/c4x.md (deleted)
===================================================================
Index: contrib/paranoia.cc
===================================================================
--- contrib/paranoia.cc	(revision 131758)
+++ contrib/paranoia.cc	(working copy)
@@ -2643,8 +2643,6 @@
 	    F(vax_g),
 	    F(i370_single),
 	    F(i370_double),
-	    F(c4x_single),
-	    F(c4x_extended),
 	    F(real_internal),
 #undef F
 	  };
Index: MAINTAINERS
===================================================================
--- MAINTAINERS	(revision 131758)
+++ MAINTAINERS	(working copy)
@@ -42,7 +42,6 @@
 avr port		Denis Chertykov		denisc@overta.ru
 avr port		Anatoly Sokolov		aesok@post.ru
 bfin port		Bernd Schmidt		bernd.schmidt@analog.com
-c4x port		Michael Hayes		m.hayes@elec.canterbury.ac.nz
 cris port		Hans-Peter Nilsson	hp@axis.com
 crx port		Paul Woegerer		paul.woegerer@nsc.com
 fr30 port		Nick Clifton		nickc@redhat.com

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]