Differences From Artifact [006f8182a1]:
- File
configure.ac
— part of check-in
[974b1b203f]
at
2014-05-05 00:14:06
on branch trunk
— Always build tests
However, they're only run when not cross-compiling or if a test launcher
is available. (user: js, size: 25602) [annotate] [blame] [check-ins using]
To Artifact [7027d6b582]:
- File
configure.ac
— part of check-in
[a199313c53]
at
2014-05-05 01:42:17
on branch trunk
— atomic.h: Prefer GCC builtins over ASM
The compiler can optimize the builtins better. For example, if the
result is not used, the compiler can use an instruction that does not
fetch the result and thus might generate more efficient code. (user: js, size: 25607) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
581 582 583 584 585 586 587 | ], [ AC_MSG_RESULT(no) ]) ]) atomic_ops="none" | < < < < < < < < < < < < < | > > > > > > > > > > > > > > | 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 | ], [ AC_MSG_RESULT(no) ]) ]) atomic_ops="none" AC_MSG_CHECKING(whether __sync_* works) AC_TRY_LINK([#include <stdint.h>], [ int32_t i, j; if (__sync_add_and_fetch(&i, 1)) j = __sync_sub_and_fetch(&i, 1); while (!__sync_bool_compare_and_swap(&i, 0, 1)); ], [ AC_MSG_RESULT(yes) atomic_ops="gcc builtins" AC_DEFINE(OF_HAVE_GCC_ATOMIC_OPS, 1, [Whether gcc atomic operations are available]) ], [ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether we have an atomic ops assembly implementation) AC_EGREP_CPP(yes, [ #if defined(__GNUC__) && (defined(__i386__) || \ defined(__x86_64__) || defined(__amd64__)) yes #endif ], [ AC_MSG_RESULT(yes) test x"$atomic_ops" = x"none" && \ atomic_ops="assembly implementation" ], [ AC_MSG_RESULT(no) ]) AC_CHECK_HEADER(libkern/OSAtomic.h, [ test x"$atomic_ops" = x"none" && atomic_ops="libkern/OSAtomic.h" AC_DEFINE(OF_HAVE_OSATOMIC, 1, [Whether we have libkern/OSAtomic.h]) ]) ], [ |
︙ | ︙ |