builtins: Fix expand_builtin_prefetch [PR117407]

Message ID ZyU77S1k6kfFvVTI@tucnak
State New
Headers
Series builtins: Fix expand_builtin_prefetch [PR117407] |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply

Commit Message

Jakub Jelinek Nov. 1, 2024, 8:37 p.m. UTC
  On Fri, Nov 01, 2024 at 04:47:35PM +0800, Haochen Jiang wrote:
> gcc/ChangeLog:
> 
>         * builtins.cc (expand_builtin_prefetch): Use IN_RANGE to
> 	avoid second usage of INTVAL.

I doubt this has been actually tested.

> --- a/gcc/builtins.cc
> +++ b/gcc/builtins.cc
> @@ -1297,7 +1297,7 @@ expand_builtin_prefetch (tree exp)
>    else
>      op1 = expand_normal (arg1);
>    /* Argument 1 must be 0, 1 or 2.  */
> -  if (INTVAL (op1) < 0 || INTVAL (op1) > 2)
> +  if (IN_RANGE (INTVAL (op1), 0, 2))
>      {
>        warning (0, "invalid second argument to %<__builtin_prefetch%>;"
>  	       " using zero");
> @@ -1315,7 +1315,7 @@ expand_builtin_prefetch (tree exp)
>    else
>      op2 = expand_normal (arg2);
>    /* Argument 2 must be 0, 1, 2, or 3.  */
> -  if (INTVAL (op2) < 0 || INTVAL (op2) > 3)
> +  if (IN_RANGE (INTVAL (op2), 0, 3))
>      {
>        warning (0, "invalid third argument to %<__builtin_prefetch%>; using zero");
>        op2 = const0_rtx;

because it inverts the tests, previously it was warning when op1 wasn't
0, 1, 2, now it warns when it is 0, 1 or 2, previously it was warning
when op2 wasn't 0, 1, 2 or 3, now it warns when it is 0, 1, 2, or 3.

Here is a fix, I'll commit it as obvious if it passes bootstrap/regtest.

2024-11-01  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/117407
	* builtins.cc (expand_builtin_prefetch): Use !IN_RANGE rather
	than IN_RANGE.


	Jakub
  

Patch

--- gcc/builtins.cc.jj	2024-11-01 19:32:19.080965524 +0100
+++ gcc/builtins.cc	2024-11-01 21:31:53.062321543 +0100
@@ -1297,7 +1297,7 @@  expand_builtin_prefetch (tree exp)
   else
     op1 = expand_normal (arg1);
   /* Argument 1 must be 0, 1 or 2.  */
-  if (IN_RANGE (INTVAL (op1), 0, 2))
+  if (!IN_RANGE (INTVAL (op1), 0, 2))
     {
       warning (0, "invalid second argument to %<__builtin_prefetch%>;"
 	       " using zero");
@@ -1315,7 +1315,7 @@  expand_builtin_prefetch (tree exp)
   else
     op2 = expand_normal (arg2);
   /* Argument 2 must be 0, 1, 2, or 3.  */
-  if (IN_RANGE (INTVAL (op2), 0, 3))
+  if (!IN_RANGE (INTVAL (op2), 0, 3))
     {
       warning (0, "invalid third argument to %<__builtin_prefetch%>; using zero");
       op2 = const0_rtx;