Commit Graph

90 Commits

Author SHA1 Message Date
Jonas Maebe
6c09cba112 * some more allocRegBetween fixes (-al didn't function previously
if the compiler was compiled with -OG2p3r)
2000-03-26 10:58:47 +00:00
Jonas Maebe
a890c59e05 * fixed bug in regUsedAfterInstruction (it didn't convert the reg
to 32bit before checking)
  * result: make cycle now works with -OG3p3r!!!!
2000-03-26 08:46:52 +00:00
Jonas Maebe
3555239e29 * remove dealloc/alloc of reg1 between "movl %reg1,%reg2;
movl %reg2,%reg1" when removing the second instruction (it
    confused the CSE and caused errors with -Or)
2000-03-25 18:57:02 +00:00
Jonas Maebe
0ab87d5ed8 * modifications to make the compiler functional when compiled with
-Or
2000-02-13 14:21:50 +00:00
Jonas Maebe
958d6dacef * fix for imul optimization in popt386 (exclude top_ref as first
argument)
  * in csopt386: change "mov reg1,reg2; <several operations on reg2>;
    mov reg2,reg1" to "<several operations on reg1>" (-dnewopt...)
2000-02-12 19:28:56 +00:00
Jonas Maebe
0cbad4fe45 + change "mov reg1,reg2;imul x,reg2" to "imul x,reg1,reg2" in popt386
(-dnewoptimizations)
  * shl(d) and shr(d) are considered to have a hardcoded register if
    they use cl as shift count (since you can't replace them with
    another register) in csopt386 (also for -dnewoptimizations)
2000-02-12 14:10:14 +00:00
peter
4a4a24b6e8 * log truncated 2000-02-09 13:22:42 +00:00
Jonas Maebe
245975562b * fpuloadstore optimizations are now done before and after the CSE 2000-02-04 13:53:04 +00:00
florian
b2098c4de5 * some improvemenst to cmov support
* disabled excpetion frame generation in cosntructors temporarily
2000-01-24 12:17:22 +00:00
florian
332c7a568f * CMOV support in optimizer (in define USECMOV)
+ start of support of exceptions in constructors
2000-01-23 21:29:14 +00:00
Jonas Maebe
d6bcb83f95 + change "lea x(reg),reg" to "add x,reg" (-dnewoptimizations)
* detection whether edi is used after instructions (since regalloc
    info for it is now available)
  * better regUsedAfterInstruction function
2000-01-22 16:05:15 +00:00
pierre
86058ed342 * bug fix for bug #802 2000-01-21 11:26:19 +00:00
Jonas Maebe
f8e779a438 * fixed a serious memory leak 2000-01-11 17:14:49 +00:00
Jonas Maebe
23d69a5126 * changed edi allocation to use getexplicitregister32/ungetregister
(adapted tgeni386 a bit for this) and enabled it by default
  * fixed very big and stupid bug of mine in cg386mat that broke the
    include() code (and make cycle :( ) if you compiled without
    -dnewoptimizations
2000-01-09 12:34:59 +00:00
peter
e525797c51 * updated copyright to 2000 2000-01-07 01:14:18 +00:00
peter
972ba5215a * fixed and;jmp being translated into test;jmp 1999-12-30 17:56:44 +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
peter
0512ba80fb + ttype, tsymlist 1999-11-30 10:40:42 +00:00
Jonas Maebe
e250138c67 + change "mov var,reg; add/shr/... x,reg; mov reg,var" to
"add/shr/... x,var" (if x is a const or reg, suggestion from Peter)
    Enable with -dfoldArithOps
1999-11-27 23:47:55 +00:00
Jonas Maebe
7d1b3066d9 * fixed some missed optimizations because 8bit regs were not always
taken into account
1999-11-21 13:09:41 +00:00
Jonas Maebe
9ffa216681 * don't remove align objects between JMP's and labels 1999-11-13 19:03:56 +00:00
Jonas Maebe
621cecced4 * getfinaldestination works completely again (a lot of functionality
got lost in the conversion resulting from the removal of
    ait_labeled_instruction)
1999-11-06 16:24:00 +00:00
peter
0887060ff2 * truncated log to 20 revs 1999-11-06 14:34:16 +00:00
peter
6b1ab5eb31 * procinfo is now a pointer
* support for result setting in sub procedure
1999-09-27 23:44:46 +00:00
florian
ac20c15ef4 + fld reg;fxxx to fxxxr reg optimization 1999-09-05 14:27:19 +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
618547adf0 * fixed pop/push optmization 1999-08-23 10:20:46 +00:00
pierre
e5df050607 * avoid unused locals 1999-08-10 12:30:00 +00:00
Jonas Maebe
aff06b2d4e * "add/sub const,%esp;sub $2,%esp" wasn't always optimized 1999-08-05 15:02:48 +00:00
florian
ca53eee67e * renamed i386asm and i386base to cpuasm and cpubase 1999-08-04 00:22:34 +00:00
Jonas Maebe
6e07359718 * fix for sar/shr-shl optimization 1999-08-03 17:13:28 +00:00
Jonas Maebe
19e34088fa * fix so (,reg) gets optimized to (reg) 1999-07-30 18:17:55 +00:00
Jonas Maebe
ab9734f7d5 * enabled "mov reg1,reg2;mov (reg2,..), reg2" also if the second mov is
a movzx or movsx
1999-07-01 18:12:16 +00:00
Jonas Maebe
4e6bcf9ed7 * merged 1999-06-23 12:33:52 +00:00
peter
c261796ebf * merged 1999-06-18 09:55:30 +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
peter
bc903063c1 * removed R_DEFAULT_SEG
* uniform float names
1999-05-12 00:19:34 +00:00
Jonas Maebe
ddc47d6753 + remove the segment prefixes from LEA instructions 1999-05-05 16:19:04 +00:00
florian
253ba04a57 * a delphi compiled compiler recompiles ppc 1999-05-05 10:05:48 +00:00
florian
8836c26503 * several bugs regarding -Or fixed 1999-05-02 21:33:52 +00:00
peter
8bf7af6b29 * fixed dec -> sub $1 opt which didn't set ops=2 1999-05-02 14:26:31 +00:00
peter
611da2d24e * merged nasm compiler
* old asm moved to oldasm/
1999-05-01 13:23:57 +00:00
florian
d27b21891b * changes of Bruessel:
+ message handler can now take an explicit self
     * typinfo fixed: sometimes the type names weren't written
     * the type checking for pointer comparisations and subtraction
       and are now more strict (was also buggy)
     * small bug fix to link.pas to support compiling on another
       drive
     * probable bug in popt386 fixed: call/jmp => push/jmp
       transformation didn't count correctly the jmp references
     + threadvar support
     * warning if ln/sqrt gets an invalid constant argument
1999-04-28 06:01:54 +00:00
peter
67aad628f8 * skipped vesion 1.44 :( 1999-04-20 11:01:42 +00:00
peter
2c62da11c8 * fixed typo with and/or type check 1999-04-20 10:32:39 +00:00
pierre
f58a4b485c * ifdef USE_OP3 released (changed into ifndef NO_OP3)
* SHRD and SHLD first operand (ATT syntax) can only be CL reg or immediate const
1999-04-17 22:16:55 +00:00
Jonas Maebe
e16f0f99db * changes to work with -dUSE_OP3 1999-04-16 15:16:29 +00:00
peter
ac80a9af26 * fixed browcol
+ -ar to show regalloc info in .s file
1999-04-10 16:15:00 +00:00
peter
e1ad502d10 * fixed mov reg,treg;mov treg,x bug 1999-04-09 08:33:05 +00:00