Commit Graph

208 Commits

Author SHA1 Message Date
thorpej
4c30492b6c * Rename ARM_FLAG_ATPCS_STACK_ALIGN to ARM_FLAG_ATPCS.
* Rename TARGET_ATPCS_STACK_ALIGN to TARGET_ATPCS.
* Move APTCS aggregate return rules to arm_return_in_memory(), conditional
  on TARGET_ATPCS, and make it also return true for variable-sized aggregates.
2002-08-28 17:33:54 +00:00
mycroft
c38b03a8c7 Fix SELECT_SECTION() so that C++ run-time type info constructors do not go in
.rodata on PIC systems, which was causing text relocations (and associated
performance loss).
2002-08-28 14:05:58 +00:00
thorpej
97f9d76ce8 arm.c, arm.h:
* Declare arm_arch5 and arm_arch5e.  Set arm_arch5 for if -mcpu=arm10tdmi,
  -mcpu=arm1020t, -mcpu=xscale, -march=armv5, -march=armv5e, -march=armv5te.
  Set arm_arch5e for -mcpu=xscale, -march=armv5e, -march=armv5te.

arm.md:

* Define the "clz" insn for arm_arch5.
* Define an "ffssi2" expander for arm_arch5 which uses "clz".
2002-08-21 01:27:14 +00:00
thorpej
0414c14b05 Changes to better support XScale, round 1, back-ported from GCC 3.2.
The GCC ChangeLog does not have a complete description to quote here,
so:

arm.c:

* arm_override_options(): Set arm_is_scale according to the the
  -mcpu=xscale option.  Set arm_constant_limit to 2 if arm_is_xscale.
* arm_adjust_cost(): If arm_is_xscale, account for stalls that can
  occur due to shifted operands.
* arm_gen_load_multiple(): Account for the cost of ldm vs. ldr if
  arm_is_xscale.
* arm_gen_store_multiple(): Likewise for stm vs. str.

arm.h:

* CONSTANT_ALIGNMENT(): Use a constant alignment factor of 2 if
  arm_is_xscale.
* MOVE_RATIO: Set to 4 if arm_is_xscale.

arm.md:

* Add XScale scheduling parameters.
* Define a "shift" attribute (used by arm_adjust_cost()) and give it
  to the appropriate operands on andsi_not_shiftsi_si, *shiftsi3,
  *shiftsi3_compare0, *shiftsi3_compare0_scratch, *notsi_shiftsi,
  *notsi_shiftsi_compare0, *not_shiftsi_compare0_scratch,
  abssi2, *neg_abssi2, extendsidi2, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
  *cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
  *arith_shiftsi_compare0_scratch, *sub_shiftsi, *sub_shiftsi_compare0,
  *sub_shiftsi_compare0_scratch, *if_shift_move, *if_move_shift,
  and *if_shift_shift.
2002-08-20 23:46:44 +00:00
thorpej
e83b2dfbd8 Define __ARMEL__ if little-endian, as gcc 3.x does. 2002-08-07 03:35:51 +00:00
thorpej
7a6acd854a * Add -march=armv5, -march=armv5t, -march=armv5te, which are internally
treated like -march=armv4t, but which generate __ARM_ARCH_5__,
  __ARM_ARCH_5T__, and __ARM_ARCH_5TE__ defines, respecitively.
* Add -mcpu=xscale, which is internally treated like -mcpu=strongarm,
  but which generates __ARM_ARCH_5TE__ and __XSCALE__ defines.

These command-line options and definitions are consistent with gcc 3.x,
and allow NetBSD Makefiles to use them in a forward-compatible way, and
also give hand-tuned source code (e.g. assembly) a chance of tuning for
XScale.
2002-08-07 03:27:39 +00:00
thorpej
b767b60c60 Add "(NetBSD nb3)" to the version string. 2002-07-15 15:44:53 +00:00
aymeric
1f11daa1ee Bump to nb3, following revision 1.2 of expr.c 2002-07-15 15:12:48 +00:00
aymeric
169b0eb038 Bring in diff from 1.144.4.10 to 1.144.4.11, from the gcc CVS repository.
This fixes (at least) broken compilation of xkbcomp with -O2 on powerpc.

