Ensure points-to information is maintained for prefetch.
authorDoug Gilmore <doug.gilmore@imgtec.com>
Fri, 23 Sep 2016 15:48:01 +0000 (15:48 +0000)
committerMatthew Fortune <mpf@gcc.gnu.org>
Fri, 23 Sep 2016 15:48:01 +0000 (15:48 +0000)
gcc/
        PR tree-optimization/77654
        * tree-ssa-alias.c (issue_prefetch_ref): Add call
        to duplicate_ssa_name_ptr_info.

From-SVN: r240439

gcc/ChangeLog
gcc/tree-ssa-loop-prefetch.c

index 14a5518f6ec621a403a159b79913b40c85cad31f..6262f035fd238b5c44586221d3784cb836e35e9a 100644 (file)
@@ -1,3 +1,9 @@
+2016-09-23  Doug Gilmore  <doug.gilmore@imgtec.com>
+
+       PR tree-optimization/77654
+       * tree-ssa-alias.c (issue_prefetch_ref): Add call
+       to duplicate_ssa_name_ptr_info.
+
 2016-09-23  David Malcolm  <dmalcolm@redhat.com>
 
        PR preprocessor/77672
index 26cf0a0078acf9e30a68f54e56382666fedde9aa..056815de9e1fbdcc00e43ab896003c1958f08ebf 100644 (file)
@@ -39,6 +39,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-ssa-loop.h"
+#include "ssa.h"
 #include "tree-into-ssa.h"
 #include "cfgloop.h"
 #include "tree-scalar-evolution.h"
@@ -1160,6 +1161,17 @@ issue_prefetch_ref (struct mem_ref *ref, unsigned unroll_factor, unsigned ahead)
           addr = force_gimple_operand_gsi (&bsi, unshare_expr (addr), true,
                                           NULL, true, GSI_SAME_STMT);
       }
+
+      if (TREE_CODE (addr_base) == SSA_NAME
+         && TREE_CODE (addr) == SSA_NAME)
+       {
+         duplicate_ssa_name_ptr_info (addr, SSA_NAME_PTR_INFO (addr_base));
+         /* As this isn't a plain copy we have to reset alignment
+            information.  */
+         if (SSA_NAME_PTR_INFO (addr))
+           mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (addr));
+       }
+
       /* Create the prefetch instruction.  */
       prefetch = gimple_build_call (builtin_decl_explicit (BUILT_IN_PREFETCH),
                                    3, addr, write_p, local);