aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dce.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2012-02-10 09:44:31 -0800
committerRichard Henderson <rth@gcc.gnu.org>2012-02-10 09:44:31 -0800
commit1d4fb4935cf2e224a01e6409341fb6ad5eb0462d (patch)
tree4dee112990f9f516b3426813bcdbf020af010066 /gcc/tree-ssa-dce.c
parent1e98f62d742e5c5a56f150d5e857dd083d9a10d9 (diff)
downloadgcc-1d4fb4935cf2e224a01e6409341fb6ad5eb0462d.zip
gcc-1d4fb4935cf2e224a01e6409341fb6ad5eb0462d.tar.gz
gcc-1d4fb4935cf2e224a01e6409341fb6ad5eb0462d.tar.bz2
tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION.
* tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION. * tree-ssa-operands.c (parse_ssa_operands): Add virtual operands for GIMPLE_TRANSACTION. Tidy if's into a switch. From-SVN: r184107
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r--gcc/tree-ssa-dce.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index ccdf14a..ace9ef9 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -965,6 +965,13 @@ propagate_necessity (struct edge_list *el)
mark_aliased_reaching_defs_necessary (stmt, op);
}
}
+ else if (gimple_code (stmt) == GIMPLE_TRANSACTION)
+ {
+ /* The beginning of a transaction is a memory barrier. */
+ /* ??? If we were really cool, we'd only be a barrier
+ for the memories touched within the transaction. */
+ mark_all_reaching_defs_necessary (stmt);
+ }
else
gcc_unreachable ();