peter
610cbec252
* fixes for FPU register allocation
2003-09-03 21:06:45 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
florian
220e05dd5e
* fixed arm concatcopy
...
+ arm support in the common compiler sources added
* moved some generic cg code around
+ tfputype added
* ...
2003-09-03 11:18:36 +00:00
daniel
889bd81bdb
* Register allocator bugfix for h2pas
2003-08-23 10:46:21 +00:00
Jonas Maebe
4f8c390198
* fixed regvars so they work with newra (at least for ppc)
...
* fixed some volatile register bugs
+ -dnotranslation option for -dnewra, which causes the registers not to
be translated from virtual to normal registers. Requires support in
the assembler writer as well, which is only implemented in aggas/
agppcgas currently
2003-08-17 16:59:20 +00:00
daniel
7d3bfaaed4
* Precoloured nodes now have an infinite degree approached with 255,
...
like they should.
2003-08-17 14:32:48 +00:00
daniel
45f9851e87
* Another register allocator bug fixed.
...
* cpu_registers set to 6 for i386
2003-08-17 08:48:02 +00:00
daniel
42c320cb29
* cs_regalloc renamed to cs_regvars to avoid confusion with register
...
allocator
* Some preventive changes to i386 spillinh code
2003-08-09 18:56:54 +00:00
daniel
557ac8b02e
* Fixed a register allocator bug
...
* Figured out why -dnewra generates superfluous "mov reg1,reg2"
statements: changes in location_force. These moves are now no longer
constrained so they are optimized away.
2003-08-03 14:09:50 +00:00
Jonas Maebe
7bc1557f5c
* add_edges_used() is now also called for registers allocated with
...
getexplicitregisterint()
* writing the intereference graph is now only done with -dradebug2 and
the created files are now called "igraph.<module_name>"
2003-07-21 13:32:39 +00:00
daniel
268bfcf784
* Fixed register allocator. *Lots* of fixes.
2003-07-06 15:31:20 +00:00
Jonas Maebe
80d6905b7b
* fixed my previous completely broken commit. It's not perfect though,
...
registers > last_supreg and < max_intreg may still be "translated"
2003-07-06 15:00:47 +00:00
Jonas Maebe
b1917a614b
* support integer registers that are not managed by newra (ie. don't
...
translate register numbers that fall outside the range
first_supreg..last_supreg)
2003-07-06 14:45:05 +00:00
peter
b7d99ec934
* paraloc splitted in callerparaloc,calleeparaloc
...
* sparc calling convention updates
2003-07-02 22:18:04 +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
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
peter
d179aea20d
* ungetregisterfpu gets size parameter
2003-06-12 21:11:10 +00:00
peter
a0b9306652
* newra compiles for sparc
2003-06-12 16:43:07 +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
peter
d91c880148
* cg.a_load_* get a from and to size specifier
...
* makeregsize only accepts newregister
* i386 uses generic tcgnotnode,tcgunaryminus
2003-06-03 21:11:09 +00:00
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +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
f67e370ce1
* set inital costs of assigning a variable to a register to 120 for
...
non-i386, because the used register must be store to memory at the
start and loaded again at the end
2003-05-31 20:31:11 +00:00
Jonas Maebe
0357f71e14
* fixed several regvar related bugs for non-i386. make cycle with -Or now
...
works for ppc
2003-05-30 18:55:21 +00:00
Jonas Maebe
f433c21ead
* use as little different registers on the ppc until newra is released,
...
since every used register must be saved
2003-05-30 12:36:13 +00:00
Jonas Maebe
cb279b2029
* changed tt_persistant to tt_persistent :)
...
* tempcreatenode now doesn't accept a boolean anymore for persistent
temps, but a ttemptype, so you can also create ansistring temps etc
2003-05-17 13:30:08 +00:00
peter
abca40f041
* regvar fixes
2003-05-16 14:33:31 +00:00
daniel
b899ea5469
* Bug fix in simplify
2003-04-26 20:03:49 +00:00
peter
f4b818fc1d
* removed funcretn,funcretsym, function result is now in varsym
...
and aliases for result and function name are added using absolutesym
* vs_hidden parameter for funcret passed in parameter
* vs_hidden fixes
* writenode changed to printnode and released from extdebug
* -vp option added to generate a tree.log with the nodetree
* nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
daniel
6aa01a99a9
* Ifdefs around a lot of calls to cleartempgen
...
* Fixed registers that are allocated but not freed in several nodes
* Tweak to register allocator to cause less spills
* 8-bit registers now interfere with esi,edi and ebp
Compiler can now compile rtl successfully when using new register
allocator
2003-04-25 08:25:26 +00:00
peter
c351d2a524
* compile fix for no-newra
2003-04-23 20:23:06 +00:00
daniel
9e2084b8d5
* Further register allocator work. Compiler now smaller with new
...
allocator than without.
* Somebody forgot to adjust ppu version number
2003-04-23 14:42:07 +00:00
peter
47489f2376
* firstpass uses expectloc
...
* checks if there are differences between the expectloc and
location.loc from secondpass in EXTDEBUG
2003-04-22 23:50:22 +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
peter
e21dab9739
* count address regs separate
2003-04-21 19:16:49 +00:00
daniel
0c93e261e7
* Added some code to keep track of move instructions in register
...
allocator
2003-04-17 16:48:21 +00:00
daniel
a32926e2fc
* Some work on interference graph construction
2003-04-17 07:50:24 +00:00
peter
c4ddcc78a8
* generic constructor working for i386
...
* remove fixed self register
* esi added as address register for i386
2003-03-28 19:16:56 +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
03f1fef7aa
+ added cutils to the uses clause
2003-03-09 21:18:59 +00:00
daniel
eedc447400
+ Added newra version of Ti386shlshrnode
...
+ Added interference graph construction code
2003-03-08 20:36:41 +00:00
daniel
fb55235acc
* Work to handle new register notation in ag386nsm
...
+ Added newra version of Ti386moddivnode
2003-03-08 13:59:16 +00:00
daniel
2801609d3f
* Created newra version of secondmul in n386add.pas
2003-03-08 10:53:48 +00:00
daniel
e8f649f5c2
+ $define newra will enable new register allocator
...
+ getregisterint will return imaginary registers with $newra
+ -sr switch added, will skip register allocation so you can see
the direct output of the code generator before register allocation
2003-03-08 08:59:07 +00:00
daniel
5912bc972c
* Fixed ungetreference
2003-02-26 20:50:45 +00:00
daniel
4c450c3bb0
* Fixed a few issues
2003-02-19 22:39:56 +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
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00