olle
c2fe8dbd99
* merged macos entry/exit code generation into the general one.
2003-08-08 15:49:24 +00:00
daniel
a4495e3867
* Made code generator reverse or/add/and/xor/imul instructions when
...
possible to reduce the slowdown of spills.
2003-08-03 20:38:00 +00:00
daniel
4984afb8f0
- Removed cmpop from Ti386addnode.second_addstring
2003-08-03 20:19:43 +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
florian
612a8cbbb1
* basic stuff fixed
2003-07-26 00:55:57 +00:00
Jonas Maebe
a783aea0b9
* fixed bogus abstract method warnings
2003-07-25 09:54:57 +00:00
Jonas Maebe
3c5d94dc64
* fixed nil pointer access
2003-07-24 10:45:40 +00:00
Jonas Maebe
177d57f22c
* split en_exit_code into a part that may allocate a register and a part
...
that doesn't, so the former can be done before the register colouring
has been performed
2003-07-23 11:04:15 +00:00
Jonas Maebe
af784cfb1e
* final (?) fix to in-code
2003-07-23 11:02:53 +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
355f84758e
* several rg.allocexplicitregistersint/rg.deallocexplicitregistersint
...
pairs round calls to helpers
2003-07-23 11:01:14 +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
florian
5aba45edbf
* very basic stuff for the arm
2003-07-21 16:35:30 +00:00
Jonas Maebe
d191387d5a
* fixed 64bit int results with -dnewra (you can't free both registers and
...
then allocate two new ones, because then the registers could be reversed
afterwards -> you get something like "movl %eax, %edx; movl %edx,%eax")
2003-07-21 13:51: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
florian
d2035fd6b4
* very basic stuff for the arm
2003-07-21 11:52:57 +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
db3bd69a18
* fixed bug in tcginnode.pass_2
2003-07-20 18:03:27 +00:00
Jonas Maebe
66fcf33869
* fix for threadvars with -dnewra
2003-07-20 16:26:43 +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
peter
09ed47cba6
* don't allow add/assignments for formaldef
...
* formaldef size changed to 0
2003-07-08 15:20:56 +00:00
peter
3d85d9c2bd
* Fix halt() call
2003-07-07 19:59:41 +00:00
peter
6cd9e5efc7
* big endian first allocates high
2003-07-06 22:10:56 +00:00
peter
d03fd8f7e0
* operand order of cmp fixed
2003-07-06 22:10:13 +00:00
peter
d0e4a452e4
* signed compare fixed
2003-07-06 22:09:50 +00:00
peter
3f97c26b4b
* shr and div fixed
2003-07-06 22:09:32 +00:00
Jonas Maebe
f909d6a620
* fixed ppc compilation problems and changed VOLATILE_REGISTERS for x86
...
so that it doesn't include ebp and esp anymore
2003-07-06 21:50:33 +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
peter
32d076480b
* framepointer fixes for sparc
...
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
peter
ae8e74b45b
* cleanup and first sparc implementation
2003-07-06 17:44:12 +00:00
daniel
268bfcf784
* Fixed register allocator. *Lots* of fixes.
2003-07-06 15:31:20 +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
acb3078279
* newra fix for threadvars
2003-07-06 15:25:54 +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
Jonas Maebe
a82c9531b7
* fixed register leak
...
* changed a couple of case-statements to location_force_reg()
2003-07-06 14:28:04 +00:00
Jonas Maebe
b69219bae4
* also generate the caller paraloc info of a procedure if it doesn't exist
...
yet at the start of pass_2
2003-07-06 10:18:47 +00:00
peter
af3946938a
* check if owner.defowner is valid when checking private/protected
2003-07-05 22:41:59 +00:00
Jonas Maebe
14bd8b899a
* create_paraloc_info() is now called separately for the caller and
...
callee info
* fixed ppc cycle
2003-07-05 20:21:26 +00:00
Jonas Maebe
cc7f340ac8
* set pi_do_call if range/overflow checking is on
2003-07-05 20:15:24 +00:00
Jonas Maebe
0c65bc5a8c
* create_paraloc_info() is now called separately for the caller and
...
callee info
* fixed ppc cycle
2003-07-05 20:13:03 +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
Jonas Maebe
37d266b63d
* fixed range check errors
2003-07-05 20:07:24 +00:00
Jonas Maebe
024590b0fa
* fixed some range check errors that occurred on big endian systems
...
* slightly optimized the swap*() functions
2003-07-05 20:06:28 +00:00
pierre
ecaa77a503
* single threadvar debugging support
2003-07-04 22:41:41 +00:00