aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPan Li <pan2.li@intel.com>2024-10-15 07:30:13 +0800
committerPan Li <pan2.li@intel.com>2024-10-15 19:06:08 +0800
commit97f98855d4157a2511a713129ec77740fe6f88dc (patch)
treeb226e63c40b36e27c4a8616e9343cf7d5da25358 /gcc
parenta1540bb843fd1a3e87f50d3f713386eaae454d1c (diff)
downloadgcc-97f98855d4157a2511a713129ec77740fe6f88dc.zip
gcc-97f98855d4157a2511a713129ec77740fe6f88dc.tar.gz
gcc-97f98855d4157a2511a713129ec77740fe6f88dc.tar.bz2
Match: Remove dup match pattern for signed_integer_sat_sub [PR117141]
This patch would like to fix the warning as below: /home/slyfox/dev/git/gcc/gcc/match.pd:3424:3 warning: duplicate pattern (cond^ (ne (imagpart (IFN_SUB_OVERFLOW:c@2 @0 @1)) integer_zerop) ^ /home/slyfox/dev/git/gcc/gcc/match.pd:3397:3 warning: previous pattern defined here (cond^ (ne (imagpart (IFN_SUB_OVERFLOW@2 @0 @1)) integer_zerop) The second has a optional nop_convert which allows for the first one, thus remove the dup one. The below test suites are passed for this patch. * The rv64gcv fully regression test. * The x86 bootstrap test. * The x86 fully regression test. PR middle-end/117141 gcc/ChangeLog: * match.pd: Remove the dup pattern for signed SAT_SUB. Signed-off-by: Pan Li <pan2.li@intel.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/match.pd15
1 files changed, 2 insertions, 13 deletions
diff --git a/gcc/match.pd b/gcc/match.pd
index ee53c25..22fad1a 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -3395,7 +3395,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
The T and UT are type pair like T=int8_t, UT=uint8_t. */
(match (signed_integer_sat_sub @0 @1)
(cond^ (ne (imagpart (IFN_SUB_OVERFLOW@2 @0 @1)) integer_zerop)
- (bit_xor:c (negate (convert (lt @0 integer_zerop)))
+ (bit_xor:c (nop_convert?
+ (negate (nop_convert? (convert (lt @0 integer_zerop)))))
max_value)
(realpart @2))
(if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
@@ -3417,18 +3418,6 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
@2)
(if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type))))
-/* Signed saturation sub, case 5:
- Z = .SUB_OVERFLOW (X, Y)
- SAT_S_SUB = IMAGPART_EXPR (Z) != 0 ? (-(T)(X < 0) ^ MAX) : minus; */
-(match (signed_integer_sat_sub @0 @1)
- (cond^ (ne (imagpart (IFN_SUB_OVERFLOW:c@2 @0 @1)) integer_zerop)
- (bit_xor:c (nop_convert?
- (negate (nop_convert? (convert (lt @0 integer_zerop)))))
- max_value)
- (realpart @2))
- (if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
- && types_match (type, @0, @1))))
-
/* Unsigned saturation truncate, case 1, sizeof (WT) > sizeof (NT).
SAT_U_TRUNC = (NT)x | (NT)(-(X > (WT)(NT)(-1))). */
(match (unsigned_integer_sat_trunc @0)