/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-sra" } */
+/* { dg-options "-O2 -fdump-tree-sra -fdump-tree-optimized" } */
#include <vector>
typedef unsigned int uint32_t;
}
/* { dg-final { scan-tree-dump "Created a replacement for stack offset" "sra"} } */
+/* { dg-final { scan-tree-dump-not "cur = MEM" "optimized"} } */
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dse1-details -fno-short-enums -fno-tree-fre" } */
+/* { dg-options "-O2 -fdump-tree-esra -fno-short-enums -fno-tree-fre" } */
/* { dg-skip-if "we want a BIT_FIELD_REF from fold_truth_andor" { ! lp64 } } */
/* { dg-skip-if "temporary variable names are not x and y" { mmix-knuth-mmixware } } */
&& constraint_expr_equal (a.rhs, b.rhs);
}
-/* { dg-final { scan-tree-dump-times "Deleted dead store: x = " 2 "dse1" } } */
-/* { dg-final { scan-tree-dump-times "Deleted dead store: y = " 2 "dse1" } } */
+/* { dg-final { scan-tree-dump-not "x = " "esra" } } */
+/* { dg-final { scan-tree-dump-not "y = " "esra" } } */
But use the RHS aggregate to load from to expose more
optimization opportunities. */
if (access_has_children_p (lacc))
- generate_subtree_copies (lacc->first_child, rhs, lacc->offset,
- 0, 0, gsi, true, true, loc);
+ {
+ generate_subtree_copies (lacc->first_child, rhs, lacc->offset,
+ 0, 0, gsi, true, true, loc);
+ if (lacc->grp_covered)
+ {
+ unlink_stmt_vdef (stmt);
+ gsi_remove (& orig_gsi, true);
+ release_defs (stmt);
+ sra_stats.deleted++;
+ return SRA_AM_REMOVED;
+ }
+ }
}
return SRA_AM_NONE;