From 7a82b6e22226a3ba162eae6dff7a68624544062e Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 1 Jun 2005 09:32:31 -0700 Subject: [PATCH] configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New. * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New. * config.in, configure: Rebuild. * config/alpha/alpha.c (print_operand): Add 'j'. * alpha.md (divmodsi_internal_er_1): Use it. (divmoddi_internal_er_1): Likewise. From-SVN: r100455 --- gcc/ChangeLog | 10 +++++++++- gcc/config.in | 3 +++ gcc/config/alpha/alpha.c | 15 +++++++++++++++ gcc/config/alpha/alpha.md | 8 ++++---- gcc/configure | 39 +++++++++++++++++++++++++++++++++++++++ gcc/configure.ac | 8 ++++++++ 6 files changed, 78 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 428514916a6e..4711afe5d618 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-06-01 Richard Henderson + + * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New. + * config.in, configure: Rebuild. + * config/alpha/alpha.c (print_operand): Add 'j'. + * alpha.md (divmodsi_internal_er_1): Use it. + (divmoddi_internal_er_1): Likewise. + 2005-05-31 Eric Botcazou * doc/install.texi (sparc-sun-solaris2*): Update note @@ -160,7 +168,7 @@ (m68hc11_split_move): Likewise. 2005-05-06 Bruce Korb - Joseph S. Myers + Joseph S. Myers * fixinc/inclhack.def: Correct backslashes * fixinc/fixincl.x: regen diff --git a/gcc/config.in b/gcc/config.in index 547dda029454..f7971907bea7 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -97,6 +97,9 @@ /* Define if your assembler supports the Sun syntax for cmov. */ #undef HAVE_AS_IX86_CMOV_SUN_SYNTAX +/* Define if your assembler supports the lituse_jsrdirect relocation. */ +#undef HAVE_AS_JSRDIRECT_RELOCS + /* Define if your assembler supports .sleb128 and .uleb128. */ #undef HAVE_AS_LEB128 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index fbaeabe5049a..4de6ac44ad24 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -5469,6 +5469,21 @@ print_operand (FILE *file, rtx x, int code) } break; + case 'j': + { + const char *lituse; + +#ifdef HAVE_AS_JSRDIRECT_RELOCS + lituse = "lituse_jsrdirect"; +#else + lituse = "lituse_jsr"; +#endif + + if (INTVAL (x) == 0) + abort (); + fprintf (file, "\t\t!%s!%d", lituse, (int) INTVAL (x)); + } + break; case 'r': /* If this operand is the constant zero, write it as "$31". */ if (GET_CODE (x) == REG) diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index c008e1bed28a..cca51ba181c8 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -967,7 +967,7 @@ (clobber (reg:DI 23)) (clobber (reg:DI 28))] "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS" - "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#" + "#" "&& reload_completed" [(parallel [(set (match_dup 0) (sign_extend:DI (match_dup 3))) @@ -1012,7 +1012,7 @@ (clobber (reg:DI 23)) (clobber (reg:DI 28))] "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS" - "jsr $23,($27),__%E3%J5" + "jsr $23,($27),__%E3%j5" [(set_attr "type" "jsr") (set_attr "length" "4")]) @@ -1036,7 +1036,7 @@ (clobber (reg:DI 23)) (clobber (reg:DI 28))] "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS" - "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#" + "#" "&& reload_completed" [(parallel [(set (match_dup 0) (match_dup 3)) (use (match_dup 0)) @@ -1080,7 +1080,7 @@ (clobber (reg:DI 23)) (clobber (reg:DI 28))] "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS" - "jsr $23,($27),__%E3%J5" + "jsr $23,($27),__%E3%j5" [(set_attr "type" "jsr") (set_attr "length" "4")]) diff --git a/gcc/configure b/gcc/configure index bd8a927d528b..91f9326d9b22 100755 --- a/gcc/configure +++ b/gcc/configure @@ -11090,6 +11090,45 @@ cat >>confdefs.h <<\_ACEOF #define HAVE_AS_EXPLICIT_RELOCS 1 _ACEOF +fi + echo "$as_me:$LINENO: checking assembler for jsrdirect relocation support" >&5 +echo $ECHO_N "checking assembler for jsrdirect relocation support... $ECHO_C" >&6 +if test "${gcc_cv_as_alpha_jsrdirect_relocs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gcc_cv_as_alpha_jsrdirect_relocs=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 16 \) \* 1000 + 90` + then gcc_cv_as_alpha_jsrdirect_relocs=yes +fi + elif test x$gcc_cv_as != x; then + echo ' .set nomacro + .text + ldq $27, a($29) !literal!1 + jsr $26, ($27), a !lituse_jsrdirect!1' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + gcc_cv_as_alpha_jsrdirect_relocs=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +echo "$as_me:$LINENO: result: $gcc_cv_as_alpha_jsrdirect_relocs" >&5 +echo "${ECHO_T}$gcc_cv_as_alpha_jsrdirect_relocs" >&6 +if test $gcc_cv_as_alpha_jsrdirect_relocs = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_AS_JSRDIRECT_RELOCS 1 +_ACEOF + fi ;; diff --git a/gcc/configure.ac b/gcc/configure.ac index 37f2dee5dbe9..d9151dddfc0c 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2327,6 +2327,14 @@ case "$target" in lda $29, 0($29) !gpdisp!3],, [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1, [Define if your assembler supports explicit relocations.])]) + gcc_GAS_CHECK_FEATURE([jsrdirect relocation support], + gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],, +[ .set nomacro + .text + ldq $27, a($29) !literal!1 + jsr $26, ($27), a !lituse_jsrdirect!1],, + [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1, + [Define if your assembler supports the lituse_jsrdirect relocation.])]) ;; cris-*-*) -- 2.47.2