All supported assemblers know lwsync, so we never need to generate this instruction using the .long escape hatch.
Tested on powerpc*-linux and on AIX (7.1 and 7.2). Committing. 2018-09-28 Segher Boessenkool <seg...@kernel.crashing.org> * config.in (HAVE_AS_LWSYNC): Delete. * config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete. * config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never do it as a .long . * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete. * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it as a .long . * configure.ac: Delete HAVE_AS_LWSYNC. * configure: Regenerate. --- gcc/config.in | 6 ------ gcc/config/powerpcspe/powerpcspe.h | 8 ------- gcc/config/powerpcspe/sync.md | 5 +---- gcc/config/rs6000/rs6000.h | 8 ------- gcc/config/rs6000/sync.md | 5 +---- gcc/configure | 43 -------------------------------------- gcc/configure.ac | 13 ------------ 7 files changed, 2 insertions(+), 86 deletions(-) diff --git a/gcc/config.in b/gcc/config.in index 48dfd23..1242326 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -528,12 +528,6 @@ #endif -/* Define if your assembler supports LWSYNC instructions. */ -#ifndef USED_FOR_TARGET -#undef HAVE_AS_LWSYNC -#endif - - /* Define if your assembler supports the -mabi option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_MABI_OPTION diff --git a/gcc/config/powerpcspe/powerpcspe.h b/gcc/config/powerpcspe/powerpcspe.h index a30fe34..2bb32c7 100644 --- a/gcc/config/powerpcspe/powerpcspe.h +++ b/gcc/config/powerpcspe/powerpcspe.h @@ -216,14 +216,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); #define TARGET_MFCRF 0 #endif -/* Define TARGET_LWSYNC_INSTRUCTION if the assembler knows about lwsync. If - not, generate the lwsync code as an integer constant. */ -#ifdef HAVE_AS_LWSYNC -#define TARGET_LWSYNC_INSTRUCTION 1 -#else -#define TARGET_LWSYNC_INSTRUCTION 0 -#endif - /* Define TARGET_TLS_MARKERS if the target assembler does not support arg markers for __tls_get_addr calls. */ #ifndef HAVE_AS_TLS_MARKERS diff --git a/gcc/config/powerpcspe/sync.md b/gcc/config/powerpcspe/sync.md index f4f7bc2..dff3932 100644 --- a/gcc/config/powerpcspe/sync.md +++ b/gcc/config/powerpcspe/sync.md @@ -91,13 +91,10 @@ (define_insn "*lwsync" (unspec:BLK [(match_dup 0)] UNSPEC_LWSYNC))] "" { - /* Some AIX assemblers don't accept lwsync, so we use a .long. */ if (TARGET_NO_LWSYNC) return "sync"; - else if (TARGET_LWSYNC_INSTRUCTION) - return "lwsync"; else - return ".long 0x7c2004ac"; + return "lwsync"; } [(set_attr "type" "sync")]) diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 232d442..d2fe795 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -219,14 +219,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); #define TARGET_MFCRF 0 #endif -/* Define TARGET_LWSYNC_INSTRUCTION if the assembler knows about lwsync. If - not, generate the lwsync code as an integer constant. */ -#ifdef HAVE_AS_LWSYNC -#define TARGET_LWSYNC_INSTRUCTION 1 -#else -#define TARGET_LWSYNC_INSTRUCTION 0 -#endif - /* Define TARGET_TLS_MARKERS if the target assembler does not support arg markers for __tls_get_addr calls. */ #ifndef HAVE_AS_TLS_MARKERS diff --git a/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md index ee98049..f18b6b7 100644 --- a/gcc/config/rs6000/sync.md +++ b/gcc/config/rs6000/sync.md @@ -91,13 +91,10 @@ (define_insn "*lwsync" (unspec:BLK [(match_dup 0)] UNSPEC_LWSYNC))] "" { - /* Some AIX assemblers don't accept lwsync, so we use a .long. */ if (TARGET_NO_LWSYNC) return "sync"; - else if (TARGET_LWSYNC_INSTRUCTION) - return "lwsync"; else - return ".long 0x7c2004ac"; + return "lwsync"; } [(set_attr "type" "sync")]) diff --git a/gcc/configure b/gcc/configure index f2d5a6f..5d2fd18 100755 --- a/gcc/configure +++ b/gcc/configure @@ -26723,49 +26723,6 @@ fi case $target in - *-*-aix*) conftest_s=' .csect .text[PR] - lwsync';; - *) conftest_s=' .text - lwsync';; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for lwsync support" >&5 -$as_echo_n "checking assembler for lwsync support... " >&6; } -if test "${gcc_cv_as_powerpc_lwsync+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - gcc_cv_as_powerpc_lwsync=no - if test $in_tree_gas = yes; then - if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 19 \) \* 1000 + 2` - then gcc_cv_as_powerpc_lwsync=yes -fi - elif test x$gcc_cv_as != x; then - $as_echo "$conftest_s" > conftest.s - if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 -o conftest.o conftest.s >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } - then - gcc_cv_as_powerpc_lwsync=yes - else - echo "configure: failed program was" >&5 - cat conftest.s >&5 - fi - rm -f conftest.o conftest.s - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_powerpc_lwsync" >&5 -$as_echo "$gcc_cv_as_powerpc_lwsync" >&6; } -if test $gcc_cv_as_powerpc_lwsync = yes; then - -$as_echo "#define HAVE_AS_LWSYNC 1" >>confdefs.h - -fi - - - case $target in *-*-aix*) conftest_s=' .machine "476" .csect .text[PR] dci 0';; diff --git a/gcc/configure.ac b/gcc/configure.ac index 470fde6..3c1e0ad 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -4558,19 +4558,6 @@ LCF0: [Define if your assembler supports VSX instructions.])]) case $target in - *-*-aix*) conftest_s=' .csect .text[[PR]] - lwsync';; - *) conftest_s=' .text - lwsync';; - esac - - gcc_GAS_CHECK_FEATURE([lwsync support], - gcc_cv_as_powerpc_lwsync, [2,19,2], -a32, - [$conftest_s],, - [AC_DEFINE(HAVE_AS_LWSYNC, 1, - [Define if your assembler supports LWSYNC instructions.])]) - - case $target in *-*-aix*) conftest_s=' .machine "476" .csect .text[[PR]] dci 0';; -- 1.8.3.1