Commit Graph

28 Commits

Author SHA1 Message Date
matt
3649c80dc2 Fix LP64 issue with invalid register names. When printing a register name,
look in reg_renumber if the register >= FIRST_PSEUDO_REGISTER.
Add code to not use movc3 for small fixed (<= 48 byte) moves.  Instead
expand them to the proper series of mov[qlwb] instructions.
2007-04-20 16:30:32 +00:00
matt
517c8a8b40 Make movmemhi insn pattern use "o" constraint to avoid codegen bugs.
Fix some non-use of MEM_P, REG_P, CONST_INT_P.
2007-04-18 22:55:24 +00:00
matt
d96c1bd9b7 At lower optimization levels, constants can tricle to subdi3. Deal with it. 2007-04-14 20:43:03 +00:00
matt
e449ba3363 Change tst<mode> pattern to use nrmT for constraints instead of g. 2007-04-13 20:02:42 +00:00
matt
c9e6e23717 If possible, adjust extzv/insv to not cross int boundaries. 2007-04-11 02:21:07 +00:00
matt
0606d1948b when pic, symbol [ + offset ] + reg is indexed so it's mode dependent.
Make sure we indicate that.  (fixes the as bug)
2007-04-09 03:44:14 +00:00
matt
2d3546bb65 Fix a optimize_size problem in the correct (and smaller) manner. 2007-04-08 10:32:42 +00:00
matt
768e321a24 Switch back to mnegl hi, mnegl lo, sbwc and prevent split_quadword_operands
from using POST_INC in the case of negation.  Fix reversal of operands in
-Os use of ashq.
2007-04-08 03:07:23 +00:00
matt
2c37c6c8f1 Fix a problem with -Os. 2007-04-07 22:50:27 +00:00
matt
4fab8ae973 Fix addition of negative 64bit constants. Don't optimize the instructions
too much otherwise we might use some that don't affect the carry bit.  Make
sure we are using paired instructions (add/adwc, sub/sbwc).
2007-04-06 22:46:36 +00:00
matt
5db28f425f When mova[lq] to a push operand, do a pusha[lq] instead. 2007-04-06 20:50:33 +00:00
matt
4af7958221 Fix 64-bit negation. 2007-04-06 20:49:02 +00:00
matt
086f0329dc Fix constraints on ffs. 2007-04-02 16:45:39 +00:00
matt
20feb5b064 Fix cut-and-pasto. 2007-04-02 16:44:31 +00:00
matt
831f4686c1 Get rid of old unused constraints. 2007-04-02 16:44:17 +00:00
matt
abe5cdbc17 Add __builtin_ffs support. 2007-03-31 23:12:37 +00:00
matt
deb622ec5b Final step. Turn on generation of PIC code. Full release build builds and
works.
2007-03-31 05:55:11 +00:00
matt
dec8719ee4 For nonimmediate operands of SImode, don't use "g" anymore, use "nrmT" instead.
"g" matches just about anything including SYMBOL_REF, CONST, LABEL_REF which
should not be operands for most instructions in PIC mode.  (movsi can handle
then and addsi3 can handle them in a few limited cases).
2007-03-31 01:23:26 +00:00
matt
aa3062f197 Step 2. Produces PIC code but doesn't satisfies the constraints needed
by userland.  (external symbols can still be indirected and relocs for
symbol + offset are emitted).
2007-03-31 00:59:47 +00:00
matt
57ad7b9e42 Use HOST_WIDE_INT where appropriate. Cleanup split_quadword_operands 2007-03-30 22:03:28 +00:00
matt
f775e4410d Enable new quadmove code. Only use mova[lq] instead of ashl when
!optimize_size.  When optimize_size is on, try to use ashl if possible
if setting a 6bit unsigned quantity in the word.
2007-03-30 22:02:26 +00:00
matt
120d27ab08 Add symbolic_operand (matches const, symbol_ref, label_ref). 2007-03-30 21:25:01 +00:00
matt
1336eda547 Remove split_quadword_operands 2007-03-30 21:24:03 +00:00
matt
9e311d116b Simplify the address_operand patterns. Use gcc's macros and split between
push and mov addr patterns.
2007-03-30 21:23:42 +00:00
matt
d18d7c0fc4 Fix a few missing REG_P, use symbolic_operand instead of testint CONST/SYMBOL_REF/LABEL_REF, make split_quadword_operands static, don't pass the insn just the rtx code for the insn 2007-03-30 21:15:24 +00:00
matt
58ad121651 Step 1 of getting gcc to generate VAX PIC code again. These steps are being
committed in "smallish" steps.  This step incorporates the switch to MEM_P,
REG_P, and CONST_INT_P.  Use bool/true/false where appropriate.  PRINT_OPERAND
moves from being a large macro in vax.h print_operand in vax.c.  Fix rtx cost
for a constant of 0.  This eliminates unneeded moves when setting to 0 would
be fine.

Lastly, include completely new (on by default) code for DImode move, addition,
and subtract.  This code is significantly faster and smaller that what existed
before.
2007-03-30 20:25:46 +00:00
matt
8d5953af19 Define FRAME_POINTER_CFA_OFFSET since it is a constant 0 since VAX *always*
has a valid frame pointer.
2006-07-08 00:29:59 +00:00
mrg
bd52d17906 initial import of GCC 4.1 branch, from 2006-04-20. list of changes way
too large to list, but see:
	http://gcc.gnu.org/gcc-3.4/changes.html
	http://gcc.gnu.org/gcc-4.0/changes.html
	http://gcc.gnu.org/gcc-4.1/changes.html
for the details.
2006-04-20 10:19:17 +00:00