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 <ja...@redhat.com> PR bootstrap/117407 * builtins.cc (expand_builtin_prefetch): Use !IN_RANGE rather than IN_RANGE. --- 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; Jakub