On Tue, Nov 14, 2023 at 09:47:31PM -0700, Jeff Law wrote:
> >     c++: Implement C++26 P1854R4 - Making non-encodable string literals 
> > ill-formed [PR110341]
> >     This paper voted in as DR makes some multi-character literals 
> > ill-formed.
> >     'abcd' stays valid, but e.g. 'รก' is newly invalid in UTF-8 exec charset
> >     while valid e.g. in ISO-8859-1, because it is a single character which 
> > needs
> >     2 bytes to be encoded.
> 
> Is causing 16 bit targets such as arc-elf, msp430-elf, rl78-elf to fail
> gcc.dg/cpp/if-2.c:
> 
> > Tests that now fail, but worked before (2 tests):
> > 
> > arc-sim: gcc.dg/cpp/if-2.c (test for excess errors)
> > arc-sim: gcc.dg/cpp/if-2.c multi-character charconst (test for warnings, 
> > line 21)
> 
> It's visible with just a cross compiler, so you don't need a full cross
> setup.    I'm not currently looking into these failures at all, just thought
> you might want to know.

Fixed thusly, tested with msp430-elf cross and on x86_64-linux, committed to
trunk as obvious:

2023-11-15  Jakub Jelinek  <ja...@redhat.com>

        * gcc.dg/cpp/if-2.c: Adjust expected diagnostics for 16-bit targets.

--- gcc/testsuite/gcc.dg/cpp/if-2.c.jj  2023-11-14 18:28:21.068696191 +0100
+++ gcc/testsuite/gcc.dg/cpp/if-2.c     2023-11-15 08:49:05.805629059 +0100
@@ -17,8 +17,8 @@
 #error 0x1234  /* { dg-bogus "error" "wide charconst recognition 3" } */
 #endif
 
-/* The 'character constant (is )?too long' message is produced by 16-bit 
targets.  */
-#if 'abcd' /* { dg-warning "(multi-character character constant)|(character 
constant (is )?too long)" "multi-character charconst" } */
+/* The 'multi-character literal with 4 characters exceeds 'int' size of 
\[0-9]+ bytes' message is produced by 16-bit targets.  */
+#if 'abcd' /* { dg-warning "(multi-character character 
constant)|(multi-character literal with 4 characters exceeds 'int' size of 
\[0-9]+ bytes)" "multi-character charconst" } */
 #endif
 
 #if 'abcdefghi' /* { dg-warning "multi-character literal with \[0-9]+ 
characters exceeds 'int' size of \[0-9]+ bytes" } */


        Jakub

Reply via email to