libcpp: Use pedwarn instead of warning for CWG2578 diagnostics [PR120778]

This is another case which changed from compile time undefined behavior
to ill-formed, diagnostic required.  Now, we warn on this, so pedantically
that is good enough, maybe all we need is a testcase, but the following
patch changes it to a pedwarn for C++26.

2025-08-04  Jakub Jelinek  <jakub@redhat.com>

	PR preprocessor/120778
	* macro.cc (stringify_arg): For C++26 emit a pedarn instead of warning
	for \ at the end of stringification.

	* g++.dg/DRs/dr2578.C: New test.
This commit is contained in:
Jakub Jelinek
2025-08-04 14:27:14 +02:00
committed by Jakub Jelinek
parent d49d359b0c
commit b9f443b617
2 changed files with 14 additions and 1 deletions

View File

@@ -1003,7 +1003,10 @@ stringify_arg (cpp_reader *pfile, const cpp_token **first, unsigned int count)
/* Ignore the final \ of invalid string literals. */
if (backslash_count & 1)
{
cpp_error (pfile, CPP_DL_WARNING,
cpp_error (pfile,
CPP_OPTION (pfile, cplusplus)
&& CPP_OPTION (pfile, lang) >= CLK_GNUCXX26
? CPP_DL_PEDWARN : CPP_DL_WARNING,
"invalid string literal, ignoring final %<\\%>");
dest--;
}