diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2000-06-05 22:18:08 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2000-06-05 22:18:08 +0000 |
commit | 1cc0c12429e74c09f75c778f6ab729133f4f7115 (patch) | |
tree | 4f6e375a31fb41e453f75cdb7b730ec068b8dbda /gnu/egcs/gcc/config | |
parent | cb93c551e9ce9846b9f004a0eed7991d15b8b260 (diff) |
Synch with 2.95.3 (pre-rel)
Diffstat (limited to 'gnu/egcs/gcc/config')
-rw-r--r-- | gnu/egcs/gcc/config/alpha/linux-elf.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/arm/arm.md | 3 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/arm/linux-elf.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/elfos.h | 5 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/h8300/h8300.md | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/i386/freebsd-elf.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/i386/sol2gas.h | 6 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/linux.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/m68k/mot3300-crt0.S | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/m88k/dgux.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/rs6000/eabi-ctors.c | 12 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/rs6000/linux.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/rs6000/rs6000.md | 142 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/sparc/linux.h | 2 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/sparc/sparc.md | 4 | ||||
-rw-r--r-- | gnu/egcs/gcc/config/v850/v850.c | 6 |
17 files changed, 129 insertions, 69 deletions
diff --git a/gnu/egcs/gcc/config/alpha/linux-elf.h b/gnu/egcs/gcc/config/alpha/linux-elf.h index fc07127d757..50bf2307d5b 100644 --- a/gnu/egcs/gcc/config/alpha/linux-elf.h +++ b/gnu/egcs/gcc/config/alpha/linux-elf.h @@ -38,7 +38,7 @@ Boston, MA 02111-1307, USA. */ #ifndef USE_GNULIBC_1 #undef DEFAULT_VTABLE_THUNKS -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 #endif #ifndef USE_GNULIBC_1 diff --git a/gnu/egcs/gcc/config/arm/arm.md b/gnu/egcs/gcc/config/arm/arm.md index 16e66181ead..7ccbb5cb2d1 100644 --- a/gnu/egcs/gcc/config/arm/arm.md +++ b/gnu/egcs/gcc/config/arm/arm.md @@ -1837,7 +1837,8 @@ (define_insn "negdi2" [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") - (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0")))] + (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0"))) + (clobber (reg:CC 24))] "" "rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0" [(set_attr "conds" "clob") diff --git a/gnu/egcs/gcc/config/arm/linux-elf.h b/gnu/egcs/gcc/config/arm/linux-elf.h index e5b4de1c13b..956ecba5348 100644 --- a/gnu/egcs/gcc/config/arm/linux-elf.h +++ b/gnu/egcs/gcc/config/arm/linux-elf.h @@ -39,7 +39,7 @@ Boston, MA 02111-1307, USA. */ /* This was defined in linux.h. Define it here also. */ #undef DEFAULT_VTABLE_THUNKS -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 /* Handle #pragma weak and #pragma pack. */ #define HANDLE_SYSV_PRAGMA diff --git a/gnu/egcs/gcc/config/elfos.h b/gnu/egcs/gcc/config/elfos.h index 6c107311fd7..d4826159198 100644 --- a/gnu/egcs/gcc/config/elfos.h +++ b/gnu/egcs/gcc/config/elfos.h @@ -1,6 +1,6 @@ /* elfos.h -- operating system specific defines to be used when targeting GCC for some generic ELF system - Copyright (C) 1991, 1994, 1995, 1999 Free Software Foundation, Inc. + Copyright (C) 1991, 1994, 1995, 1999, 2000 Free Software Foundation, Inc. Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com). This file is part of GNU CC. @@ -426,7 +426,8 @@ do { \ else \ data_section (); \ } \ - else if (TREE_CODE (DECL) == VAR_DECL) \ + else if (TREE_CODE (DECL) == VAR_DECL \ + || TREE_CODE (DECL) == CONSTRUCTOR) \ { \ if ((flag_pic && RELOC) \ || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \ diff --git a/gnu/egcs/gcc/config/h8300/h8300.md b/gnu/egcs/gcc/config/h8300/h8300.md index 7e49af5ef75..da6519300e9 100644 --- a/gnu/egcs/gcc/config/h8300/h8300.md +++ b/gnu/egcs/gcc/config/h8300/h8300.md @@ -2292,7 +2292,7 @@ (define_peephole [(set (match_operand:HI 1 "register_operand" "") - (plus:HI (match_dup 1) (const_int -1))) + (plus:HI (match_dup 1) (const_int -2))) (set (mem:HI (match_dup 1)) (match_operand:HI 0 "register_operand" ""))] "REGNO(operands[1]) != REGNO(operands[0])" diff --git a/gnu/egcs/gcc/config/i386/freebsd-elf.h b/gnu/egcs/gcc/config/i386/freebsd-elf.h index e97d4ca07bb..8c907bf9d1e 100644 --- a/gnu/egcs/gcc/config/i386/freebsd-elf.h +++ b/gnu/egcs/gcc/config/i386/freebsd-elf.h @@ -37,7 +37,7 @@ Boston, MA 02111-1307, USA. */ /* Use more efficient ``thunks'' to implement C++ vtables. */ #undef DEFAULT_VTABLE_THUNKS -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 /* Override the default comment-starter of "/". */ #undef ASM_COMMENT_START diff --git a/gnu/egcs/gcc/config/i386/sol2gas.h b/gnu/egcs/gcc/config/i386/sol2gas.h index 7f2c9629d7c..558183aecd5 100644 --- a/gnu/egcs/gcc/config/i386/sol2gas.h +++ b/gnu/egcs/gcc/config/i386/sol2gas.h @@ -4,8 +4,6 @@ Copyright (C) 1999 Free Software Foundation, Inc. */ -#ifndef GAS_DOES_NOT_SUPPORT_MINUS_S -#define GAS_DOES_NOT_SUPPORT_MINUS_S 1 +#ifndef GAS_REJECTS_MINUS_S +#define GAS_REJECTS_MINUS_S 1 #endif - -#include "i386/sol2.h" diff --git a/gnu/egcs/gcc/config/linux.h b/gnu/egcs/gcc/config/linux.h index b619d01cdf5..46ce8988223 100644 --- a/gnu/egcs/gcc/config/linux.h +++ b/gnu/egcs/gcc/config/linux.h @@ -89,7 +89,7 @@ Boston, MA 02111-1307, USA. */ #ifndef USE_GNULIBC_1 #undef DEFAULT_VTABLE_THUNKS -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 #endif #undef LIB_SPEC diff --git a/gnu/egcs/gcc/config/m68k/mot3300-crt0.S b/gnu/egcs/gcc/config/m68k/mot3300-crt0.S index 489261421b1..8a46993c615 100644 --- a/gnu/egcs/gcc/config/m68k/mot3300-crt0.S +++ b/gnu/egcs/gcc/config/m68k/mot3300-crt0.S @@ -93,6 +93,6 @@ __stop_monitor: COMM splimit%,4 COMM environ,4 - IDENT ("$Id: mot3300-crt0.S,v 1.1.1.2 1999/08/23 20:30:20 espie Exp $") + IDENT ("$Id: mot3300-crt0.S,v 1.1.1.3 2000/06/05 22:17:14 espie Exp $") IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)") IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)") diff --git a/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S b/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S index 0d24fbf4b66..fb81a14318c 100644 --- a/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S +++ b/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S @@ -137,6 +137,6 @@ LOCAL_LABEL(endofstart): COMM environ,4 COMM _countbase,4 - IDENT ("$Id: mot3300Mcrt0.S,v 1.1.1.2 1999/08/23 20:30:20 espie Exp $") + IDENT ("$Id: mot3300Mcrt0.S,v 1.1.1.3 2000/06/05 22:17:14 espie Exp $") IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)") IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)") diff --git a/gnu/egcs/gcc/config/m88k/dgux.h b/gnu/egcs/gcc/config/m88k/dgux.h index de5755d4570..214058ae43a 100644 --- a/gnu/egcs/gcc/config/m88k/dgux.h +++ b/gnu/egcs/gcc/config/m88k/dgux.h @@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */ (TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG) #ifndef VERSION_INFO2 -#define VERSION_INFO2 "$Revision: 1.1.1.2 $" +#define VERSION_INFO2 "$Revision: 1.1.1.3 $" #endif #ifndef NO_BUGS #define AS_BUG_IMMEDIATE_LABEL diff --git a/gnu/egcs/gcc/config/rs6000/eabi-ctors.c b/gnu/egcs/gcc/config/rs6000/eabi-ctors.c index ebc23ded35c..2ff3c1abc61 100644 --- a/gnu/egcs/gcc/config/rs6000/eabi-ctors.c +++ b/gnu/egcs/gcc/config/rs6000/eabi-ctors.c @@ -58,14 +58,14 @@ void (*__atexit)(func_ptr); void __do_global_ctors (void) { - func_ptr *ptr = &__CTOR_LIST__[0]; - func_ptr *end = &__CTOR_END__[0]; + func_ptr *ptr = &__CTOR_END__[0] - 1; + func_ptr *start = &__CTOR_LIST__[0]; if (__atexit) __atexit (__do_global_dtors); /* Call the constructors collected in the .ctors section. */ - for ( ; ptr != end; ptr++) + for ( ; ptr >= start; ptr--) if (*ptr) (*ptr)(); @@ -77,15 +77,15 @@ __do_global_ctors (void) void __do_global_dtors (void) { - func_ptr *ptr = &__DTOR_END__[0] - 1; - func_ptr *start = &__DTOR_LIST__[0]; + func_ptr *ptr = &__DTOR_LIST__[0]; + func_ptr *end = &__DTOR_END__[0]; /* Call the termination function in the .fini section. */ (*fini_ptr) (); /* Call the destructors collected in the .dtors section. Run the destructors in reverse order. */ - for ( ; ptr >= start; ptr--) + for ( ; ptr < end; ptr++) if (*ptr) (*ptr)(); } diff --git a/gnu/egcs/gcc/config/rs6000/linux.h b/gnu/egcs/gcc/config/rs6000/linux.h index c2a04fa85b1..8210076245a 100644 --- a/gnu/egcs/gcc/config/rs6000/linux.h +++ b/gnu/egcs/gcc/config/rs6000/linux.h @@ -69,7 +69,7 @@ Boston, MA 02111-1307, USA. */ #undef DEFAULT_VTABLE_THUNKS #ifndef USE_GNULIBC_1 -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 #endif #undef JUMP_TABLES_IN_TEXT_SECTION diff --git a/gnu/egcs/gcc/config/rs6000/rs6000.md b/gnu/egcs/gcc/config/rs6000/rs6000.md index 9b3c4306f77..0211728fa19 100644 --- a/gnu/egcs/gcc/config/rs6000/rs6000.md +++ b/gnu/egcs/gcc/config/rs6000/rs6000.md @@ -3042,16 +3042,14 @@ "TARGET_POWER" "@ sle %0,%1,%2 - {sli|slwi} %0,%1,%h2" - [(set_attr "length" "8")]) + {sli|slwi} %0,%1,%h2") (define_insn "ashlsi3_no_power" [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r") (match_operand:SI 2 "reg_or_cint_operand" "ri")))] "! TARGET_POWER" - "{sl|slw}%I2 %0,%1,%h2" - [(set_attr "length" "8")]) + "{sl|slw}%I2 %0,%1,%h2") (define_insn "" [(set (match_operand:CC 0 "cc_reg_operand" "=x,x") @@ -5494,12 +5492,12 @@ (define_expand "iordi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (ior:DI (match_operand:DI 1 "gpc_reg_operand" "") - (match_operand:DI 2 "reg_or_cint_operand" "")))] + (match_operand:DI 2 "reg_or_u_cint_operand" "")))] "TARGET_POWERPC64" " { if (GET_CODE (operands[2]) == CONST_INT - && ! logical_operand (operands[2], DImode)) + && ! logical_u_operand (operands[2], DImode)) { HOST_WIDE_INT value = INTVAL (operands[2]); rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) @@ -5510,12 +5508,26 @@ emit_insn (gen_iordi3 (operands[0], tmp, GEN_INT (value & 0xffff))); DONE; } + else if (GET_CODE (operands[2]) == CONST_DOUBLE + && ! logical_u_operand (operands[2], DImode)) + { + HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]); + rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) + ? operands[0] : gen_reg_rtx (DImode)); + + emit_insn (gen_iordi3 (tmp, operands[1], + immed_double_const (value + & (~ (HOST_WIDE_INT) 0xffff), + 0, DImode))); + emit_insn (gen_iordi3 (operands[0], tmp, GEN_INT (value & 0xffff))); + DONE; + } }") (define_insn "*iordi3_internal1" [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r") (ior:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r") - (match_operand:DI 2 "logical_operand" "r,K,J")))] + (match_operand:DI 2 "logical_u_operand" "r,K,JF")))] "TARGET_POWERPC64" "@ or %0,%1,%2 @@ -5549,25 +5561,36 @@ (define_split [(set (match_operand:DI 0 "gpc_reg_operand" "") (ior:DI (match_operand:DI 1 "gpc_reg_operand" "") - (match_operand:DI 2 "non_logical_cint_operand" "")))] + (match_operand:DI 2 "non_logical_u_cint_operand" "")))] "TARGET_POWERPC64" [(set (match_dup 0) (ior:DI (match_dup 1) (match_dup 3))) (set (match_dup 0) (ior:DI (match_dup 0) (match_dup 4)))] " { - operands[3] = GEN_INT (INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff)); - operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff); + if (GET_CODE (operands[2]) == CONST_DOUBLE) + { + HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]); + operands[3] = immed_double_const (value & (~ (HOST_WIDE_INT) 0xffff), + 0, DImode); + operands[4] = GEN_INT (value & 0xffff); + } + else + { + operands[3] = GEN_INT (INTVAL (operands[2]) + & (~ (HOST_WIDE_INT) 0xffff)); + operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff); + } }") (define_expand "xordi3" [(set (match_operand:DI 0 "gpc_reg_operand" "") (xor:DI (match_operand:DI 1 "gpc_reg_operand" "") - (match_operand:DI 2 "reg_or_cint_operand" "")))] + (match_operand:DI 2 "reg_or_u_cint_operand" "")))] "TARGET_POWERPC64" " { if (GET_CODE (operands[2]) == CONST_INT - && ! logical_operand (operands[2], DImode)) + && ! logical_u_operand (operands[2], DImode)) { HOST_WIDE_INT value = INTVAL (operands[2]); rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) @@ -5578,12 +5601,26 @@ emit_insn (gen_xordi3 (operands[0], tmp, GEN_INT (value & 0xffff))); DONE; } + else if (GET_CODE (operands[2]) == CONST_DOUBLE + && ! logical_u_operand (operands[2], DImode)) + { + HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]); + rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1])) + ? operands[0] : gen_reg_rtx (DImode)); + + emit_insn (gen_xordi3 (tmp, operands[1], + immed_double_const (value + & (~ (HOST_WIDE_INT) 0xffff), + 0, DImode))); + emit_insn (gen_xordi3 (operands[0], tmp, GEN_INT (value & 0xffff))); + DONE; + } }") (define_insn "*xordi3_internal1" [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r") (xor:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r") - (match_operand:DI 2 "logical_operand" "r,K,J")))] + (match_operand:DI 2 "logical_u_operand" "r,K,JF")))] "TARGET_POWERPC64" "@ xor %0,%1,%2 @@ -5617,14 +5654,25 @@ (define_split [(set (match_operand:DI 0 "gpc_reg_operand" "") (xor:DI (match_operand:DI 1 "gpc_reg_operand" "") - (match_operand:DI 2 "non_logical_cint_operand" "")))] + (match_operand:DI 2 "non_logical_u_cint_operand" "")))] "TARGET_POWERPC64" [(set (match_dup 0) (xor:DI (match_dup 1) (match_dup 3))) (set (match_dup 0) (xor:DI (match_dup 0) (match_dup 4)))] " { - operands[3] = GEN_INT (INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff)); - operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff); + if (GET_CODE (operands[2]) == CONST_DOUBLE) + { + HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]); + operands[3] = immed_double_const (value & (~ (HOST_WIDE_INT) 0xffff), + 0, DImode); + operands[4] = GEN_INT (value & 0xffff); + } + else + { + operands[3] = GEN_INT (INTVAL (operands[2]) + & (~ (HOST_WIDE_INT) 0xffff)); + operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff); + } }") (define_insn "*eqvdi3_internal1" @@ -6620,13 +6668,14 @@ (set (match_dup 3) (match_dup 1))] " { + HOST_WIDE_INT value = INTVAL (operands[1]); operands[2] = gen_rtx_SUBREG (SImode, operands[0], WORDS_BIG_ENDIAN == 0); operands[3] = gen_rtx_SUBREG (SImode, operands[0], WORDS_BIG_ENDIAN != 0); #if HOST_BITS_PER_WIDE_INT == 32 - operands[4] = (INTVAL (operands[1]) & 0x80000000) ? constm1_rtx : const0_rtx; + operands[4] = (value & 0x80000000) ? constm1_rtx : const0_rtx; #else - operands[4] = GEN_INT ((HOST_WIDE_INT) INTVAL (operands[1]) >> 32); - operands[1] = GEN_INT (INTVAL (operands[1]) & 0xffffffff); + operands[4] = GEN_INT (value >> 32); + operands[1] = GEN_INT ((value & 0x7fffffff) - (value & 0x80000000)); #endif }") @@ -6763,7 +6812,8 @@ (define_split [(set (match_operand:DI 0 "gpc_reg_operand" "") (match_operand:DI 1 "const_double_operand" ""))] - "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1" + "HOST_BITS_PER_WIDE_INT == 32 && TARGET_POWERPC64 + && num_insns_constant (operands[1], DImode) > 1" [(set (match_dup 0) (match_dup 2)) (set (match_dup 0) @@ -6774,29 +6824,40 @@ (match_dup 3)))] " { - HOST_WIDE_INT low; - HOST_WIDE_INT high; - if (GET_CODE (operands[1]) == CONST_DOUBLE) { - low = CONST_DOUBLE_LOW (operands[1]); - high = CONST_DOUBLE_HIGH (operands[1]); + operands[2] = GEN_INT (CONST_DOUBLE_HIGH (operands[1])); + operands[3] = immed_double_const (CONST_DOUBLE_LOW (operands[1]), + 0, DImode); } else -#if HOST_BITS_PER_WIDE_INT == 32 - { - low = INTVAL (operands[1]); - high = (low < 0) ? ~0 : 0; - } -#else { - low = INTVAL (operands[1]) & 0xffffffff; - high = (HOST_WIDE_INT) INTVAL (operands[1]) >> 32; + HOST_WIDE_INT value = INTVAL (operands[1]); + operands[2] = (value & 0x80000000) ? constm1_rtx : const0_rtx; + operands[3] = immed_double_const (value, 0, DImode); } -#endif +}") - operands[2] = GEN_INT (high); - operands[3] = GEN_INT (low); +(define_split + [(set (match_operand:DI 0 "gpc_reg_operand" "") + (match_operand:DI 1 "const_int_operand" ""))] + "HOST_BITS_PER_WIDE_INT != 32 && TARGET_POWERPC64 + && num_insns_constant (operands[1], DImode) > 1" + [(set (match_dup 0) + (match_dup 2)) + (set (match_dup 0) + (ashift:DI (match_dup 0) + (const_int 32))) + (set (match_dup 0) + (ior:DI (match_dup 0) + (match_dup 3)))] + " +{ +#if HOST_BITS_PER_WIDE_INT != 32 + HOST_WIDE_INT value = INTVAL (operands[1]); + operands[2] = GEN_INT (value >> 32); + operands[3] = GEN_INT ((value & 0x7fffffff) - (value & 0x80000000)); +#endif }") (define_insn "" @@ -7804,7 +7865,8 @@ rs6000_output_load_toc_table (asm_out_file, 30); return \"\"; }" - [(set_attr "type" "load")]) + [(set_attr "type" "load") + (set_attr "length" "24")]) ;; A function pointer under AIX is a pointer to a data area whose first word ;; contains the actual address of the function, whose second word contains a @@ -8784,7 +8846,7 @@ (define_insn "" [(set (match_operand:CCUNS 0 "cc_reg_operand" "=y") (compare:CCUNS (match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "reg_or_u_short_operand" "rI")))] + (match_operand:SI 2 "reg_or_u_short_operand" "rK")))] "" "{cmpl%I2|cmplw%I2} %0,%1,%W2" [(set_attr "type" "compare")]) @@ -8792,7 +8854,7 @@ (define_insn "" [(set (match_operand:CCUNS 0 "cc_reg_operand" "=y") (compare:CCUNS (match_operand:DI 1 "gpc_reg_operand" "r") - (match_operand:DI 2 "reg_or_u_short_operand" "rI")))] + (match_operand:DI 2 "reg_or_u_short_operand" "rK")))] "" "cmpld%I2 %0,%1,%W2" [(set_attr "type" "compare")]) @@ -9161,7 +9223,7 @@ (lshiftrt:SI (neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r"))) (const_int 31))) (clobber (match_scratch:SI 2 "=&r"))] - "! TARGET_POWER" + "! TARGET_POWER && ! TARGET_POWERPC64" "{ai|addic} %2,%1,-1\;{sfe|subfe} %0,%2,%1" [(set_attr "length" "8")]) diff --git a/gnu/egcs/gcc/config/sparc/linux.h b/gnu/egcs/gcc/config/sparc/linux.h index d967b01ebe3..40694908b68 100644 --- a/gnu/egcs/gcc/config/sparc/linux.h +++ b/gnu/egcs/gcc/config/sparc/linux.h @@ -37,7 +37,7 @@ Boston, MA 02111-1307, USA. */ #ifndef USE_GNULIBC_1 #undef DEFAULT_VTABLE_THUNKS -#define DEFAULT_VTABLE_THUNKS 1 +#define DEFAULT_VTABLE_THUNKS 2 #endif /* Use stabs instead of DWARF debug format. */ diff --git a/gnu/egcs/gcc/config/sparc/sparc.md b/gnu/egcs/gcc/config/sparc/sparc.md index cb008b169b1..aafb7a63ea4 100644 --- a/gnu/egcs/gcc/config/sparc/sparc.md +++ b/gnu/egcs/gcc/config/sparc/sparc.md @@ -7355,7 +7355,7 @@ gen_rtvec (3, gen_rtx_SET (VOIDmode, pc_rtx, XEXP (operands[0], 0)), - GEN_INT (INTVAL (operands[3]) & 0xfff), + operands[3], gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15))))); else @@ -7387,7 +7387,7 @@ emit_call_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (3, gen_rtx_CALL (VOIDmode, fn_rtx, nregs_rtx), - GEN_INT (INTVAL (operands[3]) & 0xfff), + operands[3], gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15))))); else diff --git a/gnu/egcs/gcc/config/v850/v850.c b/gnu/egcs/gcc/config/v850/v850.c index 15867ac4892..66b52d9580a 100644 --- a/gnu/egcs/gcc/config/v850/v850.c +++ b/gnu/egcs/gcc/config/v850/v850.c @@ -1864,10 +1864,8 @@ Saved %d bytes via epilogue function (%d vs. %d) in function %s\n", else init_stack_free = actual_fsize; - /* Deallocate the rest of the stack if it is > 32K or if extra stack - was allocated for an interrupt handler that makes a call. */ - if (actual_fsize > init_stack_free - || (interrupt_handler && actual_fsize)) + /* Deallocate the rest of the stack if it is > 32K. */ + if (actual_fsize > init_stack_free) { int diff; |