new option --target-help to gcc (fwd)

Chandra Chavva cchavva@cygnus.com
Wed Mar 22 15:17:00 GMT 2000


Hi,

I have introduced --target-help option to the gcc which will display 
target specific commands of each tool. If invoked with this option, the 
gcc will pass this option to each tool and if that tool has any target 
specific commands, those will get displayed to standard out.

I have added description to all mips target specific options. some of 
the options descriptions were not clear, i left them as it is. Please 
let me know, if my descriptions are wrong or needs to be changed.

Please let me know is it okay to apply this patch.

Thanks
Chandra

        * gcc.c: New variable target_help_flag.
        (display_help): Add new option and its description.
        (process_command): Use it.
        * toplev.c (display_target_options): New function.
        (display_help): Use it.
        * cccp.c (main): Use the above new option.
        * config/mips/mips.h: Add description to options under
        TARGET_SWITCHES and TARGET_OPTIONS.

        * as.c (Options): Mention --target-help.
        (parse_args): Accept --target-help.

        * lexsup.c (ld_options): Mention --target-help.
        (parse_args): Accept --target-help.

Index: gcc/invoke.texi
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/invoke.texi,v
retrieving revision 1.298.4.3
diff -p -r1.298.4.3 invoke.texi
*** invoke.texi	2000/03/21 23:33:44	1.298.4.3
--- invoke.texi	2000/03/21 23:40:27
*************** in the following sections.
*** 92,98 ****
  @item Overall Options
  @xref{Overall Options,,Options Controlling the Kind of Output}.
  @smallexample
! -c  -S  -E  -o @var{file}  -pipe  -v  --help  -x @var{language}
  @end smallexample
  
  @item C Language Options
--- 92,98 ----
  @item Overall Options
  @xref{Overall Options,,Options Controlling the Kind of Output}.
  @smallexample
! -c  -S  -E  -o @var{file}  -pipe  -v  --help  --target-help  -x @var{language}
  @end smallexample
  
  @item C Language Options
*************** invoked by @code{gcc}, so that they can 
*** 639,644 ****
--- 639,648 ----
  they accept.  If the @code{-W} option is also specified then command
  line options which have no documentation associated with them will also
  be displayed.
+ 
+ @item --target-help
+ Print (on the standard output) a description of target specific command
+ line options for each tool.
  @end table
  
  @node Invoking G++
Index: gcc/gcc.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/gcc.c,v
retrieving revision 1.254.4.1
diff -p -r1.254.4.1 gcc.c
*** gcc.c	1999/03/19 03:39:03	1.254.4.1
--- gcc.c	2000/03/21 23:40:27
*************** static int print_help_list;
*** 122,127 ****
--- 122,131 ----
  
  static int verbose_flag;
  
+ /* Flag indicating to print target specific command line options. */
+ 
+ static int target_help_flag;
+ 
  /* Nonzero means write "temp" files in source directory
     and use the source file's name in them, and don't delete them.  */
  
*************** static struct compiler default_compilers
*** 624,629 ****
--- 628,634 ----
  		  %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \
  		  %{aux-info*}\
  		  %{--help:--help} \
+ 		  %{--target-help:--target-help} \
  		  %{attr-info*}\
  		  %{offset-info*}\
  		  %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
*************** static struct compiler default_compilers
*** 682,687 ****
--- 687,693 ----
  		   %{aux-info*}\
  		   %{attr-info*}\
  		   %{--help:--help} \
+ 		   %{--target-help:--target-help} \
  		   %{offset-info*}\
  		   %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
  		   %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
*************** display_help ()
*** 2881,2886 ****
--- 2887,2893 ----
    printf ("  -b <machine>             Run gcc for target <machine>, if installed\n");
    printf ("  -V <version>             Run gcc version number <version>, if installed\n");
    printf ("  -v                       Display the programs invoked by the compiler\n");
+   printf ("  --target-help             Display target specific command line options\n");
    printf ("  -E                       Preprocess only; do not compile, assemble or link\n");
    printf ("  -S                       Compile only; do not assemble or link\n");
    printf ("  -c                       Compile and assemble, but do not link\n");
