Jonas Maebe
b1a903fd4d
* fixed bug in load_fpu_location found by Olle
2003-08-08 19:01:02 +00:00
olle
c2fe8dbd99
* merged macos entry/exit code generation into the general one.
2003-08-08 15:49:24 +00:00
Jonas Maebe
a3cb0d2002
* don't use rg.getregisterint() anymore in g_stackframe_entry_*, because
...
the register colouring has already occurred then, use a hard-coded
register instead
2003-07-23 11:02:23 +00:00
Jonas Maebe
356ee447ba
* "lastsaveintreg" is RS_R31 instead of RS_R27 with -dnewra, because
...
there are no scratch regs anymore
2003-07-23 11:00:09 +00:00
Jonas Maebe
5ab3ea0af5
- disabled some debugging code
2003-07-23 10:58:06 +00:00
Jonas Maebe
d73acd12f6
* fixed newra bug due to the fact that we sometimes need a temp reg
...
when loading/storing to memory (base+index+offset is not possible)
and because a reference is often freed before it is last used, this
temp register was soemtimes the same as one of the reference regs
2003-07-20 20:39:20 +00:00
Jonas Maebe
af61f830d0
* fixed bug in g_concatcopy with -dnewra
2003-07-20 16:15:58 +00:00
peter
1b633246b9
* sparc fixes
2003-07-08 21:23:24 +00:00
Jonas Maebe
d514f33ce4
* committed wrong file previously :(
2003-07-06 21:26:06 +00:00
Jonas Maebe
1846337739
* fixed ppc compiler
2003-07-06 20:25:03 +00:00
Jonas Maebe
117d6934a1
+ first spill_registers implementation, most likely still very buggy
2003-07-06 15:29:06 +00:00
Jonas Maebe
2763f461ce
* VOLATILE_REGISTERS was wrong (it was more or less the inverted set
...
of what it had to be :/ )
2003-07-06 15:28:24 +00:00
Jonas Maebe
cc6a8fbe91
* make sure all registers except r0 are handled by the register
...
allocator for -dnewra
2003-07-06 15:27:44 +00:00
Jonas Maebe
70a5d1e4c2
* create_paraloc_info() is now called separately for the caller and
...
callee info
* fixed ppc cycle
2003-07-05 20:11:41 +00:00
peter
b7d99ec934
* paraloc splitted in callerparaloc,calleeparaloc
...
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
olle
280c8655e5
* macos: fixes of loading-code
2003-06-18 10:12:36 +00:00
Jonas Maebe
9b645eef82
- removed allocparaloc/freeparaloc, generic ones are ok now
2003-06-17 17:27:08 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
642d0f923b
* ppc compiles with -dnewra, haven't tried to compile anything with it
...
yet though
2003-06-14 22:32:43 +00:00
Jonas Maebe
d29c96896f
* fixed newra cycle for x86
...
* added constants for indicating source and destination operands of the
"move reg,reg" instruction to aasmcpu (and use those in rgobj)
2003-06-14 14:53:50 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
Jonas Maebe
a5a186799a
+ added supreg_name function
2003-06-13 17:44:44 +00:00
Jonas Maebe
c0a35f3cab
* fixed bugs in case the left node was a LOC_(C)REFERENCE
2003-06-13 17:03:38 +00:00
Jonas Maebe
7ca760912b
* tcginnode.pass_2 doesn't call a helper anymore in any case
...
* fixed ungetregisterfpu compilation problems
2003-06-12 22:09:54 +00:00
Jonas Maebe
709e6da4fa
- removed ALL_INTREGISTERS (only the one in rgobj is valid)
2003-06-12 19:11:34 +00:00
Jonas Maebe
55509b199b
* (de)allocation of registers for parameters is now performed properly
...
(and checked on the ppc)
- removed obsolete allocation of all parameter registers at the start
of a procedure (and deallocation at the end)
2003-06-09 14:54:26 +00:00
Jonas Maebe
68b629fd16
* fixed small bug where a location was set to LOC_CREGISTER instead of
...
LOC_REGISTER
2003-06-08 18:20:02 +00:00
Jonas Maebe
d32d1a711e
- removed duplicate identifier
2003-06-08 18:19:27 +00:00
Jonas Maebe
98c3c2489e
* zero paraloc tregisters, so that the alignment bytes are 0 (otherwise
...
the crc of the ppu files can change between interface and
implementation)
2003-06-08 10:52:01 +00:00
Jonas Maebe
edb2179730
+ added freeintparaloc
...
* ppc get/freeintparaloc now check whether the parameter regs are
properly allocated/deallocated (and get an extra list para)
* ppc a_call_* now internalerrors if pi_do_call is not yet set
* fixed lot of missing pi_do_call's
2003-06-07 18:57:04 +00:00
Jonas Maebe
eb066d3b32
* calculate localsize also in g_return_from_proc since it's now called
...
before g_stackframe_entry (still have to fix macos)
* compilation fixes (cycle doesn't work yet though)
2003-06-04 11:58:58 +00:00
Jonas Maebe
6f3e16298a
* function results can now also be regvars
...
- removed tprocinfo.return_offset, never use it again since it's invalid
if the result is a regvar
2003-06-02 21:42:05 +00:00
peter
230a14ff68
* getregisterfpu size parameter added
...
* op_const_reg size parameter added
* sparc updates
2003-06-01 21:38:06 +00:00
Jonas Maebe
abc1c5bf2f
* fix for bug in fixref that Peter found during the Sparc conversion
2003-06-01 13:42:18 +00:00
peter
1e7ecac976
* FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results
2003-05-31 15:05:28 +00:00
peter
414bd5fa22
* more sparc cleanup
...
* accumulator removed, splitted in function_return_reg (called) and
function_result_reg (caller)
2003-05-30 23:57:08 +00:00
marco
1daf2ca476
* register skipping (aligning) for int64 parameters, sys V abi only.
2003-05-30 23:45:49 +00:00
marco
a73b98ea9f
* getfuncretparaloc now uses r3 for highdword and r4 for lo. Doesn't work tho
2003-05-30 22:54:19 +00:00
marco
152b525419
* committed fix that swaps int64 parameters hi and lo.
2003-05-30 22:35:03 +00:00
Jonas Maebe
fefdcc6331
* fixed bug with intregvars
...
* locapara.loc can also be LOC_CFPUREGISTER -> also fixed
rcgppc.a_param_ref, which previously got bogus size values
2003-05-30 18:52:10 +00:00
Jonas Maebe
d321606bc5
* changed scratchregs from r28-r30 to r29-r31
...
* made sure the regvar registers don't overlap with the scratchregs
anymore
2003-05-30 18:49:59 +00:00
Jonas Maebe
413030a90d
* fixed problem where sometimes no register was allocated for the result
...
of an addnode when using regvars
2003-05-30 18:49:14 +00:00
Jonas Maebe
c70f75f1b7
* compile with -dppc603 to not use unaligned float loads in move() and
...
g_concatcopy, because the 603 and 604 take an exception for those
(and netbsd doesn't even handle those in the kernel). There are
still some of those left that could cause problems though (e.g.
in the set helpers)
2003-05-29 21:17:27 +00:00
Jonas Maebe
05a3d71c88
* also free temps in g_concatcopy if delsource is true
2003-05-29 10:06:09 +00:00
Jonas Maebe
ead9de924c
* added missing initialization of rg.usedint{in,by}proc
...
* ppc now also saves/restores used fpu registers
* ncgcal doesn't add used registers to usedby/inproc anymore, except for
i386
2003-05-28 23:58:18 +00:00
florian
a8eb2ab740
* started to fix and clean up the sparc port
2003-05-28 23:18:31 +00:00
Jonas Maebe
1bb8852335
* fixed register numbering bug
2003-05-25 14:32:42 +00:00
Jonas Maebe
4ca3d9a2e9
* fixed shr of 64 bit values by non-immediate value
2003-05-24 19:15:29 +00:00
Jonas Maebe
517e16dae7
* fixed endian problem with tlocation.value/valueqword fields
2003-05-24 16:02:01 +00:00
Jonas Maebe
df5e0bbfc6
* fsqrt is an optional instruction in the ppc architecture and isn't
...
implemented by any current ppc afaik, so use the generic sqrt routine
instead (adapted so it works with compilerproc)
2003-05-24 13:39:32 +00:00
Jonas Maebe
ee71991a7f
* don't save callee-save registers in the caller as well (the ppc code
...
that we generate is slow enough as it is without resorting to doing
double work :)
2003-05-24 13:38:04 +00:00
Jonas Maebe
54cacc63a5
* fixed integer typeconversion problems
2003-05-24 11:59:42 +00:00
Jonas Maebe
5cfedffb9e
* added some missing paralocation size settings
2003-05-24 11:48:40 +00:00
Jonas Maebe
d321a5aa3d
* fixed framepointer storage: it's now always stored at r1+12, which is
...
a place in the link area reserved for compiler use.
2003-05-24 11:47:27 +00:00
Jonas Maebe
74301b9544
* fixed support for nested procedures and more parameters than those
...
which fit in registers (untested/probably not working: calling a
nested procedure from a deeper nested procedure)
2003-05-23 18:51:26 +00:00
peter
5f6de7eb1f
* inherite from tcgprocinfo
2003-05-22 21:34:11 +00:00
florian
9de6468186
+ basic darwin support added
2003-05-20 23:54:00 +00:00
florian
999b859bc8
* fixed calling sequence for subroutines using the aix abi
2003-05-19 12:15:28 +00:00
florian
b1b16c8f09
+ added abi field to tsysteminfo
2003-05-18 15:15:59 +00:00
Jonas Maebe
624819ccb8
* fixed para/localst calculations (note to self: don't commit at
...
extremely late/early hours :)
2003-05-17 14:05:30 +00:00
Jonas Maebe
9055529171
* workaround for nested procedures until Peter fixes it properly :)
2003-05-16 23:15:51 +00:00
Jonas Maebe
d816c6a8c6
* powerpc nested procedure fixes, should work completely now if all
...
local variables of the parent procedure are declared before the
nested procedures are declared
2003-05-16 20:00:39 +00:00
Jonas Maebe
66792ee44e
* adapted for Peter's regvar fixes
2003-05-16 16:26:05 +00:00
florian
137395876d
* fixed last commit, changing lastsaveintreg to r31 caused some strange problems
2003-05-15 22:14:42 +00:00
florian
5f6578729b
* sysv entry code saves r13 now as well
2003-05-15 21:37:00 +00:00
florian
9c507c2da0
* fixed ppc compiler which was broken by Peter's changes
2003-05-15 19:39:09 +00:00
florian
d73c88ce9f
* fixed parameter passing by value of large sets, strings and method pointers
2003-05-12 20:14:47 +00:00
Jonas Maebe
0a392ebf5e
* fixed g_concatcopy
2003-05-12 18:43:50 +00:00
florian
65eba18e20
* fixed passing of small const arrays and const records, they are always passed by reference
2003-05-11 23:19:32 +00:00
Jonas Maebe
7d5a2715f6
* fixed bug with large offsets in entrycode
2003-05-11 20:59:23 +00:00
Jonas Maebe
7fc5c04a14
* fixed bug in second_int_to_bool I introduced previous time
...
(secondpass was being called twice!)
2003-05-11 20:42:08 +00:00
Jonas Maebe
f616bfd3e2
* fixed second_int_to_bool() (but still problem with typecasts used for
...
var parameters, not sure about solution)
2003-05-11 13:06:44 +00:00
Jonas Maebe
b993c4e2db
* fixed shifts
2003-05-11 11:45:08 +00:00
Jonas Maebe
1ff5307e5d
+ op_reg_reg_reg_const_const (for rlwnm)
2003-05-11 11:08:25 +00:00
Jonas Maebe
2c81208d56
* fixed optimizations in a_op_const_reg_reg()
2003-05-11 11:07:33 +00:00
florian
77d8f335aa
* vmtpointer_offset must be adjusted in after_pass1 as well
2003-05-10 23:57:23 +00:00
Jonas Maebe
f64d66fa48
* call inherited after_header as well
2003-05-09 19:00:30 +00:00
Jonas Maebe
5f71d48015
* yet another final fix for second_int_to_real() :) (tested this time)
2003-05-02 15:13:38 +00:00
Jonas Maebe
cfe94be378
* fixed overflow checking form of 64bit add instruction
2003-04-27 11:55:34 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
Jonas Maebe
92ac35cc37
* fixed 64bit "const - reg/ref" bugs
2003-04-27 11:06:06 +00:00
florian
d4ca538a40
* fixed nested procedures to get them working as before
2003-04-27 10:41:47 +00:00
peter
a5e7f02527
* updated for removed lexlevel
2003-04-27 07:48:05 +00:00
Jonas Maebe
38d7ec6670
* fix to a_op64_const_reg_reg
2003-04-26 22:56:11 +00:00
florian
19946413fe
* fixed setjmp record size
2003-04-26 20:15:22 +00:00
Jonas Maebe
31d94f4f4c
* fixed g_flags2reg
2003-04-26 16:08:41 +00:00
florian
dda473894c
* fixed cmp_reg_reg_reg, cmp operands were emitted in the wrong order
2003-04-26 15:25:29 +00:00
florian
15c0b633ab
* fixed the powerpc to work with the new function result handling
2003-04-26 11:30:59 +00:00
florian
574d50e86b
* fixed tfuncretsym stuff in powerpc specific part
2003-04-25 21:05:22 +00:00
florian
b9c76fcf5e
* stack frame calculations are now completly done using the code generator
...
routines instead of generating directly assembler so also large stack frames
are handle properly
2003-04-25 20:55:34 +00:00
florian
41da381f1a
* fixed a lot of PowerPC related stuff
2003-04-24 22:29:57 +00:00
florian
cca5ca2ab9
* fixed not node
2003-04-24 12:57:32 +00:00
florian
90561d5e71
* symbols which are register identifiers aren't resolved anymore
2003-04-24 12:05:53 +00:00
florian
7ec9711f9a
* fixed several issues with nested procedures
2003-04-24 11:24:00 +00:00
peter
c092e24817
* fixes to get rtl compiled
2003-04-23 22:18:01 +00:00
peter
72ad478f97
* fix compile for ppc,sparc,m68k
2003-04-23 21:10:54 +00:00
florian
0284016ee9
* fixed several issues with powerpc
...
+ applied a patch from Jonas for nested function calls (PowerPC only)
* ...
2003-04-23 12:35:34 +00:00
florian
253df05727
+ added first_ and last_imreg
2003-04-22 11:27:48 +00:00
daniel
25059e21b6
+ Implemented the actual register allocator
...
+ Scratch registers unavailable when new register allocator used
+ maybe_save/maybe_restore unavailable when new register allocator used
2003-04-22 10:09:34 +00:00
Jonas Maebe
44f26523e6
* process para's from first to last instead of the other way round
2003-04-17 18:52:35 +00:00
Jonas Maebe
56132c1a9c
* assembler procedures now again get a stackframe if they have local
...
variables. No space is reserved for a function result however.
Also, the register parameters aren't automatically saved on the stack
anymore in assembler procedures.
2003-04-16 09:26:55 +00:00
Jonas Maebe
fd1056c621
* fixed paralocation for integer var/out parameters
2003-04-16 07:55:07 +00:00
olle
1372a617cb
+ line numbers are now emitted in the assembler code
...
* bug in export and import directive fixed
* made code more in sync with aggas.pas
2003-04-06 21:01:40 +00:00
Jonas Maebe
f51a189be0
* don't generate entry/exit code for assembler procedures
2003-04-06 16:39:11 +00:00
Jonas Maebe
ec71805aa8
* several ppc/generic result offset related fixes. The "normal" result
...
offset seems now to be calculated correctly and a lot of duplicate
calculations have been removed. Nested functions accessing the parent's
function result don't work at all though :(
2003-04-05 21:09:31 +00:00
peter
6a16389f67
* moved generic code from n386cal to ncgcal, i386 now also
...
uses the generic ncgcal
2003-04-04 15:38:56 +00:00
Jonas Maebe
e02ecef001
* fixed linux entry/exit code generation
2003-03-22 18:01:13 +00:00
Jonas Maebe
45b9d59df5
* fixes for new regallocator
2003-03-22 18:00:27 +00:00
Jonas Maebe
5893b9bb19
* fixed R_TOC bugs introduced by new register allocator conversion
2003-03-19 14:26:26 +00:00
olle
87fb801dcb
* change in a_loadaddr_ref_reg
2003-03-13 22:57:45 +00:00
Jonas Maebe
24e2741659
* more powerpc and generic fixes related to the new register allocator
2003-03-12 22:43:38 +00:00
Jonas Maebe
d168ae15df
* lots of new regallocator fixes, both in generic and ppc-specific code
...
(ppc compiler still can't compile the linux system unit though)
2003-03-11 21:46:24 +00:00
olle
a8b84c17e4
* changed ungetregister to ungetregisterint in tppcaddnode.clear_left_right
2003-03-10 18:11:41 +00:00
daniel
86bcea6ef5
* Code generator converted to new register notation
...
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
carl
59d3edeec7
* Several bugfixes for m68k target (register alloc., opcode emission)
...
+ VIS target
+ Generic add more complete (still not verified)
2003-02-02 19:25:54 +00:00
olle
6af7aba722
+ added new register constants
...
+ implemented register convertion proc
2003-01-16 11:31:28 +00:00
olle
a02a1adee1
* changed global var access, TOC now contain pointers to globals
...
* fixed handling of function pointers
2003-01-13 17:17:50 +00:00
florian
2102ce7031
* fixed some PowerPC issues
2003-01-09 22:00:53 +00:00
florian
34a91d9171
* fixed broken PowerPC compiler
2003-01-09 20:41:10 +00:00
daniel
6e507ba483
* Added register conversion
2003-01-09 15:49:56 +00:00
olle
09f06d0cf3
* made powerpc compiler compile after Daniels Tregister modification
2003-01-09 11:22:14 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
florian
938f46f246
* fixed some crashes and a rte 201
2002-12-15 19:22:01 +00:00
carl
3214bab118
* maxoperands -> max_operands (for portability in rautils.pas)
...
* fix some range-check errors with loadconst
+ add ncgadd unit to m68k
* some bugfix of a_param_reg with LOC_CREFERENCE
2002-12-14 15:02:03 +00:00
florian
121ca40b39
* some variant <-> dyn. array stuff
2002-12-05 14:27:25 +00:00
olle
b924813d4a
* changed proc ref from .xxx[PR] (refering to its section)
...
to .xxx (refering to its label) to allow for multiple ref to a proc.
2002-11-28 10:56:07 +00:00
olle
5e90be8184
* macos: changing code gen for references to globals
2002-11-28 10:55:16 +00:00
peter
f3fc72095f
* splitted defbase in defutil,symutil,defcmp
...
* merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
Jonas Maebe
85c3f6195a
+ some comments describing the fields of treference
2002-11-24 14:28:56 +00:00
peter
a496dbe1ff
* pass proccalloption to ret_in_xxx and push_xxx functions
2002-11-18 17:31:54 +00:00
mazen
a835405a27
* fixed a compilation bug accmulator-->accumulator, in definition of return_result_reg
2002-11-17 18:26:15 +00:00
mazen
41153e2b1a
+ return_result_reg and function_result_reg are now used, in all plateforms, to pass functions result between called function and its caller. See the explanation of each one
2002-11-17 17:49:08 +00:00
carl
64655be168
* memory optimization (3-4%) : cleanup of tai fields,
...
cleanup of tdef and tsym fields.
* make it work for m68k
2002-11-17 16:31:55 +00:00
Jonas Maebe
fb5b623e30
* fixed bctr(l) problems
2002-11-07 15:50:23 +00:00
olle
c5ac9e90af
* globals are located in TOC and relative r2, instead of absolute
...
* symbols which only differs in case are treated as a single symbol
+ tai_const_symbol supported
* only refs_full accepted
2002-11-04 18:24:53 +00:00
olle
9284b36d3b
* macos: globals are located in TOC and relative r2, instead of absolute
2002-11-04 18:24:19 +00:00
olle
b71c1492a9
* macos entry/exit: only used registers are saved
...
- macos entry/exit: stackptr not saved in r31 anymore
* macos entry/exit: misc fixes
2002-10-28 22:24:28 +00:00
olle
e2f2f22f91
* branch b does not jump to dotted symbol now
2002-10-23 15:31:01 +00:00
Jonas Maebe
f18626a534
* some range errors fixed
2002-10-21 18:08:05 +00:00
olle
650843907e
* import directive changed
2002-10-19 23:52:40 +00:00
olle
4d3ed1a22c
* macos stack frame size computing updated
...
+ macos epilogue: control register now restored
* macos prologue and epilogue: fp reg now saved and restored
2002-10-19 23:51:48 +00:00
olle
7fde7960b5
* reorganized prologue and epilogue routines
2002-10-19 12:50:36 +00:00
Jonas Maebe
3be297f39c
+ added entry for pwchar_to_string conversion addition
2002-10-18 16:38:42 +00:00
florian
8ad5fe9533
* changes from Olle to get simple programs compiled and assembled
2002-10-10 19:39:37 +00:00
florian
d3bdd3550f
* more mpw fixes
2002-10-07 21:19:53 +00:00
florian
14fe70d27d
* fixed function exporting
2002-10-06 22:46:20 +00:00
florian
4cb3d9b498
* improve function imports
2002-10-02 22:14:15 +00:00
florian
fa4a4de18c
* all A_BL instructions replaced by calls to a_call_name
2002-10-02 21:49:51 +00:00
Jonas Maebe
4510d75277
+ set, variant support in getfuncretparaloc
2002-10-02 13:33:36 +00:00
Jonas Maebe
a738c4ddcf
* changed a_call_* so that no superfluous code is generated anymore
2002-10-02 13:24:58 +00:00