This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[RFC 5/5] Always completely replace constant pool entries
- From: Alan Lawrence <alan dot lawrence at arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: rguenther at suse dot de, mjambor at suse dot cz, Alan Lawrence <alan dot lawrence at arm dot com>
- Date: Tue, 25 Aug 2015 12:06:17 +0100
- Subject: [RFC 5/5] Always completely replace constant pool entries
- Authentication-results: sourceware.org; auth=none
- References: <1440500777-25966-1-git-send-email-alan dot lawrence at arm dot com>
I used this as a means of better-testing the previous changes, as it exercises
the constant replacement code a whole lot more. Indeed, quite a few tests are
now optimized away to nothing on AArch64...
Always pulling in constants, is almost certainly not what we want, but we may
nonetheless want something more aggressive than the usual --param, e.g. for the
ssa-dom-cse-2.c test. Thoughts welcomed?
Thanks, Alan
gcc/ChangeLog:
* tree-sra.c (analyze_all_variable_accesses): Bypass size limit for
constant-pool accesses.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/ssa-dom-cse-2.c: Remove --param
sra-max-scalarization-size-Ospeed.
---
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c | 2 +-
gcc/tree-sra.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
index b13d583..370b785 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -fno-tree-fre -fno-tree-pre -fdump-tree-optimized --param sra-max-scalarization-size-Ospeed=32" } */
+/* { dg-options "-O3 -fno-tree-fre -fno-tree-pre -fdump-tree-optimized" } */
int
foo ()
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index a3ff2df..2a741b8 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -2651,7 +2651,8 @@ analyze_all_variable_accesses (void)
&& scalarizable_type_p (TREE_TYPE (var)))
{
if (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var)))
- <= max_scalarization_size)
+ <= max_scalarization_size
+ || DECL_IN_CONSTANT_POOL (var))
{
create_total_scalarization_access (var);
completely_scalarize (var, TREE_TYPE (var), 0, var);
--
1.8.3