*************** process_command (argc, argv)
*** 3268,3273 ****
--- 3275,3293 ----
  	    user_specs_head = user;
  	  user_specs_tail = user;
  	}
+       else if (!strcmp (argv[i], "-ftarget-help"))
+ 	{
+ 	  /* translate_options () has turned --target-help into -ftarget-help.  */
+ 	  target_help_flag = 1;
+ 
+ 	  /* We will be passing a dummy file on to the sub-processes.  */
+ 	  n_infiles++;
+ 	  n_switches++;
+ 
+ 	  add_preprocessor_option ("--target-help", 13);
+ 	  add_assembler_option ("--target-help", 13);
+ 	  add_linker_option ("--target-help", 13);
+ 	}
        else if (argv[i][0] == '-' && argv[i][1] != 0)
  	{
  	  register char *p = &argv[i][1];
*************** process_command (argc, argv)
*** 3547,3552 ****
--- 3567,3588 ----
  	;
        else if (! strcmp (argv[i], "-print-multi-directory"))
  	;
+       else if (! strcmp (argv[i], "-ftarget-help"))
+ 	{
+ 	    /* Create a dummy input file, so that we can pass --target-help
+ 	       on to the various sub-processes.  */
+ 	    infiles[n_infiles].language = "c";
+ 	    infiles[n_infiles++].name   = "target-dummy";
+ 	      
+ 	    /* Preserve the -target-help switch so that it can be caught by the
+ 	       cc1 spec string.  */
+ 	    switches[n_switches].part1     = "--target-help";
+ 	    switches[n_switches].args      = 0;
+ 	    switches[n_switches].live_cond = 0;
+ 	    switches[n_switches].valid     = 0;
+ 	    
+ 	    n_switches++;
+ 	}
        else if (strcmp (argv[i], "-fhelp") == 0)
  	{
  	  if (verbose_flag)
*************** main (argc, argv)
*** 5358,5363 ****
--- 5394,5408 ----
        else
  	printf ("%s\n", multilib_dir);
        exit (0);
+     }
+ 
+   if (target_help_flag)
+     {
+       /* Print if any target specific options.*/
+ 
+       /* We do not exit here. Instead we have created a fake input file
+ 	 called 'target-dummy' which needs to be compiled, and we pass this 
+ 	 on to the various sub-processes, along with the --target-help switch. */
      }
  
    if (print_help_list)
Index: gcc/toplev.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/toplev.c,v
retrieving revision 1.352.4.6
diff -p -r1.352.4.6 toplev.c
*** toplev.c	2000/03/21 23:33:45	1.352.4.6
--- toplev.c	2000/03/21 23:40:27
*************** static void dump_rtl PROTO((char *, tree
*** 208,213 ****
--- 208,214 ----
  static void clean_dump_file PROTO((char *));
  static void compile_file PROTO((char *));
  static void display_help PROTO ((void));
+ static void display_target_options PROTO ((void));
  
  static void print_version PROTO((FILE *, char *));
  static int print_single_switch PROTO((FILE *, int, int, char *, char *, char *,
*************** display_help ()
*** 4657,4662 ****
--- 4658,4674 ----
    if (undoc)
      printf ("\nThere are undocumented %s specific options as well.\n", lang);
  
+   display_target_options ();
+ 
+ }
+ 
+ void 
+ display_target_options ()
+ {
+ 
+   int undoc;
+   unsigned long	 i;
+ 
    if (NUM_ELEM (target_switches) > 1
  #ifdef TARGET_OPTIONS
        || NUM_ELEM (target_options) > 1
*************** display_help ()
*** 4681,4690 ****
  	      undoc = 1;
  	      
  	      if (extra_warnings)
! 		printf ("  -m%-21.21s [undocumented]\n", option);
  	    }
  	  else if (* description != 0)
! 	    doc += printf ("  -m%-21.21s %s\n", option, description);
  	}
        
  #ifdef TARGET_OPTIONS      
--- 4693,4702 ----
  	      undoc = 1;
  	      
  	      if (extra_warnings)
! 		printf ("  -m%-23.23s [undocumented]\n", option);
  	    }
  	  else if (* description != 0)
! 	    doc += printf ("  -m%-23.23s %s\n", option, description);
  	}
        
  #ifdef TARGET_OPTIONS      
*************** display_help ()
*** 4700,4709 ****
  	      undoc = 1;
  	      
  	      if (extra_warnings)
! 		printf ("  -m%-21.21s [undocumented]\n", option);
  	    }
  	  else if (* description != 0)
! 	    doc += printf ("  -m%-21.21s %s\n", option, description);
  	}
  #endif
        if (undoc)
