mirror of git://gcc.gnu.org/git/gcc.git
builtins.c (compareAndSwapInt_builtin): Use flag_use_atomic_builtins.
2009-08-12 Andrew Haley <aph@redhat.com> * builtins.c (compareAndSwapInt_builtin): Use flag_use_atomic_builtins. (compareAndSwapLong_builtin): Likewise. (compareAndSwapObject_builtin): Likewise. * jvspec.c: Add flag_use_atomic_builtins. * gcj.texi: Likewise. * java-tree.h: Likewise. * lang.opt: Likewise. From-SVN: r150699
This commit is contained in:
parent
97804369a9
commit
4b462d7786
|
@ -1,3 +1,14 @@
|
|||
2009-08-12 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* builtins.c (compareAndSwapInt_builtin): Use
|
||||
flag_use_atomic_builtins.
|
||||
(compareAndSwapLong_builtin): Likewise.
|
||||
(compareAndSwapObject_builtin): Likewise.
|
||||
* jvspec.c: Add flag_use_atomic_builtins.
|
||||
* gcj.texi: Likewise.
|
||||
* java-tree.h: Likewise.
|
||||
* lang.opt: Likewise.
|
||||
|
||||
2009-08-11 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR debug/40990
|
||||
|
|
|
@ -318,7 +318,8 @@ compareAndSwapInt_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
|||
tree orig_call)
|
||||
{
|
||||
enum machine_mode mode = TYPE_MODE (int_type_node);
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing)
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing
|
||||
|| flag_use_atomic_builtins)
|
||||
{
|
||||
tree addr, stmt;
|
||||
UNMARSHAL5 (orig_call);
|
||||
|
@ -337,7 +338,12 @@ compareAndSwapLong_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
|||
tree orig_call)
|
||||
{
|
||||
enum machine_mode mode = TYPE_MODE (long_type_node);
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing)
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing
|
||||
|| (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (word_mode)
|
||||
&& flag_use_atomic_builtins))
|
||||
/* We don't trust flag_use_atomic_builtins for multi-word
|
||||
compareAndSwap. Some machines such as ARM have atomic libfuncs
|
||||
but not the multi-word versions. */
|
||||
{
|
||||
tree addr, stmt;
|
||||
UNMARSHAL5 (orig_call);
|
||||
|
@ -355,7 +361,8 @@ compareAndSwapObject_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
|||
tree orig_call)
|
||||
{
|
||||
enum machine_mode mode = TYPE_MODE (ptr_type_node);
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing)
|
||||
if (sync_compare_and_swap[mode] != CODE_FOR_nothing
|
||||
|| flag_use_atomic_builtins)
|
||||
{
|
||||
tree addr, stmt;
|
||||
int builtin;
|
||||
|
|
|
@ -607,6 +607,13 @@ On some systems it's necessary to insert inline checks whenever
|
|||
accessing an object via a reference. On other systems you won't need
|
||||
this because null pointer accesses are caught automatically by the
|
||||
processor.
|
||||
|
||||
@item -fuse-atomic-builtins
|
||||
On some systems, gcc can generate code for built-in atomic operations.
|
||||
Use this option to force gcj to use these builtins when compiling Java
|
||||
code. Where this capability is present it should be automatically
|
||||
detected, so you won't usually need to use this option.
|
||||
|
||||
@end table
|
||||
|
||||
@c man end
|
||||
|
|
|
@ -145,6 +145,9 @@ extern int flag_newer;
|
|||
/* When nonzero, call a library routine to do integer divisions. */
|
||||
extern int flag_use_divide_subroutine;
|
||||
|
||||
/* When nonzero, use atomic builtins. */
|
||||
extern int flag_use_atomic_builtins;
|
||||
|
||||
/* When nonzero, generate code for the Boehm GC. */
|
||||
extern int flag_use_boehm_gc;
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ static const char jvgenmain_spec[] =
|
|||
%<fclasspath* %<fCLASSPATH* %<fbootclasspath*\
|
||||
%<fextdirs*\
|
||||
%<fuse-divide-subroutine %<fno-use-divide-subroutine\
|
||||
%<fuse-atomic-builtins %<fno-use-atomic-builtins\
|
||||
%<fcheck-references %<fno-check-references\
|
||||
%<ffilelist-file %<fsaw-java-file %<fsource* %<ftarget*\
|
||||
%{f*} -fdollars-in-identifiers\
|
||||
|
|
|
@ -192,6 +192,10 @@ fuse-divide-subroutine
|
|||
Java Var(flag_use_divide_subroutine) Init(1)
|
||||
Call a library routine to do integer divisions
|
||||
|
||||
fuse-atomic-builtins
|
||||
Java Var(flag_use_atomic_builtins) Init(0)
|
||||
Generate code for built-in atomic operations
|
||||
|
||||
fbootstrap-classes
|
||||
Java Var(flag_bootstrap_classes)
|
||||
Generated should be loaded by bootstrap loader
|
||||
|
|
Loading…
Reference in New Issue