Christophe Lyon <[email protected]> writes:
> On Fri, 19 Apr 2019 at 11:23, Richard Sandiford
> <[email protected]> wrote:
>>
>> Christophe Lyon <[email protected]> writes:
>> > On Thu, 18 Apr 2019 at 18:25, Richard Sandiford
>> > <[email protected]> wrote:
>> >>
>> >> Christophe Lyon <[email protected]> writes:
>> >> > Hi,
>> >> >
>> >> > This patch adds the missing space before '%<' in
>> >> > config/aarch64/aarch64.c and gcc/cp/call.c. It also updates the
>> >> > check-internal-format-escaping.py checker to warn about such cases.
>> >> >
>> >> > OK?
>> >> >
>> >> > Christophe
>> >> >
>> >> > diff --git a/contrib/check-internal-format-escaping.py
>> >> > b/contrib/check-internal-format-escaping.py
>> >> > index aac4f9e..9c62586 100755
>> >> > --- a/contrib/check-internal-format-escaping.py
>> >> > +++ b/contrib/check-internal-format-escaping.py
>> >> > @@ -58,6 +58,10 @@ for i, l in enumerate(lines):
>> >> > print('%s: %s' % (origin, text))
>> >> > if re.search("[^%]'", p):
>> >> > print('%s: %s' % (origin, text))
>> >> > + # %< should not be preceded by a non-punctuation
>> >> > + # %character.
>> >> > + if re.search("[a-zA-Z0-9]%<", p):
>> >> > + print('%s: %s' % (origin, text))
>> >> > j += 1
>> >> >
>> >> > origin = None
>> >> > diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>> >> > index 9be7548..b66071f 100644
>> >> > --- a/gcc/config/aarch64/aarch64.c
>> >> > +++ b/gcc/config/aarch64/aarch64.c
>> >> > @@ -11483,7 +11483,7 @@ aarch64_override_options_internal (struct
>> >> > gcc_options *opts)
>> >> > if (aarch64_stack_protector_guard == SSP_GLOBAL
>> >> > && opts->x_aarch64_stack_protector_guard_offset_str)
>> >> > {
>> >> > - error ("incompatible options %<-mstack-protector-guard=global%>
>> >> > and"
>> >> > + error ("incompatible options %<-mstack-protector-guard=global%>
>> >> > and "
>> >> > "%<-mstack-protector-guard-offset=%s%>",
>> >> > aarch64_stack_protector_guard_offset_str);
>> >> > }
>> >> > diff --git a/gcc/cp/call.c b/gcc/cp/call.c
>> >> > index 9582345..8f3d019 100644
>> >> > --- a/gcc/cp/call.c
>> >> > +++ b/gcc/cp/call.c
>> >> > @@ -3614,16 +3614,16 @@ print_z_candidate (location_t loc, const char
>> >> > *msgstr,
>> >> > {
>> >> > cloc = loc;
>> >> > if (candidate->num_convs == 3)
>> >> > - inform (cloc, "%s%<%D(%T, %T, %T)%> <built-in>", msg, fn,
>> >> > + inform (cloc, "%s %<%D(%T, %T, %T)%> <built-in>", msg, fn,
>> >> > candidate->convs[0]->type,
>> >> > candidate->convs[1]->type,
>> >> > candidate->convs[2]->type);
>> >> > else if (candidate->num_convs == 2)
>> >> > - inform (cloc, "%s%<%D(%T, %T)%> <built-in>", msg, fn,
>> >> > + inform (cloc, "%s %<%D(%T, %T)%> <built-in>", msg, fn,
>> >> > candidate->convs[0]->type,
>> >> > candidate->convs[1]->type);
>> >> > else
>> >> > - inform (cloc, "%s%<%D(%T)%> <built-in>", msg, fn,
>> >> > + inform (cloc, "%s %<%D(%T)%> <built-in>", msg, fn,
>> >> > candidate->convs[0]->type);
>> >> > }
>> >> > else if (TYPE_P (fn))
>> >>
>> >> I don't think this is right, since msg already has a space where
>> >> necessary:
>> >>
>> >> const char *msg = (msgstr == NULL
>> >> ? ""
>> >> : ACONCAT ((msgstr, " ", NULL)));
>> >>
>> >> Adding something like "(^| )[^% ]*" to the start of the regexp might
>> >> avoid that, at the risk of letting through real problems.
>> >>
>> >
>> > Yes, that would miss the problem in aarch64.c.
>>
>> Are you sure? It works for me.
>>
> It didn't work for me, with that change the line didn't report any error.
Hmm, OK. With:
if re.search("(^| )[^% ]*[a-zA-Z0-9]%<", p):
print('%s: %s' % (origin, text))
and a tree without your aarch64.c fix, I get:
#: config/aarch64/aarch64.c:11486: incompatible options
%<-mstack-protector-guard=global%> and%<-mstack-"
but no warning about the cp/call.c stuff.
Thanks,
Richard