diagnostics: Fix selftest ICE in certain locales [PR107722]

Message ID Y33fGGNXV6JNCK1p@tucnak
State New
Headers
Series diagnostics: Fix selftest ICE in certain locales [PR107722] |

Commit Message

Jakub Jelinek Nov. 23, 2022, 8:51 a.m. UTC
  Hi!

As reported in the PR, since special_fname_builtin () call has been
introduced, the diagnostics code compares filename against _("<built-in>")
rather than "<built-in>", which means that if self tests are performed
with the string being translated, one self-test fails.
The following patch fixes that.

Bootstrapped/regtested on x86_64-linux and i686-linux (with normal C locale)
and by the reporter in German, where it fixes the problem.  Ok for trunk?

2022-11-22  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/107722
	* diagnostic.cc (test_diagnostic_get_location_text): Test
	special_fname_builtin () rather than "<built-in>" and expect
	special_fname_builtin () concatenated with ":" for it.


	Jakub
  

Comments

David Malcolm Nov. 23, 2022, 1:20 p.m. UTC | #1
On Wed, 2022-11-23 at 09:51 +0100, Jakub Jelinek wrote:
> Hi!
> 
> As reported in the PR, since special_fname_builtin () call has been
> introduced, the diagnostics code compares filename against _("<built-
> in>")
> rather than "<built-in>", which means that if self tests are
> performed
> with the string being translated, one self-test fails.
> The following patch fixes that.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux (with normal C
> locale)
> and by the reporter in German, where it fixes the problem.  Ok for
> trunk?

OK

Thanks
Dave
  

Patch

--- gcc/diagnostic.cc.jj	2022-11-15 22:57:18.215211107 +0100
+++ gcc/diagnostic.cc	2022-11-22 12:36:37.197764164 +0100
@@ -2593,7 +2593,10 @@  test_diagnostic_get_location_text ()
   const char *old_progname = progname;
   progname = "PROGNAME";
   assert_location_text ("PROGNAME:", NULL, 0, 0, true);
-  assert_location_text ("<built-in>:", "<built-in>", 42, 10, true);
+  char *built_in_colon = concat (special_fname_builtin (), ":", (char *) 0);
+  assert_location_text (built_in_colon, special_fname_builtin (),
+			42, 10, true);
+  free (built_in_colon);
   assert_location_text ("foo.c:42:10:", "foo.c", 42, 10, true);
   assert_location_text ("foo.c:42:9:", "foo.c", 42, 10, true, 0);
   assert_location_text ("foo.c:42:1010:", "foo.c", 42, 10, true, 1001);