--- 4712,4721 ----
  	      undoc = 1;
  	      
  	      if (extra_warnings)
! 		printf ("  -m%-23.23s [undocumented]\n", option);
  	    }
  	  else if (* description != 0)
! 	    doc += printf ("  -m%-23.23s %s\n", option, description);
  	}
  #endif
        if (undoc)
*************** main (argc, argv)
*** 4967,4972 ****
--- 4979,4990 ----
  	      exit (0);
  	    }
  
+ 	  if (!strcmp (argv[i], "--target-help"))
+ 	    {
+ 	      display_target_options ();
+ 	      exit (0);
+ 	    }
+ 	  
  	  if (strings_processed != 0)
  	    i += strings_processed - 1;
  	}
*************** main (argc, argv)
*** 5422,5427 ****
--- 5440,5450 ----
  	  else if (!strcmp (str, "-help"))
  	    {
  	      display_help ();
+ 	      exit (0);
+ 	    }
+ 	  else if (!strcmp (argv[i], "--target-help"))
+ 	    {
+ 	      display_target_options ();
  	      exit (0);
  	    }
  	  else
Index: gcc/cccp.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/cccp.c,v
retrieving revision 1.194
diff -p -r1.194 cccp.c
*** cccp.c	1999/03/02 18:42:00	1.194
--- cccp.c	2000/03/21 23:40:27
*************** main (argc, argv)
*** 1643,1648 ****
--- 1643,1654 ----
  	break;
  
        case '-':
+  	if (!strcmp (argv[i], "--target-help"))
+ 	  {
+ 	    /* Print if any target specific options. */
+ 	    exit (0);
+ 	    break;
+ 	  }
  	if (strcmp (argv[i], "--help") != 0)
  	  return i;
  	print_help ();
Index: gas/as.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gas/as.c,v
retrieving revision 1.124
diff -p -r1.124 as.c
*** as.c	1998/08/02 02:39:51	1.124
--- as.c	2000/03/21 23:40:27
*************** Options:\n\
*** 151,156 ****
--- 151,157 ----
    -f		          skip whitespace and comment preprocessing\n\
    --gstabs	          generate stabs debugging information\n\
    --help		  show this message and exit\n\
+   --target-help           show target specific options\n\
    -I DIR		  add DIR to search list for .include directives\n\
    -J		          don't warn about signed overflow\n\
    -K		          warn when differences altered for long displacements\n\
*************** Options:\n\
*** 183,189 ****
  			  the source file\n\
    --listing-cont-lines	  set the maximum number of continuation lines used\n\
  			  for the output data column of the listing\n"));
- 
    md_show_usage (stream);
  
    fprintf (stream, _("\nReport bugs to bug-gnu-utils@gnu.org\n"));
--- 184,189 ----
*************** parse_args (pargc, pargv)
*** 365,371 ****
  #define OPTION_STRIP_LOCAL_ABSOLUTE (OPTION_STD_BASE + 15)
      {"strip-local-absolute", no_argument, NULL, OPTION_STRIP_LOCAL_ABSOLUTE},
  #define OPTION_TRADITIONAL_FORMAT (OPTION_STD_BASE + 16)
