Enable experimental TSAN support for Ada.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 5 Jan 2015 20:26:44 +0000 (20:26 +0000)
committerBernd Edlinger <edlinger@gcc.gnu.org>
Mon, 5 Jan 2015 20:26:44 +0000 (20:26 +0000)
2015-01-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        Enable experimental TSAN support for Ada.
        * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR.

From-SVN: r219197

gcc/ChangeLog
gcc/tsan.c

index 2ba1d2b..923cea3 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       Enable experimental TSAN support for Ada.
+       * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR.
+
 2015-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/64494
index a5e8133..1bc146f 100644 (file)
@@ -212,6 +212,17 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
                     build_int_cst (TREE_TYPE (expr), bitpos / BITS_PER_UNIT));
       expr_ptr = build_fold_addr_expr (expr);
     }
+  /* We can't call build_fold_addr_expr on a VIEW_CONVERT_EXPR.
+     This can occur in Ada.  */
+  else if (TREE_CODE (expr) == VIEW_CONVERT_EXPR)
+    {
+      align = get_object_alignment (expr);
+      if (align < BITS_PER_UNIT)
+       return false;
+      expr = TREE_OPERAND (expr, 0);
+      gcc_checking_assert (is_gimple_addressable (expr));
+      expr_ptr = build_fold_addr_expr (unshare_expr (expr));
+    }
   else
     {
       align = get_object_alignment (expr);