Commit 3be18e47 by Richard Henderson Committed by Richard Henderson

Revert * trans-mem.c (requires_barrier): Do not instrument thread local

	variables and emit save/restore for them.

From-SVN: r183538
parent dda6ecae
2012-01-26 Richard Henderson <rth@redhat.com>
Revert 2012-01-24 change:
* trans-mem.c (requires_barrier): Do not instrument thread local
variables and emit save/restore for them.
2012-01-25 Jakub Jelinek <jakub@redhat.com> 2012-01-25 Jakub Jelinek <jakub@redhat.com>
PR middle-end/51986 PR middle-end/51986
......
/* { dg-do compile } */
/* { dg-options "-fgnu-tm -O -fdump-tree-tmedge" } */
__thread int notshared = 0;
int shared = 0;
int main()
{
__transaction_atomic
{
notshared++;
shared++;
}
return notshared + shared;
}
/* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = notshared" 1 "tmedge" } } */
/* { dg-final { scan-tree-dump-times "notshared = tm_save" 1 "tmedge" } } */
/* { dg-final { cleanup-tree-dump "tmedge" } } */
/* Passes for transactional memory support. /* Passes for transactional memory support.
Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -1488,18 +1488,7 @@ requires_barrier (basic_block entry_block, tree x, gimple stmt) ...@@ -1488,18 +1488,7 @@ requires_barrier (basic_block entry_block, tree x, gimple stmt)
} }
if (is_global_var (x)) if (is_global_var (x))
{ return !TREE_READONLY (x);
if (DECL_THREAD_LOCAL_P (x))
goto thread_local;
if (DECL_HAS_VALUE_EXPR_P (x))
{
tree value = get_base_address (DECL_VALUE_EXPR (x));
if (value && DECL_P (value) && DECL_THREAD_LOCAL_P (value))
goto thread_local;
}
return !TREE_READONLY (x);
}
if (/* FIXME: This condition should actually go below in the if (/* FIXME: This condition should actually go below in the
tm_log_add() call, however is_call_clobbered() depends on tm_log_add() call, however is_call_clobbered() depends on
aliasing info which is not available during aliasing info which is not available during
...@@ -1509,14 +1498,17 @@ requires_barrier (basic_block entry_block, tree x, gimple stmt) ...@@ -1509,14 +1498,17 @@ requires_barrier (basic_block entry_block, tree x, gimple stmt)
lower_sequence_tm altogether. */ lower_sequence_tm altogether. */
needs_to_live_in_memory (x)) needs_to_live_in_memory (x))
return true; return true;
thread_local: else
/* For local memory that doesn't escape (aka thread private memory), {
we can either save the value at the beginning of the transaction and /* For local memory that doesn't escape (aka thread private
restore on restart, or call a tm function to dynamically save and memory), we can either save the value at the beginning of
restore on restart (ITM_L*). */ the transaction and restore on restart, or call a tm
if (stmt) function to dynamically save and restore on restart
tm_log_add (entry_block, orig, stmt); (ITM_L*). */
return false; if (stmt)
tm_log_add (entry_block, orig, stmt);
return false;
}
default: default:
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment