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>
|
2009-08-11 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
PR debug/40990
|
PR debug/40990
|
||||||
|
|
|
@ -318,7 +318,8 @@ compareAndSwapInt_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
||||||
tree orig_call)
|
tree orig_call)
|
||||||
{
|
{
|
||||||
enum machine_mode mode = TYPE_MODE (int_type_node);
|
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;
|
tree addr, stmt;
|
||||||
UNMARSHAL5 (orig_call);
|
UNMARSHAL5 (orig_call);
|
||||||
|
@ -337,7 +338,12 @@ compareAndSwapLong_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
||||||
tree orig_call)
|
tree orig_call)
|
||||||
{
|
{
|
||||||
enum machine_mode mode = TYPE_MODE (long_type_node);
|
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;
|
tree addr, stmt;
|
||||||
UNMARSHAL5 (orig_call);
|
UNMARSHAL5 (orig_call);
|
||||||
|
@ -355,7 +361,8 @@ compareAndSwapObject_builtin (tree method_return_type ATTRIBUTE_UNUSED,
|
||||||
tree orig_call)
|
tree orig_call)
|
||||||
{
|
{
|
||||||
enum machine_mode mode = TYPE_MODE (ptr_type_node);
|
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;
|
tree addr, stmt;
|
||||||
int builtin;
|
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
|
accessing an object via a reference. On other systems you won't need
|
||||||
this because null pointer accesses are caught automatically by the
|
this because null pointer accesses are caught automatically by the
|
||||||
processor.
|
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
|
@end table
|
||||||
|
|
||||||
@c man end
|
@c man end
|
||||||
|
|
|
@ -145,6 +145,9 @@ extern int flag_newer;
|
||||||
/* When nonzero, call a library routine to do integer divisions. */
|
/* When nonzero, call a library routine to do integer divisions. */
|
||||||
extern int flag_use_divide_subroutine;
|
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. */
|
/* When nonzero, generate code for the Boehm GC. */
|
||||||
extern int flag_use_boehm_gc;
|
extern int flag_use_boehm_gc;
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ static const char jvgenmain_spec[] =
|
||||||
%<fclasspath* %<fCLASSPATH* %<fbootclasspath*\
|
%<fclasspath* %<fCLASSPATH* %<fbootclasspath*\
|
||||||
%<fextdirs*\
|
%<fextdirs*\
|
||||||
%<fuse-divide-subroutine %<fno-use-divide-subroutine\
|
%<fuse-divide-subroutine %<fno-use-divide-subroutine\
|
||||||
|
%<fuse-atomic-builtins %<fno-use-atomic-builtins\
|
||||||
%<fcheck-references %<fno-check-references\
|
%<fcheck-references %<fno-check-references\
|
||||||
%<ffilelist-file %<fsaw-java-file %<fsource* %<ftarget*\
|
%<ffilelist-file %<fsaw-java-file %<fsource* %<ftarget*\
|
||||||
%{f*} -fdollars-in-identifiers\
|
%{f*} -fdollars-in-identifiers\
|
||||||
|
|
|
@ -192,6 +192,10 @@ fuse-divide-subroutine
|
||||||
Java Var(flag_use_divide_subroutine) Init(1)
|
Java Var(flag_use_divide_subroutine) Init(1)
|
||||||
Call a library routine to do integer divisions
|
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
|
fbootstrap-classes
|
||||||
Java Var(flag_bootstrap_classes)
|
Java Var(flag_bootstrap_classes)
|
||||||
Generated should be loaded by bootstrap loader
|
Generated should be loaded by bootstrap loader
|
||||||
|
|
Loading…
Reference in New Issue