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