Commit Message
TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (@2)) supposed to check
integer type but not pointer type, so use second parameter instead.
i.e. first parameter is VPTR, second parameter is I4.
582DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
583 "__atomic_fetch_or_4",
584 BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
Failed testcases in PR are verified.
Ok for trunk?
gcc/ChangeLog:
PR middle-end/103419
* match.pd: Fix typo, use the type of second parameter, not
first one.
---
gcc/match.pd | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
Comments
On Thu, Nov 25, 2021 at 9:00 AM liuhongt via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (@2)) supposed to check
> integer type but not pointer type, so use second parameter instead.
>
> i.e. first parameter is VPTR, second parameter is I4.
>
> 582DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
> 583 "__atomic_fetch_or_4",
> 584 BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
>
>
> Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
> Failed testcases in PR are verified.
> Ok for trunk?
OK.
> gcc/ChangeLog:
>
> PR middle-end/103419
> * match.pd: Fix typo, use the type of second parameter, not
> first one.
> ---
> gcc/match.pd | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/match.pd b/gcc/match.pd
> index 5adcd6bd02c..09c7ce749dc 100644
> --- a/gcc/match.pd
> +++ b/gcc/match.pd
> @@ -4053,7 +4053,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
> }
> (if (ibit == ibit2
> && ibit >= 0
> - && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
> + && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
>
> (match (nop_atomic_bit_test_and_p @0 @1 @3)
> (bit_and (convert?@3 (SYNC_FETCH_OR_XOR_N @2 INTEGER_CST@0))
> @@ -4064,21 +4064,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
> }
> (if (ibit == ibit2
> && ibit >= 0
> - && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
> + && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
>
> (match (nop_atomic_bit_test_and_p @0 @0 @4)
> (bit_and:c
> (convert1?@4
> (ATOMIC_FETCH_OR_XOR_N @2 (nop_convert? (lshift@0 integer_onep@5 @6)) @3))
> (convert2? @0))
> - (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
> + (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0)))))
>
> (match (nop_atomic_bit_test_and_p @0 @0 @4)
> (bit_and:c
> (convert1?@4
> (SYNC_FETCH_OR_XOR_N @2 (nop_convert? (lshift@0 integer_onep@3 @5))))
> (convert2? @0))
> - (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
> + (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0)))))
>
> (match (nop_atomic_bit_test_and_p @0 @1 @3)
> (bit_and@4 (convert?@3 (ATOMIC_FETCH_AND_N @2 INTEGER_CST@0 @5))
> @@ -4090,7 +4090,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
> }
> (if (ibit == ibit2
> && ibit >= 0
> - && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
> + && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
>
> (match (nop_atomic_bit_test_and_p @0 @1 @3)
> (bit_and@4
> @@ -4103,21 +4103,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
> }
> (if (ibit == ibit2
> && ibit >= 0
> - && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
> + && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
>
> (match (nop_atomic_bit_test_and_p @4 @0 @3)
> (bit_and:c
> (convert1?@3
> (ATOMIC_FETCH_AND_N @2 (nop_convert?@4 (bit_not (lshift@0 integer_onep@6 @7))) @5))
> (convert2? @0))
> - (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
> + (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@4)))))
>
> (match (nop_atomic_bit_test_and_p @4 @0 @3)
> (bit_and:c
> (convert1?@3
> (SYNC_FETCH_AND_AND_N @2 (nop_convert?@4 (bit_not (lshift@0 integer_onep@6 @7)))))
> (convert2? @0))
> - (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
> + (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@4)))))
>
> #endif
>
> --
> 2.18.1
>
@@ -4053,7 +4053,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
}
(if (ibit == ibit2
&& ibit >= 0
- && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
(match (nop_atomic_bit_test_and_p @0 @1 @3)
(bit_and (convert?@3 (SYNC_FETCH_OR_XOR_N @2 INTEGER_CST@0))
@@ -4064,21 +4064,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
}
(if (ibit == ibit2
&& ibit >= 0
- && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
(match (nop_atomic_bit_test_and_p @0 @0 @4)
(bit_and:c
(convert1?@4
(ATOMIC_FETCH_OR_XOR_N @2 (nop_convert? (lshift@0 integer_onep@5 @6)) @3))
(convert2? @0))
- (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
+ (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0)))))
(match (nop_atomic_bit_test_and_p @0 @0 @4)
(bit_and:c
(convert1?@4
(SYNC_FETCH_OR_XOR_N @2 (nop_convert? (lshift@0 integer_onep@3 @5))))
(convert2? @0))
- (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
+ (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0)))))
(match (nop_atomic_bit_test_and_p @0 @1 @3)
(bit_and@4 (convert?@3 (ATOMIC_FETCH_AND_N @2 INTEGER_CST@0 @5))
@@ -4090,7 +4090,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
}
(if (ibit == ibit2
&& ibit >= 0
- && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
(match (nop_atomic_bit_test_and_p @0 @1 @3)
(bit_and@4
@@ -4103,21 +4103,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
}
(if (ibit == ibit2
&& ibit >= 0
- && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2))))))
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@0))))))
(match (nop_atomic_bit_test_and_p @4 @0 @3)
(bit_and:c
(convert1?@3
(ATOMIC_FETCH_AND_N @2 (nop_convert?@4 (bit_not (lshift@0 integer_onep@6 @7))) @5))
(convert2? @0))
- (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
+ (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@4)))))
(match (nop_atomic_bit_test_and_p @4 @0 @3)
(bit_and:c
(convert1?@3
(SYNC_FETCH_AND_AND_N @2 (nop_convert?@4 (bit_not (lshift@0 integer_onep@6 @7)))))
(convert2? @0))
- (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@2)))))
+ (if (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (@4)))))
#endif