ChangeLog entry:
2001-05-17  Bernd Schmidt  <bernds@redhat.com>

        * expr.c (protect_from_queue): Protect against subsequent calls to
        emit_queue.
        (expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being
        too clever.

CVS log entry:
revision 1.144.4.11
date: 2001/05/17 17:01:06;  author: bernds;  state: Exp;  lines: +10 -3
Fix queueing-related bugs
2002-07-14 13:55:38 +00:00
itohy
8f0b7653ca a.out prologue / epilogue (from in-tree egcs) 2002-07-06 13:20:08 +00:00
itohy
b2f2b1cb44 Correct section / alignment rule for a.out. From in-tree egcs. 2002-07-06 13:19:00 +00:00
itohy
bd6a4107d8 i386 uses _GLOBAL_OFFSET_TABLE_, not __GLOBAL_OFFSET_TABLE_, for GOT symbol
even if on a.out compiler.
Yes this is weird, but it is the traditional behavior.
2002-07-06 13:17:18 +00:00
thorpej
5efacd42c4 Add an armeb-*-netbsdelf* target (big-endian ARM). 2002-05-20 14:24:22 +00:00
thorpej
cfbb24ed86 Add a -Wno-format-zero-length switch that does nothing, for forward
compatibility with GCC 3.2.
2002-05-18 18:53:44 +00:00
simonb
4ae3a2264e Pull in (part of) rev 1.117 from gcc master sources:
(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
	Cast switch operand of size to int.

Fixes one 32-bit host cross-compile problem, but still doesn't work...
2002-05-06 02:12:30 +00:00
rearnsha
9c261eac77 Disable the following patterns: addsi3_compare_op1, addsi3_compare_op2,
compare_addsi2_op0 & compare_addsi2_op1.  From the comment I've just
inserted:
;; XXX RWE: The reload pass of GCC-2.95 makes a mess of these if one of the
;; arguments is, or is directly derived from, an eliminable register.  In
;; that case reload will substitue into the PLUS and then canonicalize it
;; without regard to the the match_dup parts.  Since these are rare, I've
;; disabled them for now, but they should be OK in 3.x (which manages the
;; substitution without canonicalization.
Fixes PRs port-arm/16424 and toolchain/16304.
2002-05-03 20:32:22 +00:00
thorpej
11066f6159 Add -D_LP64 to CPP_ARCH64_SPEC. (This will be done differently in gcc 3.x.) 2002-05-03 17:47:57 +00:00
thorpej
aa048fbf0d Add -D_LP64 to CPP_PREDEFINES. 2002-05-03 17:45:02 +00:00
rearnsha
6acc7fa8af Pull up from FSF sources:
Fri Mar  3 12:49:28 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
	* reload1.c (reload_combine_note_use): Handle return register USEs.
	REG case: Handle multi-hard-register hard regs.

Fixes toolchain/16431
2002-05-03 17:33:01 +00:00
mrg
5bd8d70795 bump version to nb2. 2002-04-27 04:31:16 +00:00
eeh
d188ed6784 Backport from -current a fix for structure passing lossage. 2002-04-24 22:28:36 +00:00
rearnsha
05430be236 Ensure we take any double-word adjustment into account when
constructing the epilogue sequence.
2002-04-22 16:14:22 +00:00
msaitoh
1b117bda9b pass arg 4 of a qsort() correctly. 2002-04-16 03:49:57 +00:00
msaitoh
22868c18c1 ADD MISSING "TARGET_DEFAULT" BIT WHEN LITTLE ENDIAN 2002-04-15 13:24:54 +00:00
msaitoh
3bbc40138d - include MANY *.h
- include sh/sh-protos.h instead of gcc3's tm_p.h
- fix some function's return value
- fix some function's missing argument
- warning fixes
2002-04-09 17:57:33 +00:00
msaitoh
b87ae7ffe6 define prototypes as gcc3 into -protos.h 2002-04-09 17:54:40 +00:00
thorpej
142b21ac73 Set ARM_FLAG_APCS_FRAME in TARGET_DEFAULT. Per discusison with
Richard Earnshaw.
2002-04-08 21:41:10 +00:00
msaitoh
54d5b8ac24 apply gcc original rev. 1.84
> 2001-01-11  Alexandre Oliva  <aoliva@redhat.com>
 >
 > 	* config/sh/sh.c (barrier_align): Recognize branch around far
 > 	branch and redundant insn.
2002-04-05 18:06:29 +00:00
msaitoh
fb8881ade8 fix my last patch. 2002-04-05 18:02:28 +00:00
msaitoh
e029db8b1c apply gcc original rev. 1.51
> 2000-03-06  Clinton Popetz  <cpopetz@cygnus.com>
 >
 > 	* config/sh/sh.c: (barrier_align): Handle a delay slot that is
 > 	filled with an insn from the jump target.
2002-04-05 17:58:28 +00:00
msaitoh
bf44c5577f apply a part of gcc's original rev. 1.96
ADD MISSING "()"

 > 2001-06-03  Alexandre Oliva  <aoliva@redhat.com>
 >
 >	* config/sh/sh.c (barrier_align): Add parentheses in initial
 > 	credit computation.
2002-04-05 17:34:27 +00:00
msaitoh
ffef804eee add missing "return 0;" 2002-04-05 17:26:00 +00:00
msaitoh
83dcb72379 apply gcc's original rev. 1.81
> 2000-12-30  Alexandre Oliva  <aoliva@redhat.com>
 >
 > 	* config/sh/sh.c (split_branches): Don't dereference re-computed
 > 	`beyond' before checking it's non-NULL.
2002-04-05 17:23:20 +00:00
msaitoh
f8de406a0c apply a part of gcc's original rev. 1.67
> Mon Sep 18 20:26:50 2000  J"orn Rennecke <amylaar@redhat.co.uk>
 >
 >         * sh.c (find_barrier): For Sh1, take alignment after jumps into account.
2002-04-05 17:10:24 +00:00
msaitoh
689473c860 apply gcc original rev. 1.28
> Fix pcrel too far problems due to upping CACHE_LOG on SH2:
 > 	* sh.c (barrier_align): Don't return early for normal branch/barrier
 > 	when optimizing for SH2.
2002-04-05 16:59:16 +00:00
msaitoh
e19e995528 apply gcc original rev. 1.144
> 2000-09-19  Bernd Schmidt  <bernds@redhat.co.uk>
 >
 > 	* final.c (insn_current_reference_address): Use INSN_SHUID of seq
 > 	rather than that of branch.
 > 	(shorten_branches): Don't increment insn_current_address twice.
2002-04-05 16:21:38 +00:00
msaitoh
07baef4c9d apply gcc's original rev. 1.105
> Tue Jan  4 23:59:26 2000  Denis Chertykov <denisc@overta.ru>
 >
 > 	* final.c (shorten_branches): Correctly compute length of
 > 	asms without operands.
2002-04-05 15:58:31 +00:00
msaitoh
373c220202 gcc/config/sh/sh.h original rev. 1.51
gcc/config/sh/sh.c	original rev. 1.43

 > Wed Feb 23 16:42:21 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
 >
 >         * sh.h (LOOP_ALIGN): If aligning loops, call sh_loop_align
 >         to check for special cases.
 >         * sh.c (sh_loop_align): Define.
2002-04-05 15:50:14 +00:00
msaitoh
16f8beb6c9 apply gcc original rev. 1.09
> Wed Feb 23 16:42:21 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
 >
 > 	* final.c (shorten_branches): Make value passed to LOOP_ALIGN
 > 	conform to documentation.
2002-04-05 15:28:07 +00:00
msaitoh
8ed9bfd205 fix incorrect change at rev. 1.2 2002-04-04 20:00:33 +00:00
msaitoh
306d88f7e2 sync with gnu/dist/gcc/config/sh/sh.md rev. 1.7
> apply original gcc rev. 1.29:
 >
 >  * Guard insn splits against illegal regsiters.
2002-04-04 15:39:14 +00:00
msaitoh
dd5f863fa8 sync with gnu/dist/gcc/config/sh/sh.md rev. 1.5
> apply gcc original rev. 1.34:
 >
 >  * sh.c (block_lump_real): Add missing clobber of T_REG
2002-04-04 15:33:35 +00:00
msaitoh
a513ce40a3 sync with gnu/dist/gcc/config/sh/sh.md rev. 1.4
> gen_call() takes only two arguments (from egcs-current)
2002-04-04 15:30:47 +00:00
msaitoh
e05a3f8f0a sync with gnu/dist/gcc/config/sh/sh.md rev. 1.2
> Sync *{mul,div}*i3 with egcs-current.
 > Now we can compile mount_mfs (newfs) with -O2!
2002-04-04 15:27:36 +00:00
msaitoh
4999187555 sync with gnu/dist/gcc/combine.c rev. 1.5
> gcc original rev. 1.89:
 > 	* combine.c (if_then_else_cond): If comparing against zero,
 > 	just return thing being compared.
 >
 > gcc original rev. 1.132:
 > 	* combine.c (combine_simplify_rtx): Don't create an if_then_else
 > 	unless both args are general_operand.
2002-04-04 13:30:38 +00:00
msaitoh
8b3e2136ae sync with gnu/dist/gcc/combine.c rev. 1.4,1.6
> apply gcc original rev. 1.116:
 >
 >  > combine.c (simplify_comparison): Fix typo.
 >
 > LTU, LEU, GTU, "LEU" -> LTU, LEU, GTU, "GEU"
 >
 > apply gcc original rev. 1.198 (as rev. 1.116)
 >
 >  > combine.c (simplify_comparison): Fix typo.
 >
 > GTU, LTU, GEU, "GEU" -> GTU, LTU, GEU, "LEU"
2002-04-04 13:23:37 +00:00
scw
fb1d7cb64f From Takeshi Shibagaki <ie9t-sbgk@asahi-net.or.jp>:
Define OBJECT_FMT_ELF for the benefit of libgcc et al.
2002-04-03 20:31:24 +00:00
simonb
eeac1cd146 Make sure the "-G num" option starts with a new paragraph instead of
flowwing on to the end of the previous option's description.
2002-04-03 15:14:15 +00:00
thorpej
ef861642cb #define HOST_BITS_PER_LONGLONG 64 2002-04-02 07:28:23 +00:00
thorpej
c23f2ad0b9 * Use <elfos.h>, not <svr4.h>.
* Use <dbxelf.h>.
* Undef CPP_PREDEFINES before defining it.
* Remove the undef of HANDLE_SYSV_PRAGMA; we need this in order for
  weak externs to work properly.
2002-04-02 06:22:28 +00:00