| 571 | |
| 572 | dnl |
| 573 | dnl Check for __attribute__((always_inline)) |
| 574 | dnl |
| 575 | AC_DEFUN([MC_ATTRIBUTE_ALWAYS_INLINE_SUPPORTED], [ |
| 576 | AC_CACHE_CHECK([if __attribute__ ((always_inline)) supported ], mc_cv_attr_always_inline_supp, [ |
| 577 | ac_save_CFLAGS="$CFLAGS" |
| 578 | CFLAGS="$CFLAGS -Werror -fgnu89-inline" |
| 579 | AC_TRY_RUN([ |
| 580 | #define _ATTRIBUTE_ALWAYS_INLINE_ __attribute__((always_inline)) |
| 581 | |
| 582 | extern inline int _ATTRIBUTE_ALWAYS_INLINE_ test_alws_inln(void); |
| 583 | |
| 584 | inline int _ATTRIBUTE_ALWAYS_INLINE_ test_alws_inln(void) { |
| 585 | |
| 586 | int i, S = 65535; |
| 587 | for (i = 0; i < S; i++) { |
| 588 | i = ~(S^i); |
| 589 | } |
| 590 | return (i-S); |
| 591 | } |
| 592 | |
| 593 | |
| 594 | int main(void) { |
| 595 | |
| 596 | test_alws_inln(); |
| 597 | |
| 598 | return 0; |
| 599 | } |
| 600 | ], |
| 601 | [mc_cv_attr_always_inline_supp=yes], |
| 602 | [mc_cv_attr_always_inline_supp=no] |
| 603 | ) |
| 604 | CFLAGS="$ac_save_CFLAGS" |
| 605 | ]) |
| 606 | |
| 607 | if test "$mc_cv_attr_always_inline_supp" = yes; then |
| 608 | AC_DEFINE([_ATTRIBUTE_ALWAYS_INLINE_], [__attribute__((always_inline))], |
| 609 | [Define if __attribute__((always_inline)) supported]) |
| 610 | else |
| 611 | AC_DEFINE([_ATTRIBUTE_ALWAYS_INLINE_], [], [unsupported]) |
| 612 | fi |
| 613 | ]) |
| 614 | |
| 615 | |
| 616 | dnl |
| 617 | dnl Check for __attribute__((gnu_inline)) |
| 618 | dnl |
| 619 | AC_DEFUN([MC_GNU_INLINE_SUPPORTED], [ |
| 620 | AC_CACHE_CHECK([if (inline) supported ], mc_cv_inline_supp, [ |
| 621 | ac_save_CFLAGS="$CFLAGS" |
| 622 | CFLAGS="$CFLAGS -Werror" |
| 623 | AC_TRY_RUN([ |
| 624 | |
| 625 | extern inline int test_inln(void); |
| 626 | |
| 627 | inline int test_inln(void) { |
| 628 | |
| 629 | int i, S = 65535; |
| 630 | for (i = 0; i < S; i++) { |
| 631 | i = ~(S^i); |
| 632 | } |
| 633 | return (i-S); |
| 634 | } |
| 635 | |
| 636 | |
| 637 | int main(void) { |
| 638 | |
| 639 | test_inln(); |
| 640 | |
| 641 | return 0; |
| 642 | } |
| 643 | ], |
| 644 | [mc_cv_inline_supp=yes], |
| 645 | [mc_cv_inline_supp=no] |
| 646 | ) |
| 647 | CFLAGS="$ac_save_CFLAGS" |
| 648 | ]) |
| 649 | |
| 650 | if test "$mc_cv_inline_supp" = yes; then |
| 651 | AC_DEFINE([_GNU_INLINE_], [ inline ], [Define if inline supported]) |
| 652 | else |
| 653 | AC_CACHE_CHECK([if (inline) with -fgnu89-inline supported ], mc_cv_89inline_supp, [ |
| 654 | ac_save_CFLAGS="$CFLAGS -fgnu89-inline" |
| 655 | CFLAGS="$CFLAGS -Werror -fgnu89-inline" |
| 656 | AC_TRY_RUN([ |
| 657 | |
| 658 | extern inline int test_inln(void); |
| 659 | |
| 660 | inline int test_inln(void) { |
| 661 | |
| 662 | int i, S = 65535; |
| 663 | for (i = 0; i < S; i++) { |
| 664 | i = ~(S^i); |
| 665 | } |
| 666 | return (i-S); |
| 667 | } |
| 668 | |
| 669 | |
| 670 | int main(void) { |
| 671 | |
| 672 | test_inln(); |
| 673 | |
| 674 | return 0; |
| 675 | } |
| 676 | ], |
| 677 | [mc_cv_89inline_supp=yes], |
| 678 | [mc_cv_89inline_supp=no] |
| 679 | ) |
| 680 | CFLAGS="$ac_save_CFLAGS" |
| 681 | ]) |
| 682 | |
| 683 | if test "$mc_cv_89inline_supp" = yes; then |
| 684 | AC_DEFINE([_GNU_INLINE_], [ inline ], [Define if inline supported]) |
| 685 | else |
| 686 | AC_DEFINE([_GNU_INLINE_], [ ], [Define if inline unsupported]) |
| 687 | fi |
| 688 | fi |
| 689 | ]) |
| 690 | |