Fix test-strchr.c warnings for wide string testing

Message ID alpine.DEB.2.10.1411260017030.17237@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers Nov. 26, 2014, 12:17 a.m. UTC
  string/test-strchr.c is used for both wide and narrow string testing,
but produces a series of warnings for wide string testing because of
hardcoded use of narrow characters in the function check1.  This patch
fixes that function to use macros abstracting away the wide / narrow
string choice, adding a new such macro to handle the string and
character constants.

Tested for x86_64.

2014-11-26  Joseph Myers  <joseph@codesourcery.com>

	* string/test-strchr.c [!WIDE] (L): New macro.
	[WIDE] (L): Likewise.
	(check1): Use CHAR instead of char.  Use L on string and character
	constants.
  

Comments

Will Newton Nov. 26, 2014, 9:39 a.m. UTC | #1
On 26 November 2014 at 00:17, Joseph Myers <joseph@codesourcery.com> wrote:
> string/test-strchr.c is used for both wide and narrow string testing,
> but produces a series of warnings for wide string testing because of
> hardcoded use of narrow characters in the function check1.  This patch
> fixes that function to use macros abstracting away the wide / narrow
> string choice, adding a new such macro to handle the string and
> character constants.
>
> Tested for x86_64.
>
> 2014-11-26  Joseph Myers  <joseph@codesourcery.com>
>
>         * string/test-strchr.c [!WIDE] (L): New macro.
>         [WIDE] (L): Likewise.
>         (check1): Use CHAR instead of char.  Use L on string and character
>         constants.

Looks ok to me.

> diff --git a/string/test-strchr.c b/string/test-strchr.c
> index 12cd9d8..fe2dfd2 100644
> --- a/string/test-strchr.c
> +++ b/string/test-strchr.c
> @@ -44,6 +44,7 @@
>  # define MIDDLE_CHAR 127
>  # define SMALL_CHAR 23
>  # define UCHAR unsigned char
> +# define L(s) s
>  #else
>  # include <wchar.h>
>  # define STRCHR wcschr
> @@ -53,6 +54,7 @@
>  # define MIDDLE_CHAR 1121
>  # define SMALL_CHAR 851
>  # define UCHAR wchar_t
> +# define L(s) L ## s
>  #endif
>
>  #ifdef USE_FOR_STRCHRNUL
> @@ -219,9 +221,9 @@ do_random_tests (void)
>  static void
>  check1 (void)
>  {
> -  char s[] __attribute__((aligned(16))) = "\xff";
> -  char c = '\xfe';
> -  char *exp_result = stupid_STRCHR (s, c);
> +  CHAR s[] __attribute__((aligned(16))) = L ("\xff");
> +  CHAR c = L ('\xfe');
> +  CHAR *exp_result = stupid_STRCHR (s, c);
>
>    FOR_EACH_IMPL (impl, 0)
>      check_result (impl, s, c, exp_result);
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
  
Andreas Schwab Nov. 26, 2014, 10:17 a.m. UTC | #2
Joseph Myers <joseph@codesourcery.com> writes:

> 	* string/test-strchr.c [!WIDE] (L): New macro.
> 	[WIDE] (L): Likewise.
> 	(check1): Use CHAR instead of char.  Use L on string and character
> 	constants.

Ok.

Andreas.
  

Patch

diff --git a/string/test-strchr.c b/string/test-strchr.c
index 12cd9d8..fe2dfd2 100644
--- a/string/test-strchr.c
+++ b/string/test-strchr.c
@@ -44,6 +44,7 @@ 
 # define MIDDLE_CHAR 127
 # define SMALL_CHAR 23
 # define UCHAR unsigned char
+# define L(s) s
 #else
 # include <wchar.h>
 # define STRCHR wcschr
@@ -53,6 +54,7 @@ 
 # define MIDDLE_CHAR 1121
 # define SMALL_CHAR 851
 # define UCHAR wchar_t
+# define L(s) L ## s
 #endif
 
 #ifdef USE_FOR_STRCHRNUL
@@ -219,9 +221,9 @@  do_random_tests (void)
 static void
 check1 (void)
 {
-  char s[] __attribute__((aligned(16))) = "\xff";
-  char c = '\xfe';
-  char *exp_result = stupid_STRCHR (s, c);
+  CHAR s[] __attribute__((aligned(16))) = L ("\xff");
+  CHAR c = L ('\xfe');
+  CHAR *exp_result = stupid_STRCHR (s, c);
 
   FOR_EACH_IMPL (impl, 0)
     check_result (impl, s, c, exp_result);