!     {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT}
    };
  
    /* Construct the option lists from the standard list and the
--- 365,373 ----
  #define OPTION_STRIP_LOCAL_ABSOLUTE (OPTION_STD_BASE + 15)
      {"strip-local-absolute", no_argument, NULL, OPTION_STRIP_LOCAL_ABSOLUTE},
  #define OPTION_TRADITIONAL_FORMAT (OPTION_STD_BASE + 16)
!     {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT},
! #define OPTION_TARGET_HELP (OPTION_STD_BASE + 17)
!     {"target-help", no_argument, NULL, OPTION_TARGET_HELP}
    };
  
    /* Construct the option lists from the standard list and the
*************** parse_args (pargc, pargv)
*** 434,439 ****
--- 436,445 ----
  	  new_argv[new_argc++] = optarg;
  	  new_argv[new_argc] = NULL;
  	  break;
+ 	
+ 	case OPTION_TARGET_HELP:
+ 	  md_show_usage (stdout);
+ 	  exit (EXIT_SUCCESS);
  
  	case OPTION_HELP:
  	  show_usage (stdout);
Index: ld/lexsup.c
===================================================================
RCS file: /cvs/cvsfiles/devo/ld/lexsup.c,v
retrieving revision 1.102
diff -p -r1.102 lexsup.c
*** lexsup.c	1999/03/02 16:27:26	1.102
--- lexsup.c	2000/03/21 23:40:27
*************** int parsing_defsym = 0;
*** 92,98 ****
  #define OPTION_SORT_COMMON		(OPTION_SONAME + 1)
  #define OPTION_STATS			(OPTION_SORT_COMMON + 1)
  #define OPTION_SYMBOLIC			(OPTION_STATS + 1)
! #define OPTION_TASK_LINK		(OPTION_SYMBOLIC + 1)
  #define OPTION_TBSS			(OPTION_TASK_LINK + 1)
  #define OPTION_TDATA			(OPTION_TBSS + 1)
  #define OPTION_TTEXT			(OPTION_TDATA + 1)
--- 92,99 ----
  #define OPTION_SORT_COMMON		(OPTION_SONAME + 1)
  #define OPTION_STATS			(OPTION_SORT_COMMON + 1)
  #define OPTION_SYMBOLIC			(OPTION_STATS + 1)
! #define OPTION_TARGET_HELP		(OPTION_SYMBOLIC + 1)
! #define OPTION_TASK_LINK		(OPTION_TARGET_HELP + 1)
  #define OPTION_TBSS			(OPTION_TASK_LINK + 1)
  #define OPTION_TDATA			(OPTION_TBSS + 1)
  #define OPTION_TTEXT			(OPTION_TDATA + 1)
*************** static const struct ld_option ld_options
*** 316,321 ****
--- 317,324 ----
        '\0', NULL, N_("Print memory usage statistics"), TWO_DASHES },
    { {"task-link", required_argument, NULL, OPTION_TASK_LINK},
        '\0', N_("SYMBOL"), N_("Do task level linking"), TWO_DASHES },
+   { {"target-help", no_argument, NULL, OPTION_TARGET_HELP},
+       '\0', NULL, N_("Display target specific options"), TWO_DASHES },
    { {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT},
        '\0', NULL, N_("Use same format as native linker"), TWO_DASHES },
    { {"Tbss", required_argument, NULL, OPTION_TBSS},
*************** parse_args (argc, argv)
*** 803,808 ****
--- 806,814 ----
  	  parser_input = input_script;
  	  yyparse ();
  	  break;
+ 	case OPTION_TARGET_HELP:
+ 	  /* Mention any target specific options. */
+ 	  exit (0);
  	case OPTION_TBSS:
  	  set_section_start (".bss", optarg);
  	  break;
