d: Simplify quoting characters in deps_add_target

The implementation in d-lang.cc was based on what was present in libcpp.
This synchronizes the escaping logic to match the current version.

gcc/d/ChangeLog:

	* d-lang.cc (deps_add_target): Handle quoting ':' character.
	Reimplement backslash tracking.
This commit is contained in:
Iain Buclaw 2020-12-24 22:23:16 +01:00
parent ac78516b27
commit 209da90b40

View file

@ -114,26 +114,35 @@ deps_add_target (const char *target, bool quoted)
}
/* Quote characters in target which are significant to Make. */
unsigned slashes = 0;
for (const char *p = target; *p != '\0'; p++)
{
switch (*p)
{
case '\\':
slashes++;
break;
case ' ':
case '\t':
for (const char *q = p - 1; target <= q && *q == '\\'; q--)
while (slashes--)
obstack_1grow (&buffer, '\\');
obstack_1grow (&buffer, '\\');
break;
goto Ldef;
case '$':
obstack_1grow (&buffer, '$');
break;
goto Ldef;
case '#':
case ':':
obstack_1grow (&buffer, '\\');
break;
goto Ldef;
default:
Ldef:
slashes = 0;
break;
}