florian
4450957bdd
* fixed para locations of fpc_class_new helper call
2003-04-26 20:57:17 +00:00
florian
b5d749d24d
* fixed passing of fpu values by fpu register
2003-04-26 17:21:08 +00:00
peter
c21ca3dfa0
+ added currency support based on int64
...
+ is_64bit for use in cg units instead of is_64bitint
* removed cgmessage from n386add, replace with internalerrors
2003-04-23 20:16:03 +00:00
daniel
9e2084b8d5
* Further register allocator work. Compiler now smaller with new
...
allocator than without.
* Somebody forgot to adjust ppu version number
2003-04-23 14:42:07 +00:00
peter
77cdb2fcae
* fix self passing to fpc_help_fail
2003-04-23 13:20:34 +00:00
florian
0284016ee9
* fixed several issues with powerpc
...
+ applied a patch from Jonas for nested function calls (PowerPC only)
* ...
2003-04-23 12:35:34 +00:00
peter
9ed2ce8c12
* removed some notes/hints
2003-04-22 14:33:38 +00:00
peter
e248c0ece4
* fixed C style array of const
...
* fixed C array passing
* fixed left to right with high parameters
2003-04-22 13:47:08 +00:00
daniel
25059e21b6
+ Implemented the actual register allocator
...
+ Scratch registers unavailable when new register allocator used
+ maybe_save/maybe_restore unavailable when new register allocator used
2003-04-22 10:09:34 +00:00
olle
a069aadad0
* changed newasmsymbol to newasmsymboldata for data symbols
2003-04-06 21:11:23 +00:00
peter
c4ddcc78a8
* generic constructor working for i386
...
* remove fixed self register
* esi added as address register for i386
2003-03-28 19:16:56 +00:00
Jonas Maebe
d3c2a101a5
+ add used scratch registers to usedintbyproc for non-i386
2003-03-22 18:07:18 +00:00
Jonas Maebe
d168ae15df
* lots of new regallocator fixes, both in generic and ppc-specific code
...
(ppc compiler still can't compile the linux system unit though)
2003-03-11 21:46:24 +00:00
daniel
86bcea6ef5
* Code generator converted to new register notation
...
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
peter
228153c661
* maybe_testself now really uses the passed register
2003-01-31 22:47:48 +00:00
peter
a3c3fb9282
* maybe_testvmt added
2003-01-30 21:46:35 +00:00
daniel
ca8b793849
* Fixed internalerror 200301081 problem
2003-01-17 12:45:40 +00:00
daniel
cbe0383afe
* Further work to convert codegenerator register convention;
...
internalerror bug fixed.
2003-01-13 14:54:34 +00:00
florian
2102ce7031
* fixed some PowerPC issues
2003-01-09 22:00:53 +00:00
florian
34a91d9171
* fixed broken PowerPC compiler
2003-01-09 20:41:10 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
peter
af98b48c22
* stackpointer_alloc added for adjusting ESP. Win32 needs
...
this for the pageprotection
2002-12-24 15:56:50 +00:00
peter
de1efae14f
* removed some runerror and writeln
2002-12-20 18:14:04 +00:00
carl
3214bab118
* maxoperands -> max_operands (for portability in rautils.pas)
...
* fix some range-check errors with loadconst
+ add ncgadd unit to m68k
* some bugfix of a_param_reg with LOC_CREFERENCE
2002-12-14 15:02:03 +00:00
peter
f3fc72095f
* splitted defbase in defutil,symutil,defcmp
...
* merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
carl
170f43315d
* document flags2reg
2002-11-17 16:27:31 +00:00
peter
98ee9c11cc
* return error 210 for failed self test
2002-11-16 17:06:28 +00:00
peter
bfd72ad5d5
* merged changes from 1.0.7 up to 04-11
...
- -V option for generating bug report tracing
- more tracing for option parsing
- errors for cdecl and high()
- win32 import stabs
- win32 records<=8 are returned in eax:edx (turned off by default)
- heaptrc update
- more info for temp management in .s file with EXTDEBUG
2002-11-15 01:58:45 +00:00
peter
83dae76625
+ $IMPLICITEXCEPTIONS switch to turn on/off generation of the
...
implicit exception frames for procedures with initialized variables
and for constructors. The default is on for compatibility
2002-10-16 19:01:43 +00:00
carl
67486c96c3
* fixes for Delphi 6 compilation
...
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
peter
d774c8d988
* Copy() is now internal syssym that calls compilerprocs
2002-10-02 18:20:52 +00:00
Jonas Maebe
a15d8cfe39
* a_load_reg_reg() now has two size parameters: source and dest. This
...
allows some optimizations on architectures that don't encode the
register size in the register name.
2002-09-17 18:54:01 +00:00
peter
dd143617e6
* fixed dynarr_decr_ref call
2002-09-09 19:29:29 +00:00
peter
dcd9e0107c
* old logs removed and tabs fixed
2002-09-07 15:25:00 +00:00
florian
6502638258
* several powerpc related stuff fixed
2002-09-01 21:04:47 +00:00
florian
3546ffa8b0
+ added abstract tcg.g_removevaluepara_openarray
2002-09-01 17:05:43 +00:00
peter
7898dcf9ed
+ a_call_reg, a_call_loc added
...
* removed exprasmlist references
2002-09-01 12:09:27 +00:00
carl
ed77671a9b
+ optimize64_op_const_reg implemented (optimizes 64-bit constant opcodes)
...
* more fixes to m68k for 64-bit operations
2002-08-19 18:17:47 +00:00
florian
4144773f01
* result type handling in tcgcal.pass_2 overhauled
...
* better tnode.dowrite
* some ppc stuff fixed
2002-08-17 22:09:43 +00:00
florian
e313bab4ff
* first part of procinfo rewrite
2002-08-17 09:23:33 +00:00
carl
745efb2c47
* issameref() to test if two references are the same (then emit no opcodes)
...
+ ret_in_reg to replace ret_in_acc
(fix some register allocation bugs at the same time)
+ save_std_register now has an extra parameter which is the
usedinproc registers
2002-08-16 14:24:57 +00:00
carl
c33d99adb7
- a_load_sym_ofs_reg removed
...
* loadvmt now calls loadaddr_ref_reg instead
2002-08-15 08:13:54 +00:00
carl
e5895885fe
+ routine to optimize opcodes with constants
2002-08-14 19:26:02 +00:00
peter
425bb45ddc
* renamed current_library to objectlibrary
2002-08-11 14:32:25 +00:00
peter
ac71268ce6
* saving of asmsymbols in ppu supported
...
* asmsymbollist global is removed and moved into a new class
tasmlibrarydata that will hold the info of a .a file which
corresponds with a single module. Added librarydata to tmodule
to keep the library info stored for the module. In the future the
objectfiles will also be stored to the tasmlibrarydata class
* all getlabel/newasmsymbol and friends are moved to the new class
2002-08-11 13:24:10 +00:00
Jonas Maebe
bfbf0ea7c6
* register parameters are now LOC_CREGISTER instead of LOC_REGISTER
2002-08-10 17:15:20 +00:00
carl
1b79ac2058
- moved new_exception and free_exception to ncgutils
2002-08-09 19:10:05 +00:00
carl
eff31e8524
+ more more more documentation
...
+ first version include/exclude (can't test though, not enough scratch for i386 :()...
2002-08-05 18:27:48 +00:00
carl
32f3f65a26
+ added generic exception support (still does not work!)
...
+ more documentation
2002-08-04 19:06:41 +00:00
florian
ed950491a8
* the code generator knows now if parameters are in registers
2002-07-30 20:50:43 +00:00
florian
102ba3a098
* some more ppc fixes
2002-07-29 21:16:02 +00:00
Jonas Maebe
b11d7a19f3
+ tcg64.a_op64_const_reg_reg() and tcg64.a_op64_reg_reg_reg() methods +
...
generic implementation
2002-07-28 15:56:00 +00:00
Jonas Maebe
6b83738e7d
+ generic implementation of tcg.g_flags2ref()
...
* tcg.flags2xxx() now also needs a size parameter
2002-07-27 19:53:51 +00:00
florian
59abf2555b
* types.pas renamed to defbase.pas because D6 contains a types
...
unit so this would conflicts if D6 programms are compiled
+ Willamette/SSE2 instructions to assembler added
2002-07-20 11:57:52 +00:00
florian
336808f6c3
* start of the new generic parameter handling
2002-07-11 14:41:27 +00:00
florian
aa15b56de1
* problems with last commit fixed
2002-07-07 10:16:29 +00:00
florian
77ba8fddb3
* typo fixed
2002-07-07 10:05:34 +00:00
florian
07783d2a0d
* powerpc target fixed, very simple units can be compiled
...
* some basic stuff for better callparanode handling, far from being finished
2002-07-07 09:52:32 +00:00
carl
1c645929ff
* updated generic constructor / destructor calling
2002-07-06 20:09:10 +00:00
Jonas Maebe
0acee5e02e
* fixed cg64 memory leak
2002-07-02 11:40:00 +00:00
peter
4285e99853
* internal linker
...
* reorganized aasm layer
2002-07-01 18:46:20 +00:00
peter
68ce5a00e5
* cg64 patch
...
* basics for currency
* asnode updates for class and interface (not finished)
2002-07-01 16:23:52 +00:00
Jonas Maebe
f73b7c3bc9
* fixed internalerror(10) with -Or for i386 (a_load_ref_ref now saves
...
a general purpose register if it needs one but none are available)
2002-06-06 18:53:17 +00:00
carl
33b79c188a
+ generic FPC_HELP_FAIL
...
+ generic FPC_HELP_DESTRUCTOR instated (original from Pierre)
+ generic FPC_DISPOSE_CLASS
+ TEST_GENERIC define
2002-05-22 19:02:16 +00:00
carl
d75603c2ed
* bugfix of hdisponen (base must be set, not index)
...
* more portability fixes
2002-05-20 13:30:40 +00:00
peter
06ebac4e27
* readded missing revisions
2002-05-18 13:34:04 +00:00
carl
21b3a10f02
+ defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
...
+ try to fix temp allocation (still in ifdef)
+ generic constructor calls
+ start of tassembler / tmodulebase class cleanup
2002-05-16 19:46:34 +00:00
peter
2992e1819c
* removed old logs and updated copyright year
2002-05-14 19:34:38 +00:00
peter
4a176c81bc
* removed n386ld and n386util units
...
* maybe_save/maybe_restore added instead of the old maybe_push
2002-05-13 19:54:36 +00:00
carl
a5c4e33b65
* maybe_loadself portable
2002-05-12 19:57:16 +00:00
peter
4dcd96747e
* moved entry and exitcode to ncgutil and cgobj
...
* foreach gets extra argument for passing local data to the
iterator function
* -CR checks also class typecasts at runtime by changing them
into as
* fixed compiler to cycle with the -CR option
* fixed stabs with elf writer, finally the global variables can
be watched
* removed a lot of routines from cga unit and replaced them by
calls to cgobj
* u32bit-s32bit updates for and,or,xor nodes. When one element is
u32bit then the other is typecasted also to u32bit without giving
a rangecheck warning/error.
* fixed pascal calling method with reversing also the high tree in
the parast, detected by tcalcst3 test
2002-05-12 16:53:04 +00:00
peter
268e4bb7e7
* use saveregisters for incr routines, saves also problems with
...
the optimizer
2002-04-26 15:19:04 +00:00
peter
cc8c4d7093
* moved more routines from cga/n386util
2002-04-25 20:16:38 +00:00
peter
624e5bd699
* fixed @methodpointer
2002-04-22 16:30:05 +00:00
carl
59f8a16c39
+ a_jmp_cond -> a_jmp_always (a_jmp_cond is NOT portable)
...
+ changeregsize -> rg.makeregsize
2002-04-21 15:24:38 +00:00
carl
87aa88e9b7
+ generic FPC_CHECKPOINTER
...
+ first parameter offset in stack now portable
* rename some constants
+ move some cpu stuff to other units
- remove unused constents
* fix stacksize for some targets
* fix generic size problems which depend now on EXTEND_SIZE constant
2002-04-20 21:32:23 +00:00
peter
3bcfe33002
* fixed stackcheck that would be called recursively when a stack
...
error was found
* generic changeregsize(reg,size) for i386 register resizing
* removed some more routines from cga unit
* fixed returnvalue handling
* fixed default stacksize of linux and go32v2, 8kb was a bit small :-)
2002-04-15 19:44:18 +00:00
carl
021a0670c2
+ more documentation
2002-04-07 13:18:19 +00:00
carl
59a229acf7
+ documentation
2002-04-07 09:12:46 +00:00
Jonas Maebe
71a52a4aeb
* several powerpc-related additions and fixes
2002-04-06 18:10:42 +00:00
peter
5e7a1e3729
* removed unused units
...
* use tlocation.size in cg.a_*loc*() routines
2002-04-04 19:05:54 +00:00
peter
5b242f7741
* tlocation,treference update
...
* LOC_CONSTANT added for better constant handling
* secondadd splitted in multiple routines
* location_force_reg added for loading a location to a register
of a specified size
* secondassignment parses now first the right and then the left node
(this is compatible with Kylix). This saves a lot of push/pop especially
with string operations
* adapted some routines to use the new cg methods
2002-04-02 17:11:27 +00:00
Jonas Maebe
7fb55bf4e4
+ a_loadfpu_* and a_loadmm_* methods in tcg
...
* register allocation is now handled by a class and is mostly processor
independent (+rgobj.pas and i386/rgcpu.pas)
* temp allocation is now handled by a class (+tgobj.pas, -i386\tgcpu.pas)
* some small improvements and fixes to the optimizer
* some register allocation fixes
* some fpuvaroffset fixes in the unary minus node
* push/popusedregisters is now called rg.save/restoreusedregisters and
(for i386) uses temps instead of push/pop's when using -Op3 (that code is
also better optimizable)
* fixed and optimized register saving/restoring for new/dispose nodes
* LOC_FPU locations now also require their "register" field to be set to
R_ST, not R_ST0 (the latter is used for LOC_CFPUREGISTER locations only)
- list field removed of the tnode class because it's not used currently
and can cause hard-to-find bugs
2002-03-31 20:26:33 +00:00
peter
b4cc4b7b01
* removed compiler warnings
2002-03-04 19:10:11 +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
peter
f709d48789
* removed obsolete newst defines
2001-09-30 21:26:42 +00:00
Jonas Maebe
39f67208a8
* made most constant and mem handling processor independent
2001-09-30 16:17:17 +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
florian
9746f4c2d6
* some cg reorganisation
...
* some PPC updates
2001-08-26 13:35:06 +00:00