Index: gcc/config/mips/mips.h
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/config/mips/mips.h,v
retrieving revision 1.168.4.5
diff -p -r1.168.4.5 mips.h
*** mips.h	2000/03/17 21:31:09	1.168.4.5
--- mips.h	2000/03/22 00:02:22
*************** extern void		mips_select_section ();
*** 476,530 ****
  
  #define TARGET_SWITCHES							\
  {									\
!   {"int64",		  MASK_INT64 | MASK_LONG64},			\
!   {"long64",		  MASK_LONG64},					\
!   {"long32",		 -(MASK_LONG64 | MASK_INT64)},			\
!   {"split-addresses",	  MASK_SPLIT_ADDR},				\
!   {"no-split-addresses", -MASK_SPLIT_ADDR},				\
!   {"mips-as",		 -MASK_GAS},					\
!   {"gas",		  MASK_GAS},					\
!   {"rnames",		  MASK_NAME_REGS},				\
!   {"no-rnames",		 -MASK_NAME_REGS},				\
    {"gpOPT",		  MASK_GPOPT},					\
!   {"gpopt",		  MASK_GPOPT},					\
    {"no-gpOPT",		 -MASK_GPOPT},					\
!   {"no-gpopt",		 -MASK_GPOPT},					\
!   {"stats",		  MASK_STATS},					\
!   {"no-stats",		 -MASK_STATS},					\
!   {"memcpy",		  MASK_MEMCPY},					\
!   {"no-memcpy",		 -MASK_MEMCPY},					\
!   {"mips-tfile",	  MASK_MIPS_TFILE},				\
!   {"no-mips-tfile",	 -MASK_MIPS_TFILE},				\
!   {"soft-float",	  MASK_SOFT_FLOAT},				\
!   {"hard-float",	 -MASK_SOFT_FLOAT},				\
!   {"fp64",		  MASK_FLOAT64},				\
!   {"fp32",		 -MASK_FLOAT64},				\
!   {"gp64",		  MASK_64BIT},					\
!   {"gp32",		 -MASK_64BIT},					\
!   {"abicalls",		  MASK_ABICALLS},				\
!   {"no-abicalls",	 -MASK_ABICALLS},				\
!   {"half-pic",		  MASK_HALF_PIC},				\
!   {"no-half-pic",	 -MASK_HALF_PIC},				\
!   {"long-calls",	  MASK_LONG_CALLS},				\
    {"no-long-calls",	 -MASK_LONG_CALLS},				\
!   {"embedded-pic",	  MASK_EMBEDDED_PIC},				\
!   {"no-embedded-pic",	 -MASK_EMBEDDED_PIC},				\
!   {"embedded-data",	  MASK_EMBEDDED_DATA},				\
!   {"no-embedded-data",	 -MASK_EMBEDDED_DATA},				\
!   {"eb",		  MASK_BIG_ENDIAN},				\
!   {"el",		 -MASK_BIG_ENDIAN},				\
!   {"single-float",	  MASK_SINGLE_FLOAT},				\
!   {"double-float",	 -MASK_SINGLE_FLOAT},				\
!   {"mad",		  MASK_MAD},					\
!   {"no-mad",		 -MASK_MAD},					\
    {"fix4300",             MASK_4300_MUL_FIX},				\
    {"no-fix4300",         -MASK_4300_MUL_FIX},				\
!   {"4650",		  MASK_MAD | MASK_SINGLE_FLOAT},		\
!   {"3900",		  MASK_MIPS3900},                               \
!   {"5900",		  MASK_MIPS5900 | MASK_SINGLE_FLOAT},           \
!   {"5400",		  MASK_MIPS5400}, /* CYGNUS LOCAL vr5400/raeburn */ \
!   {"check-zero-division",-MASK_NO_CHECK_ZERO_DIV},			\
!   {"no-check-zero-division", MASK_NO_CHECK_ZERO_DIV},			\
    {"check-range-division",MASK_CHECK_RANGE_DIV},			\
    {"no-check-range-division",-MASK_CHECK_RANGE_DIV},			\
    {"debug",		  MASK_DEBUG},					\
--- 476,574 ----
  
  #define TARGET_SWITCHES							\
  {									\
!   {"int64",		  MASK_INT64 | MASK_LONG64, 	\
! 	"Type long, int, and pointer are 64 bits"},			\
!   {"long64",		  MASK_LONG64, 			\
! 	"Types long and pointer are 64 bits and type int is 32 bits"},	\
!   {"long32",		 -(MASK_LONG64 | MASK_INT64), 	\
! 	"Type long and int are 32 bits"},				\
!   {"split-addresses",	  MASK_SPLIT_ADDR, 		\
! 	"Split low and high parts of load address constant"},		\
!   {"no-split-addresses", -MASK_SPLIT_ADDR,		\
! 	"Do not split low and high parts of load address constant"},	\
!   {"mips-as",		 -MASK_GAS,			\
! 	"Generate code for the MIPS assembler"},			\
!   {"gas",		  MASK_GAS,			\
! 	"Generate code for the GNU assembler"},				\
!   {"rnames",		  MASK_NAME_REGS,		\
! 	"Use MIPS software names for the registers"},			\
!   {"no-rnames",		 -MASK_NAME_REGS,		\
! 	"Do not use MIPS software names for the registers"},		\
    {"gpOPT",		  MASK_GPOPT},					\
!   {"gpopt",		  MASK_GPOPT,			\
! 	"Write all of the data declarations first in the text section"},\
    {"no-gpOPT",		 -MASK_GPOPT},					\
!   {"no-gpopt",		 -MASK_GPOPT,			\
! 	"Do not write data declarations first in the text section"},	\
!   {"stats",		  MASK_STATS,			\
! 	"Print statistics about the program to standard error"},	\
!   {"no-stats",		 -MASK_STATS,			\
! 	"Do not print statistics about the program to standard error"},	\
!   {"memcpy",		  MASK_MEMCPY,			\
! 	"Call standard memcpy function"},				\
!   {"no-memcpy",		 -MASK_MEMCPY,			\
! 	"Generate inline code for memcpy"},				\
!   {"mips-tfile",	  MASK_MIPS_TFILE,		\
! 	"Postprocess the object file to add local variables for debugging"},\
!   {"no-mips-tfile",	 -MASK_MIPS_TFILE,		\
! 	"Do not postprocess the object file to add local variables"},	\
!   {"soft-float",	  MASK_SOFT_FLOAT,		\
! 	"Generate output containing library calls for floating point"},	\
!   {"hard-float",	 -MASK_SOFT_FLOAT,		\
! 	"Generate output containing floating point instructions"},	\
!   {"fp64",		  MASK_FLOAT64,			\
! 	"32 64-bit floating point registers are available"},		\
!   {"fp32",		 -MASK_FLOAT64,			\
! 	"32 32-bit floating point registers are available"},		\
!   {"gp64",		  MASK_64BIT,			\
! 	"64 64-bit general purpose registers are available"},		\
!   {"gp32",		 -MASK_64BIT,			\
! 	"32 32-bit general purpose registers are available"},		\
!   {"abicalls",		  MASK_ABICALLS,		\
! 	"Emit pseudo operations"},					\
!   {"no-abicalls",	 -MASK_ABICALLS,		\
! 	"Do not emit pseudo operations"},				\
!   {"half-pic",		  MASK_HALF_PIC,		\
! 	"Put pointers to extern references into the data section"},	\
!   {"no-half-pic",	 -MASK_HALF_PIC,		\
! 	"Put pointer references in text section"},			\
!   {"long-calls",	  MASK_LONG_CALLS,		\
! 	"Do all calls with the JALR instruction"},			\
    {"no-long-calls",	 -MASK_LONG_CALLS},				\
!   {"embedded-pic",	  MASK_EMBEDDED_PIC,		\
! 	"Generate PIC code suitable for some embedded systems"},	\
!   {"no-embedded-pic",	 -MASK_EMBEDDED_PIC,		\
! 	"Do not generate PIC code"},					\
!   {"embedded-data",	  MASK_EMBEDDED_DATA,		\
! 	"Allocate variables to read-only data section"},		\
!   {"no-embedded-data",	 -MASK_EMBEDDED_DATA,		\
! 	"Allocate variables to data section"},				\
!   {"eb",		  MASK_BIG_ENDIAN,		\
! 	"Compile code in big endian mode"},				\
!   {"el",		 -MASK_BIG_ENDIAN,		\
! 	"Compile code in little endian mode"},				\
!   {"single-float",	  MASK_SINGLE_FLOAT,		\
! 	"Support single precision operations"},				\
!   {"double-float",	 -MASK_SINGLE_FLOAT,		\
! 	"Support double precision operations"},				\
!   {"mad",		  MASK_MAD,			\
! 	"Use mad, madu and mul instructions"},				\
!   {"no-mad",		 -MASK_MAD,			\
! 	"Do not use mad, madu and mul instructions"},			\
    {"fix4300",             MASK_4300_MUL_FIX},				\
    {"no-fix4300",         -MASK_4300_MUL_FIX},				\
!   {"4650",		  MASK_MAD | MASK_SINGLE_FLOAT,	\
! 	"Turns on -msingle-float, -mmad and -mcpu=r4300"},		\
!   {"3900",		  MASK_MIPS3900,		\
! 	"Similiar to -mcpu=r3900"},	                               \
!   {"5900",		  MASK_MIPS5900 | MASK_SINGLE_FLOAT, \
! 	"Similiar to -mcpu=r5900"},				        \
!   {"5400",		  MASK_MIPS5400, 		\
! 	"Similiar to -mcpu=r5400"}, /* CYGNUS LOCAL vr5400/raeburn */ \
!   {"check-zero-division",-MASK_NO_CHECK_ZERO_DIV,	\
! 	"Integer divided by zero is detected"},				\
!   {"no-check-zero-division", MASK_NO_CHECK_ZERO_DIV,	\
! 	"Integer divided by zero is not detected"},			\
    {"check-range-division",MASK_CHECK_RANGE_DIV},			\
    {"no-check-range-division",-MASK_CHECK_RANGE_DIV},			\
    {"debug",		  MASK_DEBUG},					\
*************** extern void		mips_select_section ();
*** 601,619 ****
  #define TARGET_OPTIONS							\
  {									\
    SUBTARGET_TARGET_OPTIONS						\
!   { "cpu=",	&mips_cpu_string	},				\
!   { "ips",	&mips_isa_string	},				\
    { "entry",	&mips_entry_string	},				\
    /* CYGNUS LOCAL law */						\
!   { "align-loops=",	&mips_align_loops_string },			\
!   { "align-jumps=",	&mips_align_jumps_string },			\
!   { "align-functions=",	&mips_align_funcs_string },			\
!   { "max-skip-loops=",	&mips_max_skip_loops_string },			\
!   { "max-skip-jumps=",	&mips_max_skip_jumps_string },			\
!   { "max-skip-functions=",	&mips_max_skip_funcs_string },		\
    /* END CYGNUS LOCAL */						\
    /* CYGNUS LOCAL chandra/r5900 */					\
!   { "handle-ee-div-pipeline-bug",  &mips_ee_div_pipeline_bug_string },	\
    /* END CYGNUS LOCAL */						\
    { "no-mips16", &mips_no_mips16_string	},                              \
    { "explicit-type-size", &mips_explicit_type_size_string }		\
--- 645,672 ----
  #define TARGET_OPTIONS							\
  {									\
    SUBTARGET_TARGET_OPTIONS						\
!   { "cpu=",	&mips_cpu_string, 		\
! 	"Default machine type for scheduling instructions"},		\
!   { "ips",	&mips_isa_string,		\
! 	"Specify the level of MIPS ISA. Use 1,2,3,4,32,64"},		\
    { "entry",	&mips_entry_string	},				\
    /* CYGNUS LOCAL law */						\
!   { "align-loops=",	&mips_align_loops_string,	\
! 	"Align loops to the power of 2"},				\
!   { "align-jumps=",	&mips_align_jumps_string,	\
! 	"Align instructions that are only jumbed to to the power of 2"},\
!   { "align-functions=",	&mips_align_funcs_string,	\
! 	"Align function to the power of 2"},				\
!   { "max-skip-loops=",	&mips_max_skip_loops_string,	\
! 	"Maximum number of bytes for padding loop alignment"},		\
!   { "max-skip-jumps=",	&mips_max_skip_jumps_string,	\
! 	"Maximum number of bytes for padding jump alignment"},		\
!   { "max-skip-functions=",	&mips_max_skip_funcs_string,	\
! 	"Maximum number of bytes for padding function alignment"},	\
    /* END CYGNUS LOCAL */						\
    /* CYGNUS LOCAL chandra/r5900 */					\
!   { "handle-ee-div-pipeline-bug",  &mips_ee_div_pipeline_bug_string, \
! 	"Do not generate div, sqrt or rsqrt in branch delay slot" },	\
    /* END CYGNUS LOCAL */						\
    { "no-mips16", &mips_no_mips16_string	},                              \
    { "explicit-type-size", &mips_explicit_type_size_string }		\






More information about the Gcc-patches mailing list