public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* target_flags
@ 2003-03-10 20:24 Mike Stump
  2003-03-10 20:47 ` target_flags DJ Delorie
  2003-03-10 21:21 ` target_flags David Edelsohn
  0 siblings, 2 replies; 17+ messages in thread
From: Mike Stump @ 2003-03-10 20:24 UTC (permalink / raw)
  To: gcc

Ok, so I am working on a port (rs6000) that is out of target_flags by 
about 4 flags (in my tree).  :-(  What do I do now?

Solutions come to mind,

	1   Give up, go home, to hard to fix
	2   long long
	4   int[2]
	8   bitmap.h
	16  remove extraneous target_flags
	32  don't use target_flags, just hide them elsewhere (flag_opt2, 
flag_opt3)
	64  nest target flags so that other bits have multiple meanings 
depending upon what other	    target_flags bits are set.

long long appears nice, but -Werror, -Wlong-long and friends kill it
4 is no better than 8.

I think I like 8 the best, the impact would be, uhm, extensive.  The 
impact of even 2 would be large (-0x02 -> -0x02LL in all ports).  For 
8, I think MASK_TARGET_OPT1 type things ought to take bit positions.  
The concept of multiple bits as a C constant fades away with 4 and 8.

:-(

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 20:24 target_flags Mike Stump
@ 2003-03-10 20:47 ` DJ Delorie
  2003-03-10 20:53   ` target_flags Zack Weinberg
  2003-03-10 21:21 ` target_flags David Edelsohn
  1 sibling, 1 reply; 17+ messages in thread
From: DJ Delorie @ 2003-03-10 20:47 UTC (permalink / raw)
  To: mrs; +Cc: gcc


> Ok, so I am working on a port (rs6000) that is out of target_flags by 
> about 4 flags (in my tree).  :-(  What do I do now?

I proposed a solution a year ago:

http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00833.html

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 20:47 ` target_flags DJ Delorie
@ 2003-03-10 20:53   ` Zack Weinberg
  2003-03-11  1:41     ` target_flags Mike Stump
  2003-04-17 20:46     ` target_flags DJ Delorie
  0 siblings, 2 replies; 17+ messages in thread
From: Zack Weinberg @ 2003-03-10 20:53 UTC (permalink / raw)
  To: DJ Delorie; +Cc: mrs, gcc

DJ Delorie <dj@redhat.com> writes:

>> Ok, so I am working on a port (rs6000) that is out of target_flags by 
>> about 4 flags (in my tree).  :-(  What do I do now?
>
> I proposed a solution a year ago:
>
> http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00833.html

That looks like, at least, a way forward.  I am willing to approve a
complete version of that patch, if Mike agrees it solves his problem.

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 20:24 target_flags Mike Stump
  2003-03-10 20:47 ` target_flags DJ Delorie
@ 2003-03-10 21:21 ` David Edelsohn
  2003-03-11  1:46   ` target_flags Mike Stump
  1 sibling, 1 reply; 17+ messages in thread
From: David Edelsohn @ 2003-03-10 21:21 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc

>>>>> Mike Stump writes:

Mike> Ok, so I am working on a port (rs6000) that is out of target_flags by 
Mike> about 4 flags (in my tree).  :-(  What do I do now?

	We already have been using additional variables outside of
target_flags.  While it is nice and convenient, not all options require
using target_flags to record the value.

David

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 20:53   ` target_flags Zack Weinberg
@ 2003-03-11  1:41     ` Mike Stump
  2003-03-11  2:44       ` target_flags Zack Weinberg
  2003-03-11  4:12       ` target_flags DJ Delorie
  2003-04-17 20:46     ` target_flags DJ Delorie
  1 sibling, 2 replies; 17+ messages in thread
From: Mike Stump @ 2003-03-11  1:41 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: DJ Delorie, gcc

On Monday, March 10, 2003, at 12:42 PM, Zack Weinberg wrote:
> DJ Delorie <dj@redhat.com> writes:
>
>>> Ok, so I am working on a port (rs6000) that is out of target_flags by
>>> about 4 flags (in my tree).  :-(  What do I do now?
>>
>> I proposed a solution a year ago:
>>
>> http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00833.html
>
> That looks like, at least, a way forward.  I am willing to approve a
> complete version of that patch, if Mike agrees it solves his problem.

Yes, it would provide greater flexibility in solving problems like 
mine.  I don't demand it yet, as I really need it for our 3.3 tree, and 
I don't think 3.3 should take on this level of change at this point.  
In 3.4, there are enough spare flags again, right now anyway, that I 
can use them directly without the need for the above patch.

Maybe the change would be less invasive if instead of replacing 
TARGET_SWITCHES, we complemented it with TARGET_SWITCHES2...  This 
would remove the need to redo all existing ports.  90% of ports will 
never need the extra functionality...
This type of change would also make it more palatable for 3.3.

For now, I will just employ the status quo solution that David pointed 
out.  I just don't want people to give me grief later, if I used that 
solution in a gcc submission.  :-(

Thanks.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 21:21 ` target_flags David Edelsohn
@ 2003-03-11  1:46   ` Mike Stump
  0 siblings, 0 replies; 17+ messages in thread
From: Mike Stump @ 2003-03-11  1:46 UTC (permalink / raw)
  To: David Edelsohn; +Cc: gcc

On Monday, March 10, 2003, at 12:53 PM, David Edelsohn wrote:
> 	We already have been using additional variables outside of
> target_flags.  While it is nice and convenient, not all options require
> using target_flags to record the value.

Ah, I missed it, thanks.  I'll do this for now.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-11  1:41     ` target_flags Mike Stump
@ 2003-03-11  2:44       ` Zack Weinberg
  2003-03-11  5:26         ` target_flags Hans-Peter Nilsson
  2003-03-11  4:12       ` target_flags DJ Delorie
  1 sibling, 1 reply; 17+ messages in thread
From: Zack Weinberg @ 2003-03-11  2:44 UTC (permalink / raw)
  To: Mike Stump; +Cc: DJ Delorie, gcc

Mike Stump <mrs@apple.com> writes:

> Yes, it would provide greater flexibility in solving problems like
> mine.  I don't demand it yet, as I really need it for our 3.3 tree,
> and I don't think 3.3 should take on this level of change at this
> point.  In 3.4, there are enough spare flags again, right now anyway,
> that I can use them directly without the need for the above patch.

I'm pretty sure 3.3 had target_flags_explicit, which is the reason why
there's more room in the 3.4 rs6000 target_flags.  You could backport
that patch in your local tree.

> Maybe the change would be less invasive if instead of replacing
> TARGET_SWITCHES, we complemented it with TARGET_SWITCHES2...  This
> would remove the need to redo all existing ports.  90% of ports will
> never need the extra functionality...
> This type of change would also make it more palatable for 3.3.

Ugh.  Yeah, it's less invasive now, but it's not a good long-term
solution.

> For now, I will just employ the status quo solution that David
> pointed out.  I just don't want people to give me grief later, if I
> used that solution in a gcc submission.  :-(

Since that approach is already being used in rs6000.c I don't see any
harm in using it for more stuff there.  And note that DJ's proposed
patch promotes that hack to a proper feature.

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-11  1:41     ` target_flags Mike Stump
  2003-03-11  2:44       ` target_flags Zack Weinberg
@ 2003-03-11  4:12       ` DJ Delorie
  2003-03-11  4:17         ` target_flags Zack Weinberg
  1 sibling, 1 reply; 17+ messages in thread
From: DJ Delorie @ 2003-03-11  4:12 UTC (permalink / raw)
  To: mrs; +Cc: zack, gcc


> Maybe the change would be less invasive if instead of replacing 
> TARGET_SWITCHES, we complemented it with TARGET_SWITCHES2...  This 
> would remove the need to redo all existing ports.

I had, at the time, planned on scripting an update of all the ports.
I expected that to be part of this patch.  Personally, I'd rather bite
the bullet on this one than maintain support for two types of tables
forever.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-11  4:12       ` target_flags DJ Delorie
@ 2003-03-11  4:17         ` Zack Weinberg
  0 siblings, 0 replies; 17+ messages in thread
From: Zack Weinberg @ 2003-03-11  4:17 UTC (permalink / raw)
  To: DJ Delorie; +Cc: mrs, gcc

DJ Delorie <dj@redhat.com> writes:

> I had, at the time, planned on scripting an update of all the ports.
> I expected that to be part of this patch.  Personally, I'd rather bite
> the bullet on this one than maintain support for two types of tables
> forever.

Agree.  We have tons of internal API transitions that were begun and
then stalled halfway; let's not make this another one.

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-11  2:44       ` target_flags Zack Weinberg
@ 2003-03-11  5:26         ` Hans-Peter Nilsson
  0 siblings, 0 replies; 17+ messages in thread
From: Hans-Peter Nilsson @ 2003-03-11  5:26 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: Mike Stump, DJ Delorie, gcc

On Mon, 10 Mar 2003, Zack Weinberg wrote:
> Mike Stump <mrs@apple.com> writes:
> > Maybe the change would be less invasive if instead of replacing
> > TARGET_SWITCHES, we complemented it with TARGET_SWITCHES2...  This
> > would remove the need to redo all existing ports.  90% of ports will
> > never need the extra functionality...
> > This type of change would also make it more palatable for 3.3.
>
> Ugh.  Yeah, it's less invasive now, but it's not a good long-term
> solution.

Perhaps just name it differently (not using ...2 ..._NEW etc.)
Something like TARGET_SPECIFIC_OPTIONS or TARGET_SPECIFIC_SWITCHES?

brgds, H-P


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-03-10 20:53   ` target_flags Zack Weinberg
  2003-03-11  1:41     ` target_flags Mike Stump
@ 2003-04-17 20:46     ` DJ Delorie
  2003-04-17 21:44       ` target_flags Zack Weinberg
  1 sibling, 1 reply; 17+ messages in thread
From: DJ Delorie @ 2003-04-17 20:46 UTC (permalink / raw)
  To: zack; +Cc: mrs, gcc


> DJ Delorie <dj@redhat.com> writes:
> >> Ok, so I am working on a port (rs6000) that is out of target_flags by 
> >> about 4 flags (in my tree).  :-(  What do I do now?
> >
> > I proposed a solution a year ago:
> >
> > http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00833.html
> 
> That looks like, at least, a way forward.  I am willing to approve a
> complete version of that patch, if Mike agrees it solves his problem.

Here is a complete and current version of that patch.  Bootstraped on
Linux.

2003-04-17  DJ Delorie  <dj@redhat.com>

	* toplev.c (target_options): Add value field.
	(set_target_switch): Handle target options with default
	values.
	* doc/tm.texi: Document how default vs non-default target
	options work.
	* config/alpha/alpha.h, config/arc/arc.h, config/avr/avr.h,
	config/c4x/c4x.h, config/cris/aout.h, config/cris/cris.h,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/frv/frv.h, config/i386/i386.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/m88k/m88k.h, config/mcore/mcore.h,
	config/mips/mips.h, config/mmix/mmix.h, config/pa/pa.h,
	config/rs6000/rs6000.h, config/rs6000/sysv4.h,
	config/s390/s390.h, config/sparc/sparc.h, config/v850/v850.h:
	Add default value initializer to target options.

Index: toplev.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/toplev.c,v
retrieving revision 1.741
diff -p -2 -r1.741 toplev.c
*** toplev.c	12 Apr 2003 02:16:45 -0000	1.741
--- toplev.c	17 Apr 2003 20:08:59 -0000
*************** static const struct
*** 1438,1441 ****
--- 1438,1442 ----
    const char **const variable;
    const char *const description;
+   const char *const value;
  }
  target_options[] = TARGET_OPTIONS;
*************** set_target_switch (name)
*** 4686,4693 ****
        {
  	int len = strlen (target_options[j].prefix);
! 	if (!strncmp (target_options[j].prefix, name, len))
  	  {
! 	    *target_options[j].variable = name + len;
! 	    valid_target_option = 1;
  	  }
        }
--- 4687,4705 ----
        {
  	int len = strlen (target_options[j].prefix);
! 	if (target_options[j].value)
  	  {
! 	    if (!strcmp (target_options[j].prefix, name))
! 	      {
! 		*target_options[j].variable = target_options[j].value;
! 		valid_target_option = 1;
! 	      }
! 	  }
! 	else
! 	  {
! 	    if (!strncmp (target_options[j].prefix, name, len))
! 	      {
! 		*target_options[j].variable = name + len;
! 		valid_target_option = 1;
! 	      }
  	  }
        }
Index: config/alpha/alpha.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.h,v
retrieving revision 1.194
diff -p -2 -r1.194 alpha.h
*** config/alpha/alpha.h	14 Mar 2003 17:58:48 -0000	1.194
--- config/alpha/alpha.h	17 Apr 2003 20:08:59 -0000
*************** extern const char *alpha_tls_size_string
*** 351,367 ****
  {							\
    {"cpu=",		&alpha_cpu_string,		\
!    N_("Use features of and schedule given CPU")},	\
    {"tune=",		&alpha_tune_string,		\
!    N_("Schedule given CPU")},				\
    {"fp-rounding-mode=",	&alpha_fprm_string,		\
!    N_("Control the generated fp rounding mode")},	\
    {"fp-trap-mode=",	&alpha_fptm_string,		\
!    N_("Control the IEEE trap mode")},			\
    {"trap-precision=",	&alpha_tp_string,		\
!    N_("Control the precision given to fp exceptions")},	\
    {"memory-latency=",	&alpha_mlat_string,		\
!    N_("Tune expected memory latency")},			\
    {"tls-size=",		&alpha_tls_size_string,		\
!    N_("Specify bit size of immediate TLS offsets")},	\
  }
  
--- 351,367 ----
  {							\
    {"cpu=",		&alpha_cpu_string,		\
!    N_("Use features of and schedule given CPU"), 0},	\
    {"tune=",		&alpha_tune_string,		\
!    N_("Schedule given CPU"), 0},			\
    {"fp-rounding-mode=",	&alpha_fprm_string,		\
!    N_("Control the generated fp rounding mode"), 0},	\
    {"fp-trap-mode=",	&alpha_fptm_string,		\
!    N_("Control the IEEE trap mode"), 0},		\
    {"trap-precision=",	&alpha_tp_string,		\
!    N_("Control the precision given to fp exceptions"), 0},	\
    {"memory-latency=",	&alpha_mlat_string,		\
!    N_("Tune expected memory latency"), 0},		\
    {"tls-size=",		&alpha_tls_size_string,		\
!    N_("Specify bit size of immediate TLS offsets"), 0},	\
  }
  
Index: config/arc/arc.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/arc/arc.h,v
retrieving revision 1.62
diff -p -2 -r1.62 arc.h
*** config/arc/arc.h	17 Apr 2003 01:38:28 -0000	1.62
--- config/arc/arc.h	17 Apr 2003 20:08:59 -0000
*************** extern const char *arc_text_string,*arc_
*** 139,147 ****
  
  #define TARGET_OPTIONS \
! {						\
!   { "cpu=",	&arc_cpu_string		},	\
!   { "text=",	&arc_text_string	},	\
!   { "data=",	&arc_data_string	},	\
!   { "rodata=",	&arc_rodata_string	},	\
  }
  
--- 139,147 ----
  
  #define TARGET_OPTIONS \
! {					\
!   { "cpu=",	&arc_cpu_string, 0},	\
!   { "text=",	&arc_text_string, 0},	\
!   { "data=",	&arc_data_string, 0},	\
!   { "rodata=",	&arc_rodata_string, 0},	\
  }
  
Index: config/avr/avr.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/avr/avr.h,v
retrieving revision 1.76
diff -p -2 -r1.76 avr.h
*** config/avr/avr.h	19 Feb 2003 18:03:09 -0000	1.76
--- config/avr/avr.h	17 Apr 2003 20:08:59 -0000
*************** extern int avr_asm_only_p;
*** 106,111 ****
  
  #define TARGET_OPTIONS {						      \
!  { "init-stack=", &avr_init_stack, N_("Specify the initial stack address") }, \
!  { "mcu=", &avr_mcu_name, N_("Specify the MCU name") } }
  
  #define TARGET_VERSION fprintf (stderr, " (GNU assembler syntax)");
--- 106,111 ----
  
  #define TARGET_OPTIONS {						      \
!  { "init-stack=", &avr_init_stack, N_("Specify the initial stack address"), 0}, \
!  { "mcu=", &avr_mcu_name, N_("Specify the MCU name"), 0} }
  
  #define TARGET_VERSION fprintf (stderr, " (GNU assembler syntax)");
Index: config/c4x/c4x.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/c4x/c4x.h,v
retrieving revision 1.125
diff -p -2 -r1.125 c4x.h
*** config/c4x/c4x.h	17 Apr 2003 05:07:35 -0000	1.125
--- config/c4x/c4x.h	17 Apr 2003 20:08:59 -0000
*************** extern const char *c4x_rpts_cycles_strin
*** 329,335 ****
  #define TARGET_OPTIONS						\
  { {"rpts=", &c4x_rpts_cycles_string,				\
!    N_("Specify maximum number of iterations for RPTS") },	\
    {"cpu=", &c4x_cpu_version_string,				\
!    N_("Select CPU to generate code for") } }
  
  /* Sometimes certain combinations of command options do not make sense
--- 329,335 ----
  #define TARGET_OPTIONS						\
  { {"rpts=", &c4x_rpts_cycles_string,				\
!    N_("Specify maximum number of iterations for RPTS"), 0},	\
    {"cpu=", &c4x_cpu_version_string,				\
!    N_("Select CPU to generate code for"), 0} }
  
  /* Sometimes certain combinations of command options do not make sense
Index: config/cris/aout.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/cris/aout.h,v
retrieving revision 1.10
diff -p -2 -r1.10 aout.h
*** config/cris/aout.h	9 Mar 2003 01:46:26 -0000	1.10
--- config/cris/aout.h	17 Apr 2003 20:08:59 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 113,117 ****
  #define CRIS_SUBTARGET_LONG_OPTIONS \
    {"elinux-stacksize=", &cris_elinux_stacksize_str,			\
!    N_("For elinux, request a specified stack-size for this program")},	\
  
  #undef CRIS_SUBTARGET_VERSION
--- 113,117 ----
  #define CRIS_SUBTARGET_LONG_OPTIONS \
    {"elinux-stacksize=", &cris_elinux_stacksize_str,			\
!    N_("For elinux, request a specified stack-size for this program"), 0},	\
  
  #undef CRIS_SUBTARGET_VERSION
Index: config/cris/cris.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/cris/cris.h,v
retrieving revision 1.49
diff -p -2 -r1.49 cris.h
*** config/cris/cris.h	11 Mar 2003 15:43:25 -0000	1.49
--- config/cris/cris.h	17 Apr 2003 20:09:00 -0000
*************** extern int target_flags;
*** 428,440 ****
  
  #define TARGET_OPTIONS							\
!  {{"cpu=", &cris_cpu_str, ""},						\
    {"arch=", &cris_cpu_str,						\
!    N_("Generate code for the specified chip or CPU version")},		\
    {"tune=", &cris_tune_str,						\
!    N_("Tune alignment for the specified chip or CPU version")},		\
    {"max-stackframe=", &cris_max_stackframe_str,				\
!    N_("Warn when a stackframe is larger than the specified size")},	\
    CRIS_SUBTARGET_LONG_OPTIONS						\
!   {"ax-stackframe=", &cris_max_stackframe_str, ""}}
  
  #define CRIS_SUBTARGET_LONG_OPTIONS
--- 428,440 ----
  
  #define TARGET_OPTIONS							\
!  {{"cpu=", &cris_cpu_str, "", 0},					\
    {"arch=", &cris_cpu_str,						\
!    N_("Generate code for the specified chip or CPU version"), 0},	\
    {"tune=", &cris_tune_str,						\
!    N_("Tune alignment for the specified chip or CPU version"), 0},	\
    {"max-stackframe=", &cris_max_stackframe_str,				\
!    N_("Warn when a stackframe is larger than the specified size"), 0},	\
    CRIS_SUBTARGET_LONG_OPTIONS						\
!   {"ax-stackframe=", &cris_max_stackframe_str, "", 0} }
  
  #define CRIS_SUBTARGET_LONG_OPTIONS
Index: config/d30v/d30v.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/d30v/d30v.h,v
retrieving revision 1.79
diff -p -2 -r1.79 d30v.h
*** config/d30v/d30v.h	15 Apr 2003 20:57:08 -0000	1.79
--- config/d30v/d30v.h	17 Apr 2003 20:09:00 -0000
*************** extern int target_flags;
*** 147,154 ****
  {									\
    {"branch-cost=",  &d30v_branch_cost_string,				\
!      N_("Change the branch costs within the compiler") },		\
  									\
    {"cond-exec=",    &d30v_cond_exec_string,				\
!      N_("Change the threshold for conversion to conditional execution") }, \
  }
  
--- 147,154 ----
  {									\
    {"branch-cost=",  &d30v_branch_cost_string,				\
!      N_("Change the branch costs within the compiler"), 0},		\
  									\
    {"cond-exec=",    &d30v_cond_exec_string,				\
!      N_("Change the threshold for conversion to conditional execution"), 0}, \
  }
  
Index: config/dsp16xx/dsp16xx.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/dsp16xx/dsp16xx.h,v
retrieving revision 1.56
diff -p -2 -r1.56 dsp16xx.h
*** config/dsp16xx/dsp16xx.h	13 Mar 2003 04:13:13 -0000	1.56
--- config/dsp16xx/dsp16xx.h	17 Apr 2003 20:09:00 -0000
*************** extern int target_flags;
*** 270,282 ****
  {								\
    { "text=",	&text_seg_name,				        \
!     N_("Specify alternate name for text section") },            \
    { "data=",	&data_seg_name,				        \
!     N_("Specify alternate name for data section") },            \
    { "bss=",	&bss_seg_name,				        \
!     N_("Specify alternate name for bss section") },             \
    { "const=",   &const_seg_name,                                \
!     N_("Specify alternate name for constant section") },        \
    { "chip=",    &chip_name,                                     \
!     N_("Specify alternate name for dsp16xx chip") },            \
  }
  
--- 270,282 ----
  {								\
    { "text=",	&text_seg_name,				        \
!     N_("Specify alternate name for text section"), 0},          \
    { "data=",	&data_seg_name,				        \
!     N_("Specify alternate name for data section"), 0},          \
    { "bss=",	&bss_seg_name,				        \
!     N_("Specify alternate name for bss section"), 0},           \
    { "const=",   &const_seg_name,                                \
!     N_("Specify alternate name for constant section"), 0},      \
    { "chip=",    &chip_name,                                     \
!     N_("Specify alternate name for dsp16xx chip"), 0},          \
  }
  
Index: config/frv/frv.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/frv/frv.h,v
retrieving revision 1.20
diff -p -2 -r1.20 frv.h
*** config/frv/frv.h	17 Apr 2003 06:50:02 -0000	1.20
--- config/frv/frv.h	17 Apr 2003 20:09:01 -0000
*************** extern int target_flags;
*** 487,497 ****
  
     This declaration is optional.  */
! #define TARGET_OPTIONS							    \
! {									    \
!   { "cpu=",		&frv_cpu_string,	 "Set cpu type" },	    \
!   { "branch-cost=",	&frv_branch_cost_string, "Internal debug switch" }, \
!   { "cond-exec-insns=", &frv_condexec_insns_str, "Internal debug switch" }, \
!   { "cond-exec-temps=", &frv_condexec_temps_str, "Internal debug switch" }, \
!   { "sched-lookahead=", &frv_sched_lookahead_str,"Internal debug switch" }, \
  }
  
--- 487,497 ----
  
     This declaration is optional.  */
! #define TARGET_OPTIONS							      \
! {									      \
!   { "cpu=",		&frv_cpu_string,	 "Set cpu type", 0},	      \
!   { "branch-cost=",	&frv_branch_cost_string, "Internal debug switch", 0}, \
!   { "cond-exec-insns=", &frv_condexec_insns_str, "Internal debug switch", 0}, \
!   { "cond-exec-temps=", &frv_condexec_temps_str, "Internal debug switch", 0}, \
!   { "sched-lookahead=", &frv_sched_lookahead_str,"Internal debug switch", 0}, \
  }
  
Index: config/i386/i386.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,v
retrieving revision 1.332
diff -p -2 -r1.332 i386.h
*** config/i386/i386.h	11 Apr 2003 21:27:14 -0000	1.332
--- config/i386/i386.h	17 Apr 2003 20:09:01 -0000
*************** extern int x86_prefetch_sse;
*** 434,465 ****
  #define TARGET_OPTIONS						\
  { { "tune=",		&ix86_tune_string,			\
!     N_("Schedule code for given CPU")},				\
    { "fpmath=",		&ix86_fpmath_string,			\
!     N_("Generate floating point mathematics using given instruction set")},\
    { "arch=",		&ix86_arch_string,			\
!     N_("Generate code for given CPU")},				\
    { "regparm=",		&ix86_regparm_string,			\
!     N_("Number of registers used to pass integer arguments") },	\
    { "align-loops=",	&ix86_align_loops_string,		\
!     N_("Loop code aligned to this power of 2") },		\
    { "align-jumps=",	&ix86_align_jumps_string,		\
!     N_("Jump targets are aligned to this power of 2") },	\
    { "align-functions=",	&ix86_align_funcs_string,		\
!     N_("Function starts are aligned to this power of 2") },	\
    { "preferred-stack-boundary=",				\
      &ix86_preferred_stack_boundary_string,			\
!     N_("Attempt to keep stack aligned to this power of 2") },	\
    { "branch-cost=",	&ix86_branch_cost_string,		\
!     N_("Branches are this expensive (1-5, arbitrary units)") },	\
    { "cmodel=", &ix86_cmodel_string,				\
!     N_("Use given x86-64 code model") },			\
    { "debug-arg", &ix86_debug_arg_string,			\
!     "" /* Undocumented. */ },					\
    { "debug-addr", &ix86_debug_addr_string,			\
!     "" /* Undocumented. */ },					\
    { "asm=", &ix86_asm_string,					\
!     N_("Use given assembler dialect") },			\
    { "tls-dialect=", &ix86_tls_dialect_string,			\
!     N_("Use given thread-local storage dialect") },		\
    SUBTARGET_OPTIONS						\
  }
--- 434,465 ----
  #define TARGET_OPTIONS						\
  { { "tune=",		&ix86_tune_string,			\
!     N_("Schedule code for given CPU"), 0},			\
    { "fpmath=",		&ix86_fpmath_string,			\
!     N_("Generate floating point mathematics using given instruction set"), 0},\
    { "arch=",		&ix86_arch_string,			\
!     N_("Generate code for given CPU"), 0},			\
    { "regparm=",		&ix86_regparm_string,			\
!     N_("Number of registers used to pass integer arguments"), 0},\
    { "align-loops=",	&ix86_align_loops_string,		\
!     N_("Loop code aligned to this power of 2"), 0},		\
    { "align-jumps=",	&ix86_align_jumps_string,		\
!     N_("Jump targets are aligned to this power of 2"), 0},	\
    { "align-functions=",	&ix86_align_funcs_string,		\
!     N_("Function starts are aligned to this power of 2"), 0},	\
    { "preferred-stack-boundary=",				\
      &ix86_preferred_stack_boundary_string,			\
!     N_("Attempt to keep stack aligned to this power of 2"), 0},	\
    { "branch-cost=",	&ix86_branch_cost_string,		\
!     N_("Branches are this expensive (1-5, arbitrary units)"), 0},\
    { "cmodel=", &ix86_cmodel_string,				\
!     N_("Use given x86-64 code model"), 0},			\
    { "debug-arg", &ix86_debug_arg_string,			\
!     "" /* Undocumented. */, 0},					\
    { "debug-addr", &ix86_debug_addr_string,			\
!     "" /* Undocumented. */, 0},					\
    { "asm=", &ix86_asm_string,					\
!     N_("Use given assembler dialect"), 0},			\
    { "tls-dialect=", &ix86_tls_dialect_string,			\
!     N_("Use given thread-local storage dialect"), 0},		\
    SUBTARGET_OPTIONS						\
  }
Index: config/ia64/ia64.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.h,v
retrieving revision 1.148
diff -p -2 -r1.148 ia64.h
*** config/ia64/ia64.h	16 Apr 2003 19:53:13 -0000	1.148
--- config/ia64/ia64.h	17 Apr 2003 20:09:01 -0000
*************** extern const char *ia64_tune_string;
*** 239,247 ****
  {									\
    { "fixed-range=", 	&ia64_fixed_range_string,			\
!       N_("Specify range of registers to make fixed")},			\
    { "tls-size=",	&ia64_tls_size_string,				\
!       N_("Specify bit size of immediate TLS offsets")},			\
    { "tune=",		&ia64_tune_string,				\
!       N_("Schedule code for given CPU")},				\
  }
  
--- 239,247 ----
  {									\
    { "fixed-range=", 	&ia64_fixed_range_string,			\
!       N_("Specify range of registers to make fixed"), 0},		\
    { "tls-size=",	&ia64_tls_size_string,				\
!       N_("Specify bit size of immediate TLS offsets"), 0},		\
    { "tune=",		&ia64_tune_string,				\
!       N_("Schedule code for given CPU"), 0},				\
  }
  
Index: config/m32r/m32r.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/m32r/m32r.h,v
retrieving revision 1.80
diff -p -2 -r1.80 m32r.h
*** config/m32r/m32r.h	17 Apr 2003 08:49:53 -0000	1.80
--- config/m32r/m32r.h	17 Apr 2003 20:09:02 -0000
*************** extern const char * m32r_sdata_string;
*** 270,276 ****
  {									\
    { "model=", & m32r_model_string,					\
!     N_("Code size: small, medium or large") },				\
    { "sdata=", & m32r_sdata_string,					\
!     N_("Small data area: none, sdata, use") }				\
    SUBTARGET_OPTIONS							\
  }
--- 270,276 ----
  {									\
    { "model=", & m32r_model_string,					\
!     N_("Code size: small, medium or large"), 0},			\
    { "sdata=", & m32r_sdata_string,					\
!     N_("Small data area: none, sdata, use"), 0}				\
    SUBTARGET_OPTIONS							\
  }
Index: config/m68hc11/m68hc11.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/m68hc11/m68hc11.h,v
retrieving revision 1.71
diff -p -2 -r1.71 m68hc11.h
*** config/m68hc11/m68hc11.h	12 Apr 2003 21:52:33 -0000	1.71
--- config/m68hc11/m68hc11.h	17 Apr 2003 20:09:02 -0000
*************** extern short *reg_renumber;	/* def in lo
*** 219,225 ****
  #define TARGET_OPTIONS							\
  { { "reg-alloc=",	&m68hc11_reg_alloc_order,                       \
!     N_("Specify the register allocation order")},			\
    { "soft-reg-count=",	&m68hc11_soft_reg_count,                        \
!     N_("Indicate the number of soft registers available") },		\
    SUBTARGET_OPTIONS							\
  }
--- 219,225 ----
  #define TARGET_OPTIONS							\
  { { "reg-alloc=",	&m68hc11_reg_alloc_order,                       \
!     N_("Specify the register allocation order"), 0},			\
    { "soft-reg-count=",	&m68hc11_soft_reg_count,                        \
!     N_("Indicate the number of soft registers available"), 0},		\
    SUBTARGET_OPTIONS							\
  }
Index: config/m68k/m68k.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/m68k/m68k.h,v
retrieving revision 1.83
diff -p -2 -r1.83 m68k.h
*** config/m68k/m68k.h	28 Jan 2003 04:46:29 -0000	1.83
--- config/m68k/m68k.h	17 Apr 2003 20:09:02 -0000
*************** extern int target_flags;
*** 261,269 ****
  #define TARGET_OPTIONS							\
  { { "align-loops=",	&m68k_align_loops_string,			\
!     N_("Loop code aligned to this power of 2") },			\
    { "align-jumps=",	&m68k_align_jumps_string,			\
!     N_("Jump targets are aligned to this power of 2") },		\
    { "align-functions=",	&m68k_align_funcs_string,			\
!     N_("Function starts are aligned to this power of 2") },		\
    SUBTARGET_OPTIONS							\
  }
--- 261,269 ----
  #define TARGET_OPTIONS							\
  { { "align-loops=",	&m68k_align_loops_string,			\
!     N_("Loop code aligned to this power of 2"), 0},			\
    { "align-jumps=",	&m68k_align_jumps_string,			\
!     N_("Jump targets are aligned to this power of 2"), 0},		\
    { "align-functions=",	&m68k_align_funcs_string,			\
!     N_("Function starts are aligned to this power of 2"), 0},		\
    SUBTARGET_OPTIONS							\
  }
Index: config/m88k/m88k.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/m88k/m88k.h,v
retrieving revision 1.76
diff -p -2 -r1.76 m88k.h
*** config/m88k/m88k.h	28 Jan 2003 18:08:51 -0000	1.76
--- config/m88k/m88k.h	17 Apr 2003 20:09:03 -0000
*************** extern int flag_pic;				/* -fpic */
*** 250,255 ****
  /* Macro to define table for command options with values.  */
  
! #define TARGET_OPTIONS { { "short-data-", &m88k_short_data }, \
! 			 { "version-", &m88k_version } }
  
  /* Do any checking or such that is needed after processing the -m switches.  */
--- 250,255 ----
  /* Macro to define table for command options with values.  */
  
! #define TARGET_OPTIONS { { "short-data-", &m88k_short_data, 0}, \
! 			 { "version-", &m88k_version, 0} }
  
  /* Do any checking or such that is needed after processing the -m switches.  */
Index: config/mcore/mcore.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/mcore/mcore.h,v
retrieving revision 1.46
diff -p -2 -r1.46 mcore.h
*** config/mcore/mcore.h	19 Mar 2003 10:32:46 -0000	1.46
--- config/mcore/mcore.h	17 Apr 2003 20:09:03 -0000
*************** extern const char * mcore_stack_incremen
*** 177,181 ****
  {									\
    {"stack-increment=", & mcore_stack_increment_string,			\
!      N_("Maximum amount for a single stack increment operation")}	\
  }
  
--- 177,181 ----
  {									\
    {"stack-increment=", & mcore_stack_increment_string,			\
!      N_("Maximum amount for a single stack increment operation"), 0}	\
  }
  
Index: config/mips/mips.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.h,v
retrieving revision 1.243
diff -p -2 -r1.243 mips.h
*** config/mips/mips.h	15 Apr 2003 20:57:11 -0000	1.243
--- config/mips/mips.h	17 Apr 2003 20:09:03 -0000
*************** extern void		sbss_section PARAMS ((void)
*** 757,775 ****
    SUBTARGET_TARGET_OPTIONS						\
    { "tune=",    &mips_tune_string,			                \
!       N_("Specify CPU for scheduling purposes")},                       \
    { "arch=",    &mips_arch_string,                                      \
!       N_("Specify CPU for code generation purposes")},                  \
    { "abi=", &mips_abi_string,						\
!       N_("Specify an ABI")},						\
    { "ips",	&mips_isa_string,					\
!       N_("Specify a Standard MIPS ISA")},				\
    { "entry",	&mips_entry_string,					\
!       N_("Use mips16 entry/exit psuedo ops")},				\
    { "no-mips16", &mips_no_mips16_string,				\
!       N_("Don't use MIPS16 instructions")},				\
    { "no-flush-func", &mips_cache_flush_func,				\
!       N_("Don't call any cache flush functions")},			\
    { "flush-func=", &mips_cache_flush_func,				\
!       N_("Specify cache flush function")},				\
  }
  
--- 757,775 ----
    SUBTARGET_TARGET_OPTIONS						\
    { "tune=",    &mips_tune_string,			                \
!       N_("Specify CPU for scheduling purposes"), 0},                    \
    { "arch=",    &mips_arch_string,                                      \
!       N_("Specify CPU for code generation purposes"), 0},               \
    { "abi=", &mips_abi_string,						\
!       N_("Specify an ABI"), 0},						\
    { "ips",	&mips_isa_string,					\
!       N_("Specify a Standard MIPS ISA"), 0},				\
    { "entry",	&mips_entry_string,					\
!       N_("Use mips16 entry/exit psuedo ops"), 0},			\
    { "no-mips16", &mips_no_mips16_string,				\
!       N_("Don't use MIPS16 instructions"), 0},				\
    { "no-flush-func", &mips_cache_flush_func,				\
!       N_("Don't call any cache flush functions"), 0},			\
    { "flush-func=", &mips_cache_flush_func,				\
!       N_("Specify cache flush function"), 0},				\
  }
  
Index: config/mmix/mmix.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/mmix/mmix.h,v
retrieving revision 1.50
diff -p -2 -r1.50 mmix.h
*** config/mmix/mmix.h	28 Jan 2003 18:08:53 -0000	1.50
--- config/mmix/mmix.h	17 Apr 2003 20:09:03 -0000
*************** extern const char *mmix_cc1_ignored_opti
*** 130,136 ****
  #define TARGET_OPTIONS					\
     {{"set-program-start=", &mmix_cc1_ignored_option,	\
!   N_("Set start-address of the program") },		\
      {"set-data-start=", &mmix_cc1_ignored_option,	\
!   N_("Set start-address of data")}}
  
  /* FIXME: There's no provision for profiling here.  */
--- 130,136 ----
  #define TARGET_OPTIONS					\
     {{"set-program-start=", &mmix_cc1_ignored_option,	\
!   N_("Set start-address of the program"), 0},		\
      {"set-data-start=", &mmix_cc1_ignored_option,	\
!   N_("Set start-address of data"), 0} }
  
  /* FIXME: There's no provision for profiling here.  */
Index: config/pa/pa.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/pa/pa.h,v
retrieving revision 1.188
diff -p -2 -r1.188 pa.h
*** config/pa/pa.h	16 Apr 2003 17:06:50 -0000	1.188
--- config/pa/pa.h	17 Apr 2003 20:09:03 -0000
*************** extern int target_flags;
*** 308,314 ****
  {									\
    { "schedule=",		&pa_cpu_string,				\
!     N_("Specify CPU for scheduling purposes") },			\
    { "arch=",			&pa_arch_string,			\
!     N_("Specify architecture for code generation.  Values are 1.0, 1.1, and 2.0.  2.0 requires gas snapshot 19990413 or later.") }\
  }
  
--- 308,314 ----
  {									\
    { "schedule=",		&pa_cpu_string,				\
!     N_("Specify CPU for scheduling purposes"), 0},			\
    { "arch=",			&pa_arch_string,			\
!     N_("Specify architecture for code generation.  Values are 1.0, 1.1, and 2.0.  2.0 requires gas snapshot 19990413 or later."), 0}\
  }
  
Index: config/rs6000/rs6000.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.h,v
retrieving revision 1.266
diff -p -2 -r1.266 rs6000.h
*** config/rs6000/rs6000.h	15 Apr 2003 09:56:52 -0000	1.266
--- config/rs6000/rs6000.h	17 Apr 2003 20:09:04 -0000
*************** extern enum processor_type rs6000_cpu;
*** 377,400 ****
  {									\
     {"cpu=",  &rs6000_select[1].string,					\
!     N_("Use features of and schedule code for given CPU") },		\
     {"tune=", &rs6000_select[2].string,					\
!     N_("Schedule code for given CPU") },				\
!    {"debug=", &rs6000_debug_name, N_("Enable debug output") },		\
     {"traceback=", &rs6000_traceback_name,				\
!     N_("Select full, part, or no traceback table") },			\
!    {"abi=", &rs6000_abi_string, N_("Specify ABI to use") },		\
     {"long-double-", &rs6000_long_double_size_string,			\
!     N_("Specify size of long double (64 or 128 bits)") },		\
     {"isel=", &rs6000_isel_string,                                       \
!     N_("Specify yes/no if isel instructions should be generated") },    \
     {"spe=", &rs6000_spe_string,                                         \
!     N_("Specify yes/no if SPE SIMD instructions should be generated") },\
     {"float-gprs=", &rs6000_float_gprs_string,                           \
!     N_("Specify yes/no if using floating point in the GPRs") },         \
!    {"vrsave=", &rs6000_altivec_vrsave_string,                         \
!     N_("Specify yes/no if VRSAVE instructions should be generated for AltiVec") }, \
     {"longcall", &rs6000_longcall_switch,				\
!     N_("Avoid all range limits on call instructions") },		\
!    {"no-longcall", &rs6000_longcall_switch, "" },			\
     SUBTARGET_OPTIONS							\
  }
--- 377,400 ----
  {									\
     {"cpu=",  &rs6000_select[1].string,					\
!     N_("Use features of and schedule code for given CPU"), 0},		\
     {"tune=", &rs6000_select[2].string,					\
!     N_("Schedule code for given CPU"), 0},				\
!    {"debug=", &rs6000_debug_name, N_("Enable debug output"), 0},	\
     {"traceback=", &rs6000_traceback_name,				\
!     N_("Select full, part, or no traceback table"), 0},			\
!    {"abi=", &rs6000_abi_string, N_("Specify ABI to use"), 0},		\
     {"long-double-", &rs6000_long_double_size_string,			\
!     N_("Specify size of long double (64 or 128 bits)"), 0},		\
     {"isel=", &rs6000_isel_string,                                       \
!     N_("Specify yes/no if isel instructions should be generated"), 0},  \
     {"spe=", &rs6000_spe_string,                                         \
!     N_("Specify yes/no if SPE SIMD instructions should be generated"), 0},\
     {"float-gprs=", &rs6000_float_gprs_string,                           \
!     N_("Specify yes/no if using floating point in the GPRs"), 0},       \
!    {"vrsave=", &rs6000_altivec_vrsave_string,                           \
!     N_("Specify yes/no if VRSAVE instructions should be generated for AltiVec"), 0}, \
     {"longcall", &rs6000_longcall_switch,				\
!     N_("Avoid all range limits on call instructions"), 0},		\
!    {"no-longcall", &rs6000_longcall_switch, "", 0},			\
     SUBTARGET_OPTIONS							\
  }
Index: config/rs6000/sysv4.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/sysv4.h,v
retrieving revision 1.120
diff -p -2 -r1.120 sysv4.h
*** config/rs6000/sysv4.h	13 Apr 2003 17:51:08 -0000	1.120
--- config/rs6000/sysv4.h	17 Apr 2003 20:09:04 -0000
*************** extern const char *rs6000_sdata_name;
*** 83,89 ****
  /* Override rs6000.h definition.  */
  #undef	SUBTARGET_OPTIONS
! #define	SUBTARGET_OPTIONS						\
!   { "call-",  &rs6000_abi_name, N_("Select ABI calling convention") },	\
!   { "sdata=", &rs6000_sdata_name, N_("Select method for sdata handling") }
  
  /* Max # of bytes for variables to automatically be put into the .sdata
--- 83,89 ----
  /* Override rs6000.h definition.  */
  #undef	SUBTARGET_OPTIONS
! #define	SUBTARGET_OPTIONS							\
!   { "call-",  &rs6000_abi_name, N_("Select ABI calling convention"), 0},	\
!   { "sdata=", &rs6000_sdata_name, N_("Select method for sdata handling"), 0}
  
  /* Max # of bytes for variables to automatically be put into the .sdata
Index: config/s390/s390.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/s390/s390.h,v
retrieving revision 1.68
diff -p -2 -r1.68 s390.h
*** config/s390/s390.h	17 Apr 2003 09:59:31 -0000	1.68
--- config/s390/s390.h	17 Apr 2003 20:09:04 -0000
*************** extern int target_flags;
*** 115,121 ****
  #define TARGET_OPTIONS                                          \
  { { "tune=",            &s390_tune_string,                      \
!     N_("Schedule code for given CPU")},                         \
    { "arch=",            &s390_arch_string,                      \
!     N_("Generate code for given CPU")},                         \
  }
  
--- 115,121 ----
  #define TARGET_OPTIONS                                          \
  { { "tune=",            &s390_tune_string,                      \
!     N_("Schedule code for given CPU"), 0},                      \
    { "arch=",            &s390_arch_string,                      \
!     N_("Generate code for given CPU"), 0},                      \
  }
  
Index: config/sparc/sparc.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.h,v
retrieving revision 1.221
diff -p -2 -r1.221 sparc.h
*** config/sparc/sparc.h	28 Mar 2003 08:07:03 -0000	1.221
--- config/sparc/sparc.h	17 Apr 2003 20:09:04 -0000
*************** extern enum processor_type sparc_cpu;
*** 633,641 ****
  {								\
    { "cpu=",  &sparc_select[1].string,				\
!     N_("Use features of and schedule code for given CPU") },	\
    { "tune=", &sparc_select[2].string,				\
!     N_("Schedule code for given CPU") },			\
    { "cmodel=", &sparc_cmodel_string,				\
!     N_("Use given SPARC code model") },				\
    SUBTARGET_OPTIONS 						\
  }
--- 633,641 ----
  {								\
    { "cpu=",  &sparc_select[1].string,				\
!     N_("Use features of and schedule code for given CPU"), 0},	\
    { "tune=", &sparc_select[2].string,				\
!     N_("Schedule code for given CPU"), 0},			\
    { "cmodel=", &sparc_cmodel_string,				\
!     N_("Use given SPARC code model"), 0},			\
    SUBTARGET_OPTIONS 						\
  }
Index: config/v850/v850.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/v850/v850.h,v
retrieving revision 1.82
diff -p -2 -r1.82 v850.h
*** config/v850/v850.h	17 Apr 2003 11:16:30 -0000	1.82
--- config/v850/v850.h	17 Apr 2003 20:09:04 -0000
*************** extern struct small_memory_info small_me
*** 221,232 ****
  {									\
    { "tda=",	&small_memory[ (int)SMALL_MEMORY_TDA ].value,		\
!       N_("Set the max size of data eligible for the TDA area")  },	\
!   { "tda-",	&small_memory[ (int)SMALL_MEMORY_TDA ].value, "" },	\
    { "sda=",	&small_memory[ (int)SMALL_MEMORY_SDA ].value, 		\
!       N_("Set the max size of data eligible for the SDA area")  },	\
!   { "sda-",	&small_memory[ (int)SMALL_MEMORY_SDA ].value, "" },	\
    { "zda=",	&small_memory[ (int)SMALL_MEMORY_ZDA ].value, 		\
!       N_("Set the max size of data eligible for the ZDA area")  },	\
!   { "zda-",	&small_memory[ (int)SMALL_MEMORY_ZDA ].value, "" },	\
  }
  
--- 221,232 ----
  {									\
    { "tda=",	&small_memory[ (int)SMALL_MEMORY_TDA ].value,		\
!       N_("Set the max size of data eligible for the TDA area"), 0},	\
!   { "tda-",	&small_memory[ (int)SMALL_MEMORY_TDA ].value, "", 0},	\
    { "sda=",	&small_memory[ (int)SMALL_MEMORY_SDA ].value, 		\
!       N_("Set the max size of data eligible for the SDA area"), 0},	\
!   { "sda-",	&small_memory[ (int)SMALL_MEMORY_SDA ].value, "", 0},	\
    { "zda=",	&small_memory[ (int)SMALL_MEMORY_ZDA ].value, 		\
!       N_("Set the max size of data eligible for the ZDA area"), 0},	\
!   { "zda-",	&small_memory[ (int)SMALL_MEMORY_ZDA ].value, "", 0},	\
  }
  
Index: doc/tm.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/tm.texi,v
retrieving revision 1.212
diff -p -2 -r1.212 tm.texi
*** doc/tm.texi	15 Apr 2003 20:57:12 -0000	1.212
--- doc/tm.texi	17 Apr 2003 20:09:05 -0000
*************** subgrouping for each command option.
*** 763,776 ****
  
  Each subgrouping contains a string constant, that defines the fixed part
! of the option name, the address of a variable, and a description string.
! Non-empty description strings should be marked with @code{N_(@dots{})} for
! @command{xgettext}.  Please do not mark empty strings because the empty
! string is reserved by GNU gettext. @code{gettext("")} returns the header entry
! of the message catalog with meta information, not the empty string.
! 
! The variable, type @code{char *}, is set to the variable part of the
! given option if the fixed part matches.  The actual option name is made
! by appending @samp{-m} to the specified name.  Again, each option should
! also be documented in @file{invoke.texi}.
  
  Here is an example which defines @option{-mshort-data-@var{number}}.  If the
--- 763,782 ----
  
  Each subgrouping contains a string constant, that defines the fixed part
! of the option name, the address of a variable, a description string, and
! a default value.  Non-empty description strings should be marked with
! @code{N_(@dots{})} for @command{xgettext}.  Please do not mark empty
! strings because the empty string is reserved by GNU
! gettext. @code{gettext("")} returns the header entry of the message
! catalog with meta information, not the empty string.
! 
! If the default value is @code{NULL}, then the variable, type @code{char
! *}, is set to the variable part of the given option if the fixed part
! matches.  The actual option name is made by appending @samp{-m} to the
! specified name.  Again, each option should also be documented in
! @file{invoke.texi}.
! 
! If the default value is non-@code{NULL}, then the variable is instead
! set to the default value part of the given option if the entire option
! matches.
  
  Here is an example which defines @option{-mshort-data-@var{number}}.  If the
*************** extern char *m88k_short_data;
*** 782,786 ****
  #define TARGET_OPTIONS \
   @{ @{ "short-data-", &m88k_short_data, \
!      N_("Specify the size of the short data section") @} @}
  @end smallexample
  
--- 788,823 ----
  #define TARGET_OPTIONS \
   @{ @{ "short-data-", &m88k_short_data, \
!      N_("Specify the size of the short data section"), 0 @} @}
! @end smallexample
! 
! Here is an variant of the above that allows you to also specify just
! @option{-mshort-data} where a default of @code{64} is used.
! 
! @smallexample
! extern char *m88k_short_data;
! #define TARGET_OPTIONS \
!  @{ @{ "short-data-", &m88k_short_data, \
!      N_("Specify the size of the short data section"), 0 @} \
!     @{ "short-data", &m88k_short_data, "", "64" @},
!     @}
! @end smallexample
! 
! Here is an example which defines @option{-mno-alu}, @option{-malu1}, and
! @option{-malu2} as a three-state switch, along with suitable macros for
! checking the state of the option (documentation is elided for brevity).
! 
! @smallexample
! [chip.c]
! char *chip_alu = ""; /* Specify default here.  */
! 
! [chip.h]
! extern char *chip_alu;
! #define TARGET_OPTIONS \
!   @{ @{ "no-alu", &chip_alu, "", "" @}, \
!      @{ "alu1", &chip_alu, "", "1" @}, \
!      @{ "alu2", &chip_alu, "", "2" @}, @}
! #define TARGET_ALU (chip_alu[0] != '\0')
! #define TARGET_ALU1 (chip_alu[0] == '1')
! #define TARGET_ALU2 (chip_alu[0] == '2')
  @end smallexample
  

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 20:46     ` target_flags DJ Delorie
@ 2003-04-17 21:44       ` Zack Weinberg
  2003-04-17 21:57         ` target_flags DJ Delorie
  0 siblings, 1 reply; 17+ messages in thread
From: Zack Weinberg @ 2003-04-17 21:44 UTC (permalink / raw)
  To: DJ Delorie; +Cc: mrs, gcc

DJ Delorie <dj@redhat.com> writes:

>> DJ Delorie <dj@redhat.com> writes:
>> >> Ok, so I am working on a port (rs6000) that is out of target_flags by 
>> >> about 4 flags (in my tree).  :-(  What do I do now?
>> >
>> > I proposed a solution a year ago:
>> >
>> > http://gcc.gnu.org/ml/gcc-patches/2002-03/msg00833.html
>> 
>> That looks like, at least, a way forward.  I am willing to approve a
>> complete version of that patch, if Mike agrees it solves his problem.
>
> Here is a complete and current version of that patch.  Bootstraped on
> Linux.

My only concern is, I think calling the value field a "default value"
is confusing; it doesn't really act as a _default_, options with
non-NULL value field are fixed strings.  Or else I'm confused, in
which case something needs clarifying.

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 21:44       ` target_flags Zack Weinberg
@ 2003-04-17 21:57         ` DJ Delorie
  2003-04-17 22:07           ` target_flags Zack Weinberg
  0 siblings, 1 reply; 17+ messages in thread
From: DJ Delorie @ 2003-04-17 21:57 UTC (permalink / raw)
  To: zack; +Cc: mrs, gcc


> My only concern is, I think calling the value field a "default value"
> is confusing; it doesn't really act as a _default_, options with
> non-NULL value field are fixed strings.  Or else I'm confused, in
> which case something needs clarifying.

Did you read the first new example?  That demonstrates why I called it
a default - you can use the longer version to specify a value for the
option, or the shorter one to use the value given in the table.  If
you only look at it in the context of *one* option, it can be
confusing.

But I'm open to suggestions.  I don't care what it's called as long as
the functionality is there.

! Here is an variant of the above that allows you to also specify just
! @option{-mshort-data} where a default of @code{64} is used.
! 
! @smallexample
! extern char *m88k_short_data;
! #define TARGET_OPTIONS \
!  @{ @{ "short-data-", &m88k_short_data, \
!      N_("Specify the size of the short data section"), 0 @} \
!     @{ "short-data", &m88k_short_data, "", "64" @},
!     @}
! @end smallexample

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 21:57         ` target_flags DJ Delorie
@ 2003-04-17 22:07           ` Zack Weinberg
  2003-04-17 22:32             ` target_flags DJ Delorie
  0 siblings, 1 reply; 17+ messages in thread
From: Zack Weinberg @ 2003-04-17 22:07 UTC (permalink / raw)
  To: DJ Delorie; +Cc: mrs, gcc

DJ Delorie <dj@redhat.com> writes:

>> My only concern is, I think calling the value field a "default value"
>> is confusing; it doesn't really act as a _default_, options with
>> non-NULL value field are fixed strings.  Or else I'm confused, in
>> which case something needs clarifying.
>
> Did you read the first new example?  That demonstrates why I called it
> a default - you can use the longer version to specify a value for the
> option, or the shorter one to use the value given in the table.  If
> you only look at it in the context of *one* option, it can be
> confusing.
>
> But I'm open to suggestions.  I don't care what it's called as long as
> the functionality is there.

I read the examples - that was the only way I was sure I understood
what the intended semantics were.

Could you please just say explicitly in the documentation that the reason
it's called a default value is because you can do something like this
with two entries in the table?  And then go ahead and check it in.

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 22:07           ` target_flags Zack Weinberg
@ 2003-04-17 22:32             ` DJ Delorie
  2003-04-17 22:41               ` target_flags Zack Weinberg
  0 siblings, 1 reply; 17+ messages in thread
From: DJ Delorie @ 2003-04-17 22:32 UTC (permalink / raw)
  To: zack; +Cc: mrs, gcc


> Could you please just say explicitly in the documentation that the
> reason it's called a default value is because you can do something
> like this with two entries in the table?  And then go ahead and
> check it in.

I think it would be better to explain more clearly how it works,
then note that it can be used as a default value.  How about this?


Each subgrouping contains a string constant, that defines the option
name, the address of a variable, a description string, and a value.
Non-empty description strings should be marked with @code{N_(@dots{})}
for @command{xgettext}.  Please do not mark empty strings because the
empty string is reserved by GNU gettext. @code{gettext("")} returns the
header entry of the message catalog with meta information, not the empty
string.

If the value listed in the table is @code{NULL}, then the variable, type
@code{char *}, is set to the variable part of the given option if the
fixed part matches.  In other words, if the first part of the option
matches what's in the table, the variable will be set to point to the
rest of the option.  This allows the user to specify a value for that
option.  The actual option name is made by appending @samp{-m} to the
specified name.  Again, each option should also be documented in
@file{invoke.texi}.

If the value listed in the table is non-@code{NULL}, then the option
must match the option in the table exactly (with @samp{-m}), and the
variable is set to point to the value listed in the table.

Here is an example which defines @option{-mshort-data-@var{number}}.  If the
given option is @option{-mshort-data-512}, the variable @code{m88k_short_data}
will be set to the string @code{"512"}.

@smallexample
extern char *m88k_short_data;
#define TARGET_OPTIONS \
 @{ @{ "short-data-", &m88k_short_data, \
     N_("Specify the size of the short data section"), 0 @} @}
@end smallexample

Here is an variant of the above that allows the user to also specify
just @option{-mshort-data} where a default of @code{"64"} is used.

@smallexample
extern char *m88k_short_data;
#define TARGET_OPTIONS \
 @{ @{ "short-data-", &m88k_short_data, \
     N_("Specify the size of the short data section"), 0 @} \
    @{ "short-data", &m88k_short_data, "", "64" @},
    @}
@end smallexample

Here is an example which defines @option{-mno-alu}, @option{-malu1}, and
@option{-malu2} as a three-state switch, along with suitable macros for
checking the state of the option (documentation is elided for brevity).

@smallexample
[chip.c]
char *chip_alu = ""; /* Specify default here.  */

[chip.h]
extern char *chip_alu;
#define TARGET_OPTIONS \
  @{ @{ "no-alu", &chip_alu, "", "" @}, \
     @{ "alu1", &chip_alu, "", "1" @}, \
     @{ "alu2", &chip_alu, "", "2" @}, @}
#define TARGET_ALU (chip_alu[0] != '\0')
#define TARGET_ALU1 (chip_alu[0] == '1')
#define TARGET_ALU2 (chip_alu[0] == '2')
@end smallexample

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 22:32             ` target_flags DJ Delorie
@ 2003-04-17 22:41               ` Zack Weinberg
  2003-04-17 23:50                 ` target_flags DJ Delorie
  0 siblings, 1 reply; 17+ messages in thread
From: Zack Weinberg @ 2003-04-17 22:41 UTC (permalink / raw)
  To: DJ Delorie; +Cc: mrs, gcc

DJ Delorie <dj@redhat.com> writes:

>> Could you please just say explicitly in the documentation that the
>> reason it's called a default value is because you can do something
>> like this with two entries in the table?  And then go ahead and
>> check it in.
>
> I think it would be better to explain more clearly how it works,
> then note that it can be used as a default value.  How about this?

This looks good to me.  Thanks!

zw

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: target_flags
  2003-04-17 22:41               ` target_flags Zack Weinberg
@ 2003-04-17 23:50                 ` DJ Delorie
  0 siblings, 0 replies; 17+ messages in thread
From: DJ Delorie @ 2003-04-17 23:50 UTC (permalink / raw)
  To: zack; +Cc: mrs, gcc


> This looks good to me.  Thanks!

Ok, in it goes then.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2003-04-17 23:19 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-10 20:24 target_flags Mike Stump
2003-03-10 20:47 ` target_flags DJ Delorie
2003-03-10 20:53   ` target_flags Zack Weinberg
2003-03-11  1:41     ` target_flags Mike Stump
2003-03-11  2:44       ` target_flags Zack Weinberg
2003-03-11  5:26         ` target_flags Hans-Peter Nilsson
2003-03-11  4:12       ` target_flags DJ Delorie
2003-03-11  4:17         ` target_flags Zack Weinberg
2003-04-17 20:46     ` target_flags DJ Delorie
2003-04-17 21:44       ` target_flags Zack Weinberg
2003-04-17 21:57         ` target_flags DJ Delorie
2003-04-17 22:07           ` target_flags Zack Weinberg
2003-04-17 22:32             ` target_flags DJ Delorie
2003-04-17 22:41               ` target_flags Zack Weinberg
2003-04-17 23:50                 ` target_flags DJ Delorie
2003-03-10 21:21 ` target_flags David Edelsohn
2003-03-11  1:46   ` target_flags Mike Stump

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).