On Thu, Jul 7, 2011 at 2:03 AM, Joseph S. Myers <jos...@codesourcery.com> wrote: > The %[] spec operator is marked as obsolete and not used by any specs > in GCC; I'm also not sure it would work properly now the canonical > form of -D options is defined to have separate argument. This patch > removes support for that obsolete operator. > > Bootstrapped with no regressions on x86_64-unknown-linux-gnu. OK to > commit?
Ok. Thanks, Richard. > 2011-07-06 Joseph Myers <jos...@codesourcery.com> > > * gcc.c (%[Spec]): Don't document. > (struct spec_list): Update comment. > (do_spec_1): Don't handle %[Spec]. > * doc/invoke.texi (%[@var{name}]): Remove documentation of spec. > > Index: gcc/doc/invoke.texi > =================================================================== > --- gcc/doc/invoke.texi (revision 175919) > +++ gcc/doc/invoke.texi (working copy) > @@ -9768,9 +9768,6 @@ Use this when inconsistent options are d > @item %(@var{name}) > Substitute the contents of spec string @var{name} at this point. > > -@item %[@var{name}] > -Like @samp{%(@dots{})} but put @samp{__} around @option{-D} arguments. > - > @item %x@{@var{option}@} > Accumulate an option for @samp{%X}. > > Index: gcc/gcc.c > =================================================================== > --- gcc/gcc.c (revision 175919) > +++ gcc/gcc.c (working copy) > @@ -438,7 +438,6 @@ or with constant text in a single argume > This may be combined with '.', '!', ',', '|', and '*' as above. > > %(Spec) processes a specification defined in a specs file as *Spec: > - %[Spec] as above, but put __ around -D arguments > > The conditional text X in a %{S:X} or similar construct may contain > other nested % constructs or spaces, or even newlines. They are > @@ -1149,8 +1148,8 @@ static const char *multilib_dir; > static const char *multilib_os_dir; > > /* Structure to keep track of the specs that have been defined so far. > - These are accessed using %(specname) or %[specname] in a compiler > - or link spec. */ > + These are accessed using %(specname) in a compiler or link > + spec. */ > > struct spec_list > { > @@ -5212,11 +5211,7 @@ do_spec_1 (const char *spec, int inswitc > > /* Process a string found as the value of a spec given by name. > This feature allows individual machine descriptions > - to add and use their own specs. > - %[...] modifies -D options the way %P does; > - %(...) uses the spec unmodified. */ > - case '[': > - warning (0, "use of obsolete %%[ operator in specs"); > + to add and use their own specs. */ > case '(': > { > const char *name = p; > @@ -5225,7 +5220,7 @@ do_spec_1 (const char *spec, int inswitc > > /* The string after the S/P is the name of a spec that is to be > processed. */ > - while (*p && *p != ')' && *p != ']') > + while (*p && *p != ')') > p++; > > /* See if it's in the list. */ > @@ -5234,63 +5229,20 @@ do_spec_1 (const char *spec, int inswitc > { > name = *(sl->ptr_spec); > #ifdef DEBUG_SPECS > - fnotice (stderr, "Processing spec %c%s%c, which is > '%s'\n", > - c, sl->name, (c == '(') ? ')' : ']', name); > + fnotice (stderr, "Processing spec (%s), which is '%s'\n", > + sl->name, name); > #endif > break; > } > > if (sl) > { > - if (c == '(') > - { > - value = do_spec_1 (name, 0, NULL); > - if (value != 0) > - return value; > - } > - else > - { > - char *x = (char *) alloca (strlen (name) * 2 + 1); > - char *buf = x; > - const char *y = name; > - int flag = 0; > - > - /* Copy all of NAME into BUF, but put __ after > - every -D and at the end of each arg. */ > - while (1) > - { > - if (! strncmp (y, "-D", 2)) > - { > - *x++ = '-'; > - *x++ = 'D'; > - *x++ = '_'; > - *x++ = '_'; > - y += 2; > - flag = 1; > - continue; > - } > - else if (flag > - && (*y == ' ' || *y == '\t' || *y == '=' > - || *y == '}' || *y == 0)) > - { > - *x++ = '_'; > - *x++ = '_'; > - flag = 0; > - } > - if (*y == 0) > - break; > - else > - *x++ = *y++; > - } > - *x = 0; > - > - value = do_spec_1 (buf, 0, NULL); > - if (value != 0) > - return value; > - } > + value = do_spec_1 (name, 0, NULL); > + if (value != 0) > + return value; > } > > - /* Discard the closing paren or bracket. */ > + /* Discard the closing paren. */ > if (*p) > p++; > } > > -- > Joseph S. Myers > jos...@codesourcery.com >