From: edlinger Date: Mon, 5 Jan 2015 20:26:44 +0000 (+0000) Subject: 2015-01-05 Bernd Edlinger X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ae41b1ebae14051d4a40e7741e5ac4dc57c1c24;p=thirdparty%2Fgcc.git 2015-01-05 Bernd Edlinger Enable experimental TSAN support for Ada. * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219197 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ba1d2bdcf6c..923cea3f0ff4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-01-05 Bernd Edlinger + + Enable experimental TSAN support for Ada. + * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR. + 2015-01-05 Jakub Jelinek PR tree-optimization/64494 diff --git a/gcc/tsan.c b/gcc/tsan.c index a5e8133bc3c1..1bc146f198d3 100644 --- a/gcc/tsan.c +++ b/gcc/tsan.c @@ -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);