diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/sparc/linux64.h | 2 | ||||
-rw-r--r-- | gcc/config/sparc/t-linux64 | 7 | ||||
-rw-r--r-- | gcc/genmultilib | 56 |
4 files changed, 53 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77e8078ad3b..d306231610c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +1999-12-09 Jakub Jelinek <jakub@redhat.com> + + * config/sparc/linux64.h (TARGET_DEFAULT): Make -mapp-regs + default on linux64 again. + * config/sparc/t-linux64: Add mno-app-regs and non-medlow code + models for multilibing. + * genmultilib: Accept | as alternative separator within a set in + MULTILIB_OPTIONS. + Wed Dec 8 22:24:15 1999 Richard Henderson <rth@cygnus.com> * flow.c (count_basic_blocks): Don't add (use (const_int 0)) insns. diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index 556626b0565..1f84a249b6d 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -38,7 +38,7 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_DEFAULT #define TARGET_DEFAULT \ (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \ - + MASK_STACK_BIAS + MASK_EPILOGUE + MASK_FPU) + + MASK_STACK_BIAS + MASK_APP_REGS + MASK_EPILOGUE + MASK_FPU) #endif /* Output at beginning of assembler file. */ diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64 index 077cf69e719..efabfc7edc7 100644 --- a/gcc/config/sparc/t-linux64 +++ b/gcc/config/sparc/t-linux64 @@ -1,6 +1,7 @@ -MULTILIB_OPTIONS = m64/m32 -MULTILIB_DIRNAMES = 64 32 -MULTILIB_MATCHES = +MULTILIB_OPTIONS = m64/m32 mno-app-regs|mcmodel=medany +MULTILIB_DIRNAMES = 64 32 alt +MULTILIB_MATCHES = mcmodel?medany=mcmodel?medmid +MULTILIB_EXCEPTIONS = *m32/*medany *m32/*mno-app-regs LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib diff --git a/gcc/genmultilib b/gcc/genmultilib index 02206960400..b6dfdf39c4f 100644 --- a/gcc/genmultilib +++ b/gcc/genmultilib @@ -1,6 +1,6 @@ #!/bin/sh # Generates multilib.h. -# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. #This file is part of GNU CC. @@ -25,9 +25,14 @@ # The first argument is a list of sets of options. The elements in # the list are separated by spaces. Within an element, the options -# are separated by slashes. No leading dash is used on the options. -# Each option in a set is mutually incompatible with all other options +# are separated by slashes or pipes. No leading dash is used on the +# options. +# Each option in a set separated by slashes is mutually incompatible +# with all other options # in the set. +# Each option in a set separated by pipes will be used for the library +# compilation and any of the options in the set will be sufficient +# for it to be triggered. # The optional second argument is a list of subdirectory names. If # the second argument is non-empty, there must be as many elements in @@ -106,13 +111,23 @@ cat >tmpmultilib <<\EOF if [ "$#" != "0" ]; then first=$1 shift - for opt in `echo $first | sed -e 's|/| |'g`; do - echo ${initial}${opt}/ - done - ./tmpmultilib $@ - for opt in `echo $first | sed -e 's|/| |'g`; do - initial="${initial}${opt}/" ./tmpmultilib $@ - done + case "$first" in + *\|*) + all=${initial}`echo $first | sed -e 's_|_/_'g` + first=`echo $first | sed -e 's_|_ _'g` + echo ${all}/ + initial="${initial}${all}/" ./tmpmultilib $@ + ./tmpmultilib $first $@ | grep -v "^${all}" + ;; + *) + for opt in `echo $first | sed -e 's|/| |'g`; do + echo ${initial}${opt}/ + done + ./tmpmultilib $@ + for opt in `echo $first | sed -e 's|/| |'g`; do + initial="${initial}${opt}/" ./tmpmultilib $@ + done + esac fi EOF chmod +x tmpmultilib @@ -155,10 +170,17 @@ if [ -n "${dirnames}" ]; then set x ${dirnames} shift for set in ${options}; do - for opt in `echo ${set} | sed -e 's|/| |'g`; do - if [ "$1" != "${opt}" ]; then - todirnames="${todirnames} -e s|/${opt}/|/${1}/|g" - fi + for opts in `echo ${set} | sed -e 's|/| |'g`; do + patt="/" + for opt in `echo ${opts} | sed -e 's_|_ _'g`; do + if [ "$1" != "${opt}" ]; then + todirnames="${todirnames} -e s|/${opt}/|/${1}/|g" + patt="${patt}${1}/" + if [ "${patt}" != "/${1}/" ]; then + todirnames="${todirnames} -e s|${patt}|/${1}/|g" + fi + fi + done shift done done @@ -198,7 +220,7 @@ chmod +x tmpmultilib2 # Start with the current directory, which includes only negations. optout= for set in ${options}; do - for opt in `echo ${set} | sed -e 's|/| |'g`; do + for opt in `echo ${set} | sed -e 's_[/|]_ _g'`; do optout="${optout} !${opt}" done done @@ -223,7 +245,7 @@ for combo in ${combinations}; do # present, and negate each option that is not present. optout= for set in ${options}; do - setopts=`echo ${set} | sed -e 's|/| |g'` + setopts=`echo ${set} | sed -e 's_[/|]_ _g'` for opt in ${setopts}; do if expr "${combo} " : ".*/${opt}/.*" > /dev/null; then optout="${optout} ${opt}" @@ -254,7 +276,7 @@ for match in ${matches}; do echo "\"${r} ${l};\"," done for set in ${options}; do - for opt in `echo ${set} | sed -e 's|/| |'g`; do + for opt in `echo ${set} | sed -e 's_[/|]_ _'g`; do echo "\"${opt} ${opt};\"," done done |