re PR ipa/67811 ([TM] ICE with try-block in transaction)
authorRichard Henderson <rth@redhat.com>
Thu, 24 Dec 2015 00:45:15 +0000 (16:45 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 24 Dec 2015 00:45:15 +0000 (16:45 -0800)
PR ipa/67811

 * tree-cfg.c (make_edges_bb): Add abort edge for outer transactions.

From-SVN: r231943

gcc/ChangeLog
gcc/tree-cfg.c

index addc54af887764399201953354c5285493f0889e..6bc47d56f75fe7a79e9670b86c842bcbd39a0db5 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-23  Richard Henderson  <rth@redhat.com>
+
+       PR ipa/67811
+       * tree-cfg.c (make_edges_bb): Add abort edge for outer transactions.
+
 2015-12-23  Nathan Sidwell  <nathan@acm.org>
 
        * cgraph.h (decl_in_symtab_p): Revert check DECL_IN_CONSTANT_POOL.
index 436ea146c1bc22e2eb30fe6eeea962c0529552bc..3b2fab56e9530a98f1eebd4c2323cd8e8435b1c7 100644 (file)
@@ -839,7 +839,8 @@ make_edges_bb (basic_block bb, struct omp_region **pcur_region, int *pomp_index)
                     EDGE_TM_UNINSTRUMENTED | (label1 ? 0 : EDGE_FALLTHRU));
 
        tree label3 = gimple_transaction_label_over (txn);
-       if (gimple_transaction_subcode (txn) & GTMA_HAVE_ABORT)
+       if (gimple_transaction_subcode (txn)
+           & (GTMA_HAVE_ABORT | GTMA_IS_OUTER))
          make_edge (bb, label_to_block (label3), EDGE_TM_ABORT);
 
        fallthru = false;