summaryrefslogtreecommitdiff
path: root/0009-MULL64-Disable-mull64-transformation-by-default.patch
blob: 347ba0aeca65c80056fc86ba0bcc32a7b2a1fe2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
From 7c1f4425c680ea144d29bc55a1283d46444a2691 Mon Sep 17 00:00:00 2001
From: eastb233 <xiezhiheng@huawei.com>
Date: Wed, 7 Dec 2022 09:43:15 +0800
Subject: [PATCH 09/22] [MULL64] Disable mull64 transformation by default

This commit disables mull64 transformation by default since
it shows some runtime failure in workloads.

This is a workaround fix for https://gitee.com/src-openeuler/gcc/issues/I64UQH
---
 gcc/match.pd                           | 2 +-
 gcc/opts.cc                            | 1 -
 gcc/testsuite/g++.dg/tree-ssa/mull64.C | 2 +-
 gcc/testsuite/gcc.dg/pr107190.c        | 2 +-
 4 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/gcc/match.pd b/gcc/match.pd
index b7e3588e8..6f24d5079 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -4290,7 +4290,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
   (simplify
    (cond @0 (op:s @1 integer_pow2p@2) @1)
     /* powerof2cst */
-   (if (INTEGRAL_TYPE_P (type))
+   (if (flag_merge_mull && INTEGRAL_TYPE_P (type))
     (with {
       tree shift = build_int_cst (integer_type_node, tree_log2 (@2));
      }
diff --git a/gcc/opts.cc b/gcc/opts.cc
index eae71ed20..a97630d1c 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -647,7 +647,6 @@ static const struct default_options default_options_table[] =
       VECT_COST_MODEL_VERY_CHEAP },
     { OPT_LEVELS_2_PLUS, OPT_finline_functions, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
-    { OPT_LEVELS_2_PLUS, OPT_fmerge_mull, NULL, 1 },
 
     /* -O2 and above optimizations, but not -Os or -Og.  */
     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_functions, NULL, 1 },
diff --git a/gcc/testsuite/g++.dg/tree-ssa/mull64.C b/gcc/testsuite/g++.dg/tree-ssa/mull64.C
index f61cf5e6f..cad891e62 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/mull64.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/mull64.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -Wno-psabi -fdump-tree-forwprop1-details -fdump-tree-forwprop4-details" } */
+/* { dg-options "-O2 -fmerge-mull -Wno-psabi -fdump-tree-forwprop1-details -fdump-tree-forwprop4-details" } */
 
 #  define BN_BITS4        32
 #  define BN_MASK2        (0xffffffffffffffffL)
diff --git a/gcc/testsuite/gcc.dg/pr107190.c b/gcc/testsuite/gcc.dg/pr107190.c
index 235b2761a..d1e72e5df 100644
--- a/gcc/testsuite/gcc.dg/pr107190.c
+++ b/gcc/testsuite/gcc.dg/pr107190.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fexpensive-optimizations -fdump-tree-phiopt2-details" } */
+/* { dg-options "-O2 -fmerge-mull -fexpensive-optimizations -fdump-tree-phiopt2-details" } */
 
 #  define BN_BITS4        32
 #  define BN_MASK2        (0xffffffffffffffffL)
-- 
2.33.0