Commit Graph

232 Commits

Author SHA1 Message Date
peter
60d2ddbbd5 * protected/private symbols parsing fixed 2001-12-31 16:59:41 +00:00
Jonas Maebe
dc912b6358 * changed remaining "getregister32" calls to "getregisterint" 2001-12-31 09:53:15 +00:00
Jonas Maebe
f15dbd7bf0 * range checking is now processor independent (part in cgobj, part in cg64f32) and should work correctly again (it needed some changes after the changes of the low and high of tordef's to int64) * maketojumpbool() is now processor independent (in ncgutil) * getregister32 is now called getregisterint 2001-12-30 17:24:45 +00:00
Jonas Maebe
91f567bb66 * powerpc/cgcpu.pas compiles :)
* several powerpc-related fixes
  * cpuasm unit is now based on common tainst unit
  + nppcmat unit for powerpc (almost complete)
2001-12-29 15:28:57 +00:00
Jonas Maebe
928493e3ba * made 'mod powerof2' -> 'and' optimization processor independent 2001-12-29 15:27:24 +00:00
Jonas Maebe
92977ca6ee * fixed fpuregister counting errors ("merged") 2001-12-27 15:33:58 +00:00
florian
521c608ece * array of const can now take widestring parameters as well 2001-12-17 23:16:05 +00:00
Jonas Maebe
b49f0958a6 * part of my fix for dynarray -> open array conversion, forgot to
commit yesterday :(
2001-12-11 08:14:17 +00:00
Jonas Maebe
cd378a2881 * fixed type conversions from dynamic arrays to open arrays 2001-12-10 14:34:04 +00:00
Jonas Maebe
760e88791c * fixed web bug #1716 2001-12-07 13:03:49 +00:00
florian
b60666ae1f + parasym to tparaitem added 2001-12-06 17:57:33 +00:00
Jonas Maebe
5501aa4e9a * converted lo/hi to processor independent code, generated code is the
same as before (when turning on the optimizer)
2001-12-04 15:59:03 +00:00
Jonas Maebe
f9e7a027b9 * unnecessary loads of constants are now also remove by
removePrevNotUsedLoad()
2001-12-04 15:58:13 +00:00
Jonas Maebe
8112592c45 * never generate any "shll/shrl $0,%reg" anymore 2001-12-04 15:57:28 +00:00
peter
e45bb82d81 * freemem change to value parameter
* torddef low/high range changed to int64
2001-12-03 21:48:41 +00:00
Jonas Maebe
6dbf240bde * less unnecessary regvar loading with if-statements 2001-12-02 16:19:17 +00:00
Jonas Maebe
fe8b328091 * added missing allocregbetween() call for a memtoreg() optimization 2001-11-30 16:35:02 +00:00
peter
e94751b801 * changed aktprocsym to aktprocdef for stabs generation 2001-11-18 18:59:59 +00:00
florian
cee59f5e0d * handling of ansi- and widestring results improved 2001-11-18 00:00:34 +00:00
Jonas Maebe
60dc4bf0a9 * moved call to "cleanup_regvars" to cga.pas for i386 because it has
to insert "fstp %st0" instructions after the exit label
2001-11-06 16:39:02 +00:00
peter
a059a1671d * fixed crash with inlining after aktprocdef change 2001-11-02 23:24:40 +00:00
Jonas Maebe
a87a30b831 * fixed web bug #1665 (allow char to chararray type conversion) ("merged") 2001-11-02 23:24:11 +00:00
peter
d2e1952377 * procsym definition rewrite 2001-11-02 22:58:00 +00:00
peter
ac400051bd * allow assignment of overloaded procedures to procvars when we know
which procedure to take
2001-10-28 17:22:25 +00:00
Jonas Maebe
e02d95ed13 + replace mem accesses to locations to which a reg was stored recently with that reg 2001-10-27 10:20:43 +00:00
peter
e37dbf904d * calling convention rewrite 2001-10-25 21:22:32 +00:00
peter
cb06c9bcb8 * array access for properties added 2001-10-21 12:33:05 +00:00
peter
6a42a332dd * concatcopy could release a wrong reference because the offset was
increased without restoring the original before the release of
    a temp
2001-10-20 17:22:57 +00:00
Jonas Maebe
66567674ba + also replace mem references in modify operands with regs 2001-10-14 11:50:21 +00:00
Jonas Maebe
32deddeab1 * finetuned register allocation info for assignments 2001-10-14 11:49:51 +00:00
Jonas Maebe
82f7cf0957 + memory references are now replaced by register reads in "regular"
instructions (e.g. "addl ref1,%eax" will be replaced by "addl %ebx,%eax"
    if %ebx contains ref1). Previously only complete load sequences were
    optimized away, but not such small accesses in other instructions than
    mov/movzx/movsx
2001-10-12 13:58:05 +00:00
Jonas Maebe
97c1152c6d * finer granularity for allocation of reused/replaced registers 2001-10-12 13:55:03 +00:00
Jonas Maebe
eefd8e9f86 * fixed small crashing bug ("merged")
* some more optimizations are now only done once at the end of the optimizing
    cycle instead of every iteration
2001-10-12 13:53:24 +00:00
Jonas Maebe
8a2c142e46 * fixed internalerror(10) due to previous fpu overflow fixes ("merged")
* fixed bug in n386add (introduced after compilerproc changes for string
    operations) where calcregisters wasn't called for shortstring addnodes
  * NOTE: from now on, the location of a binary node must now always be set
     before you call calcregisters() for it
2001-10-12 13:51:51 +00:00
Jonas Maebe
bdf2593265 * fixed range check errors 2001-10-04 14:33:28 +00:00
peter
7312815d01 * int64->boolean fixed 2001-09-30 21:28:34 +00:00
Jonas Maebe
39f67208a8 * made most constant and mem handling processor independent 2001-09-30 16:17:17 +00:00
Jonas Maebe
a40c2b8dd0 - removed unused units form uses-clause and unused local vars 2001-09-30 16:16:28 +00:00
Jonas Maebe
f33d23922a - removed unnecessary i386 pass_2 of as- and isnode and added dummy generic ones 2001-09-30 16:12:46 +00:00
Jonas Maebe
170234049b - removed unused code (replaced by processor independent code) 2001-09-29 21:34:04 +00:00
Jonas Maebe
fc6d300a95 * almost all second pass typeconvnode helpers are now processor independent
* fixed converting boolean to int64/qword
  * fixed register allocation bugs which could cause internalerror 10
  * isnode and asnode are completely processor indepent now as well
  * fpc_do_as now returns its class argument (necessary to be able to use it
    properly with compilerproc)
2001-09-29 21:32:46 +00:00
Jonas Maebe
fac1fb3d6c * fixed bug in a_load_reg_reg + implemented a_call 2001-09-29 21:32:19 +00:00
Jonas Maebe
b374bec6fb * changed all flow control structures (except for exception handling
related things) to processor independent code (in new ncgflw unit)
  + generic cgobj unit which contains lots of code generator helpers with
    global "cg" class instance variable
  + cgcpu unit for i386 (implements processor specific routines of the above
    unit)
  * updated cgbase and cpubase for the new code generator units
  * include ncgflw unit in cpunode unit
2001-09-28 20:39:32 +00:00
Jonas Maebe
8e70f9aaf8 * fixed big bug in my previous changes (the arguent for bts/btr is always
a 32 bit register, but it wasn't cleared properly if the value was only
    an 8 bit one)
2001-09-28 20:38:51 +00:00
Jonas Maebe
49f399d750 * fixed bug reported by sg about self not being restored after calling
setlength
2001-09-27 13:03:18 +00:00
michael
d75c4d6486 * Smartlinking with interfaces fixed
* Better smartlinking for rtti and init tables
2001-09-19 11:04:41 +00:00
peter
45dab81414 * merged netbsd, fpu-overflow from fixes branch 2001-09-17 21:29:10 +00:00
Jonas Maebe
e8c8f8785a * fixed bug with assigning ansistrings (left^.location was released too
early, caused bug reported by Aleksey V. Vaneev in mailing list on
    2001/09/07 regarding 'problems with nested procedures and local vars'
    ("merged" from cga.pas in the fixes branch)
2001-09-09 08:51:09 +00:00
Jonas Maebe
100a911290 * when calling an inline procedure inside a nested procedure, the
framepointer was being pushed on the stack, but this pushed framepointer
    was never used nor removed from the stack again after the inlining was
    done. It's now simply not pushed anymore, because the inlined procedure
    can get the previous framepointer from the procedure in which it is being
    inlined (merged)
2001-09-09 08:50:15 +00:00
Jonas Maebe
a39cd8a580 * made multiplying, dividing and mod'ing of int64 and qword processor
independent with compilerprocs (+ small optimizations by using shift/and
    where possible)
2001-09-05 15:22:09 +00:00