Jonas Maebe
bd928ecf72
* fix for web bug #1112 and a bit of clean up in csopt386 (merged from
...
fixes branch)
2000-08-23 12:55:10 +00:00
Jonas Maebe
c9de6bc568
* fixed a potential bug in destroyregs regarding the removal of
...
unused loads
* added destroyDependingRegs() procedure and use it for the fix in
the previous commit (safer/more complete than what was done before)
2000-08-19 17:53:29 +00:00
Jonas Maebe
441d9d137c
* fixed bug where the contents of a register would not be destroyed
...
if another register on which these contents depend is modified
(not really merged, but same idea as fix in fixes branch,
LAST_MERGE tag is updated)
2000-08-19 09:08:59 +00:00
Jonas Maebe
ce46621762
* daopt386: changes to getnextinstruction/getlastinstruction so they
...
ignore labels who have is_addr set
+ daopt386/csopt386: remove loads of registers which are overwritten
before their contents are used (especially usefull for removing superfluous
maybe_loadesi outputs and push/pops transformed by below optimization
+ popt386: transform pop/pop/pop/.../push/push/push to sequences of
'movl x(%esp),%reg' (only active when compiling a go32v2 compiler
currently because I don't know whether it's safe to do this under Win32/
Linux (because of problems we had when using esp as frame pointer on
those os'es)
2000-07-21 15:19:54 +00:00
michael
2949824a69
+ Patch to 1.1
2000-07-14 05:11:48 +00:00
michael
650fbb86aa
+ removed logs
2000-07-13 11:32:24 +00:00
michael
e7aca136a1
+ Initial import
2000-07-13 06:29:38 +00:00
peter
e60344ccf7
* removed notes
2000-06-01 11:01:20 +00:00
Jonas Maebe
2eb73a055e
* destroyreg overwrote some memory if the reg was an FPU register
2000-04-29 16:56:45 +00:00
Jonas Maebe
e4ceb46242
* fixed a serious bug in the CSE which (I think) only showed with
...
-dnewoptimizations when using multi-dimensional arrays with
elements of a size different from 1, 2 or 4 (especially strings).
* made the DFA/CSE more robust (much less dependent on specifics of the
code generator)
2000-04-10 12:45:56 +00:00
Jonas Maebe
c18d6589e4
* moved AllocRegBetween() from csopt386 to this unit because it's now
...
also used by popt386
2000-03-25 18:58:00 +00:00
peter
2ba0ebe607
* removed warnings/notes
2000-02-24 18:41:38 +00:00
Jonas Maebe
8a40388de3
* fixed bug due to lack of support for top_symbol operands
2000-02-10 14:57:13 +00:00
peter
4a4a24b6e8
* log truncated
2000-02-09 13:22:42 +00:00
Jonas Maebe
4e361ef71f
* better support for regvars (still needs a move of the call to the optimize
...
procedure to a place where resetusableregisters is not yet called to work)
* small regallocation fixes for -dnewoptimizations
2000-02-04 13:52:17 +00:00
Jonas Maebe
38b993f7dc
* moved skipinstr from daopt386 to aasm
...
* fixed crashing bug with -dreplacereg in csopt386.pas
2000-01-28 15:15:31 +00:00
Jonas Maebe
b15a98cfa4
* better handling of exit(func_result) (no release of register that
...
holds the function result added)
* several other small improvements for reg allocation fixes
2000-01-22 16:08:06 +00:00
Jonas Maebe
5910b48cbe
* released -dalignreg
...
* some small fixes to -dnewOptimizations helper procedures
2000-01-13 13:07:05 +00:00
Jonas Maebe
86ff0db0b5
+ (de)allocation info for EDI to fix reported bug on mailinglist.
...
Also some (de)allocation info for ESI added. Between -dallocEDI
because at this time of the night bugs could easily slip in ;)
2000-01-09 01:44:18 +00:00
peter
e525797c51
* updated copyright to 2000
2000-01-07 01:14:18 +00:00
Jonas Maebe
8272526892
* CSE of constant loading in regs works properly again
...
+ if a constant is stored into memory using "mov const, ref" and
there is a reg that contains this const, it is changed into
"mov reg, ref"
1999-12-05 16:48:43 +00:00
peter
ad2b1fb278
* newoptimizations define added
1999-12-02 11:26:41 +00:00
Jonas Maebe
ff017bbd5f
* even more missing register deallocations are added!
1999-11-27 23:45:43 +00:00
Jonas Maebe
653d672377
* improved fixing of missing regallocs (they're almost all correct
...
now!)
1999-11-21 13:06:30 +00:00
Jonas Maebe
6746b61501
* fixed small typo (C_M* -> Ch_M*) so -darithopt compiles again
1999-11-20 12:50:32 +00:00
Jonas Maebe
dce0f2cd38
* fixed stupid typo in previous commit :(
1999-11-14 11:25:38 +00:00
Jonas Maebe
194c612b07
* div, idiv and mul destroy edx!!
1999-11-13 19:01:51 +00:00
Jonas Maebe
8a2453ab1d
* much more complete/waterproof RegModifiedByInstruction()
1999-11-07 14:57:09 +00:00
peter
0887060ff2
* truncated log to 20 revs
1999-11-06 14:34:16 +00:00
Jonas Maebe
2688bfd9ec
+ first implementation of choosing least used register for alignment code
...
(not yet working, between ifdef alignreg)
1999-11-05 16:01:45 +00:00
peter
f5a9e30c98
* insns.dat is used to generate all i386*.inc files
1999-10-27 16:11:27 +00:00
Jonas Maebe
a9b5e27bc1
* finally got around making GetNextInstruction return false when
...
the current pai object is a AsmBlockStart marker
* changed a loop in aopt386 which was incompatible with this change
1999-10-23 14:44:24 +00:00
florian
fa19f0aa09
- removed the hcodegen use in the new cg, use cgbase instead
1999-10-14 14:57:51 +00:00
Jonas Maebe
2ad775b888
* small bugfix in ArrayRefsEq
1999-10-07 16:07:35 +00:00
Jonas Maebe
e62d58ea51
* writing to a position in an array now only destroys registers
...
containing a reference pointing somewhere in that array (since my last
fix, it behaved like a write to a pointer location)
1999-09-29 13:49:53 +00:00
peter
6b1ab5eb31
* procinfo is now a pointer
...
* support for result setting in sub procedure
1999-09-27 23:44:46 +00:00
Jonas Maebe
552b86f85b
* fixed bug in destroyrefs (indexes are now handled as pointers)
1999-09-21 15:46:58 +00:00
Jonas Maebe
9793c4eee9
* fixed typo's in -darithopt
1999-09-05 12:37:50 +00:00
Jonas Maebe
5fc1435036
* changed pai386, paippc and paiapha (same for tai*) to paicpu (taicpu)
1999-08-25 11:59:32 +00:00
Jonas Maebe
8dc154ce24
* minor fixes regarding the reading of operands
1999-08-18 13:25:54 +00:00
peter
bfe185d206
+ KNI instructions
1999-08-12 14:36:01 +00:00
Jonas Maebe
13bffb711a
* fix in -darithopt code (sometimes crashed on 8/16bit regs)
1999-08-05 15:01:52 +00:00
florian
ca53eee67e
* renamed i386asm and i386base to cpuasm and cpubase
1999-08-04 00:22:34 +00:00
Jonas Maebe
e2302d38bc
* bugfix in DestroyRefs
1999-08-02 14:35:21 +00:00
Jonas Maebe
77fef43fda
* also add arithmetic operations to instruction sequences contained in registers
...
(compile with -darithopt, very nice!)
1999-08-02 12:12:53 +00:00
Jonas Maebe
8dcdd36b13
* small bugfix in instructionsequal
...
* small bugfix in reginsequence
* made regininstruction a bit more logical
1999-07-30 18:18:51 +00:00
florian
774df6096e
* bug #487 fixed, (inc(<property>) isn't allowed)
...
* more fixes to compile with Delphi
1999-07-18 14:47:19 +00:00
Jonas Maebe
8c52e10620
* removed unused AsmL parameter from FindLoHiLabels
1999-07-01 18:21:21 +00:00
peter
0b272f13c7
* removed oldasm
...
* plabel -> pasmlabel
* -a switches to source writing automaticly
* assembler readers OOPed
* asmsymbol automaticly external
* jumptables and other label fixes for asm readers
1999-05-27 19:43:55 +00:00
Jonas Maebe
26fa893ed7
* seperate OPTimizer INFO pointer field in tai object
...
* fix to GetLastInstruction that sometimes caused a crash
1999-05-08 20:40:02 +00:00