Commit Graph

571 Commits

Author SHA1 Message Date
peter
c577c78366 * removed ret_in_acc, it's the reverse of ret_in_param
* fixed ret_in_param for win32 cdecl array
2003-05-13 15:16:13 +00:00
florian
91bbc7bea3 * error when address of an abstract method is taken
* fixed some x86-64 problems
  * merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
de6916276a * merged more x86-64/i386 code 2003-04-30 15:45:35 +00:00
peter
60978ba89c * aktprocdef renamed to current_procdef
* procinfo renamed to current_procinfo
  * procinfo will now be stored in current_module so it can be
    cleaned up properly
  * gen_main_procsym changed to create_main_proc and release_main_proc
    to also generate a tprocinfo structure
  * fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
a5e7f02527 * updated for removed lexlevel 2003-04-27 07:48:05 +00:00
peter
7f14891d66 * aktprocdef cleanup, aktprocdef is now always nil when parsing
a new procdef declaration
  * aktprocsym removed
  * lexlevel removed, use symtable.symtablelevel instead
  * implicit init/final code uses the normal genentry/genexit
  * funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
peter
a23e3f0a2f * add string returns in LOC_REFERENCE 2003-04-26 09:12:55 +00:00
peter
f4b818fc1d * removed funcretn,funcretsym, function result is now in varsym
and aliases for result and function name are added using absolutesym
  * vs_hidden parameter for funcret passed in parameter
  * vs_hidden fixes
  * writenode changed to printnode and released from extdebug
  * -vp option added to generate a tree.log with the nodetree
  * nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
florian
754a34200a * merged i386/aasmcpu and x86_64/aasmcpu to x86/aasmcpu 2003-04-25 12:43:40 +00:00
florian
ad2f6d6dab * merged agx64att and ag386att to x86/agx86att 2003-04-25 12:04:31 +00:00
florian
98d09473e4 * merged i386/cpubase and x86_64/cpubase to x86/cpubase;
different stuff went to cpubase.inc
2003-04-25 11:12:09 +00:00
daniel
6aa01a99a9 * Ifdefs around a lot of calls to cleartempgen
* Fixed registers that are allocated but not freed in several nodes
  * Tweak to register allocator to cause less spills
  * 8-bit registers now interfere with esi,edi and ebp
    Compiler can now compile rtl successfully when using new register
    allocator
2003-04-25 08:25:26 +00:00
florian
7f04bb7272 * ncgopt replaces n386opt 2003-04-24 11:19:13 +00:00
florian
2d2b85bacb - replaced by ncgopt 2003-04-24 11:18:46 +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
daniel
7677b18770 * Removed usage of edi in a lot of places when new register allocator used
+ Added newra versions of g_concatcopy and secondadd_float
2003-04-23 09:51:16 +00:00
peter
4cf63d5b32 * wrong location_copy for include/exclude 2003-04-23 09:50:31 +00:00
peter
47489f2376 * firstpass uses expectloc
* checks if there are differences between the expectloc and
    location.loc from secondpass in EXTDEBUG
2003-04-22 23:50:22 +00:00
peter
9ed2ce8c12 * removed some notes/hints 2003-04-22 14:33:38 +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
peter
01d13cb85e * use location_reset 2003-04-22 09:54:18 +00:00
peter
811fdad9b6 * removed some ie checks 2003-04-21 20:05:10 +00:00
peter
e21dab9739 * count address regs separate 2003-04-21 19:16:49 +00:00
peter
7e9e15cce8 * when ecx is not available allocated another register 2003-04-21 19:15:26 +00:00
daniel
0c93e261e7 * Added some code to keep track of move instructions in register
allocator
2003-04-17 16:48:21 +00:00
daniel
ba9d0abb67 * Tweaked register allocate/deallocate positition to less interferences
are generated.
2003-04-17 10:02:48 +00:00
peter
6a16389f67 * moved generic code from n386cal to ncgcal, i386 now also
uses the generic ncgcal
2003-04-04 15:38:56 +00:00
peter
4a0b87ac59 * fix classmethod from classmethod call
* move BeforeDestruction/AfterConstruction calls to
    genentrycode/genexitcode instead of generating them on the fly
    after a call to a constructor
2003-03-30 20:59:07 +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
armin
8473dada93 * avoid problems with the ide in init/dome 2003-03-26 12:50:54 +00:00
Tomas Hajny
729614ff74 + emx target added 2003-03-23 23:33:10 +00:00
peter
3f0491bb38 * changed reg2opsize to function 2003-03-18 18:15:53 +00:00
peter
8c777c8c15 * allow character constants in reference declaration 2003-03-17 21:32:52 +00:00
peter
12cff8cae8 * SUPPORT_MMX define compile fix 2003-03-17 15:52:57 +00:00
Jonas Maebe
e8a0c0cd62 * and more new register allocator fixes (in the i386 code generator this
time). At least now the ppc cross compiler can compile the linux
    system unit again, but I haven't tested it.
2003-03-13 19:52:23 +00:00
daniel
eedc447400 + Added newra version of Ti386shlshrnode
+ Added interference graph construction code
2003-03-08 20:36:41 +00:00
daniel
fb55235acc * Work to handle new register notation in ag386nsm
+ Added newra version of Ti386moddivnode
2003-03-08 13:59:16 +00:00
daniel
2801609d3f * Created newra version of secondmul in n386add.pas 2003-03-08 10:53:48 +00:00
daniel
e8f649f5c2 + $define newra will enable new register allocator
+ getregisterint will return imaginary registers with $newra
  + -sr switch added, will skip register allocation so you can see
    the direct output of the code generator before register allocation
2003-03-08 08:59:07 +00:00
daniel
b253f0b8a1 * Improved getregisterint 2003-03-07 21:57:53 +00:00
daniel
436e47a87d * Fixed internalerror 7843 issue 2003-03-06 11:35:50 +00:00
daniel
af4b350879 * Fixed an illegal use of makeregsize 2003-02-26 23:06:13 +00:00
daniel
0815444fb5 * Changed no longer correct fillchar of reference into location_reset 2003-02-26 22:57:44 +00:00
daniel
18ab545cb7 * Fixed the optimizer 2003-02-26 21:15:43 +00:00
daniel
49849a0b86 * Disabled mov reg,0 -> xor reg,reg optimization 2003-02-26 13:24:59 +00:00
daniel
a2cb9b34ae * Properly fixed reversed operands bug 2003-02-25 07:41:54 +00:00
daniel
14a7d749a2 * Reversed operand order in an optimization in postpeepholeopt 2003-02-24 21:27:01 +00:00
pierre
8520cddfe6 * fix a range check error 2003-02-20 15:52:58 +00:00
daniel
4c450c3bb0 * Fixed a few issues 2003-02-19 22:39:56 +00:00
daniel
86bcea6ef5 * Code generator converted to new register notation
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
daniel
538641a07a - Removed reg_2_opsize array 2003-02-03 22:47:14 +00:00
carl
59d3edeec7 * Several bugfixes for m68k target (register alloc., opcode emission)
+ VIS target
  + Generic add more complete (still not verified)
2003-02-02 19:25:54 +00:00
peter
25d973ef16 * self fixes for static methods (merged) 2003-01-30 21:46:57 +00:00
daniel
7be2b727f2 * Work on register conversion 2003-01-13 18:37:44 +00:00
daniel
cbe0383afe * Further work to convert codegenerator register convention;
internalerror bug fixed.
2003-01-13 14:54:34 +00:00
daniel
7b2fd10fb4 * Converted some code in cgx86.pas to new register numbering 2003-01-09 20:40:59 +00:00
daniel
6e507ba483 * Added register conversion 2003-01-09 15:49:56 +00:00
daniel
fd4632c85b * Added register convesrion procedure 2003-01-08 22:32:36 +00:00
daniel
55a161bbbf * Tregister changed into a record 2003-01-08 18:43:56 +00:00
florian
b59b436130 * x86-64 compiles
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
peter
2d13cc9d04 * Long symbol names support 2002-12-24 18:10:34 +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
46ed8eb932 * fixed pushing of records>8 bytes with stdcall
* simplified hightree loading
2002-12-17 22:19:33 +00:00
florian
1da30f2610 * tcallnode.paraitem introduced, all references to defcoll removed 2002-12-15 21:30:12 +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
florian
121ca40b39 * some variant <-> dyn. array stuff 2002-12-05 14:27:25 +00:00
florian
1b2a455ced * two comments fixed 2002-12-05 14:18:09 +00:00
carl
fa27bba8c2 + use FPC_CHECKPOINTER once again 2002-12-03 22:14:12 +00:00
carl
051cd78965 * some small cleanup (remove some specific operators which are not supported) 2002-12-01 22:08:34 +00:00
carl
5b05c7d2c3 - removed unused message 2002-11-30 23:16:39 +00:00
peter
1b116848d8 * cdecl array of const fixes 2002-11-27 20:04:38 +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
60d17dbc01 * some small speed optimizations
+ added several new warnings/hints
2002-11-23 22:50:04 +00:00
peter
a496dbe1ff * pass proccalloption to ret_in_xxx and push_xxx functions 2002-11-18 17:31:54 +00:00
mazen
a835405a27 * fixed a compilation bug accmulator-->accumulator, in definition of return_result_reg 2002-11-17 18:26:15 +00:00
mazen
41153e2b1a + return_result_reg and function_result_reg are now used, in all plateforms, to pass functions result between called function and its caller. See the explanation of each one 2002-11-17 17:49:08 +00:00
carl
64655be168 * memory optimization (3-4%) : cleanup of tai fields,
cleanup of tdef and tsym fields.
  * make it work for m68k
2002-11-17 16:31:55 +00:00
peter
edbd98176b * made tasmsymbol.refs private (merged) 2002-11-15 16:29:30 +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
pierre
f723f73f77 * correct last wrong fix for tw2158 2002-10-31 13:28:32 +00:00
pierre
1bd92de936 * merge of fix for tw2158 bug 2002-10-30 17:10:00 +00:00
Jonas Maebe
c5ba7e8d6d * re-enabled optimized version of comparisons with the empty string that
I accidentally disabled in revision 1.26
2002-10-20 13:11:27 +00:00
florian
2f510f8f2f * fixed to reflect last tconvtype change 2002-10-10 16:14:54 +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
carl
801d6914e8 * range check error fixes 2002-10-03 21:31:10 +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
c6430358b1 * push 0 instead of VMT when calling a constructor from a member 2002-09-16 19:07:37 +00:00
peter
e15a0ac67c * support [eax].constant as reference 2002-09-16 19:07:00 +00:00
peter
6c06c346d8 * fix last optimization in genlinearlist, detected by bug tw1066
* use generic casenode.pass2 routine and override genlinearlist
  * add jumptable support to generic casenode, by default there is
    no jumptable support
2002-09-16 18:08:26 +00:00
Jonas Maebe
775b065d70 * small optimization to case genlist() case statements 2002-09-09 13:57:45 +00:00
carl
752beef0dd * cardinal -> longword 2002-09-07 20:40:23 +00:00
peter
dcd9e0107c * old logs removed and tabs fixed 2002-09-07 15:25:00 +00:00
daniel
b0364566d1 * Make Tprocdef.defs protected 2002-09-03 16:26:26 +00:00
peter
f77536fece * use index register when available for generating a reference with
only a signle register. Using the base register could possibly
    destroy the framepointer
2002-09-01 19:27:34 +00:00
peter
76bd75ed4a * fixed generic tcgvecnode
* move code that updates a reference with index register and multiplier
    to separate method so it can be overriden for scaled indexing
  * i386 uses generic tcgvecnode
2002-09-01 18:46:01 +00:00
peter
5ab0e99252 * include accumulator in regs_to_push list 2002-09-01 18:43:27 +00:00
peter
a06f84daf8 * use a_call_reg
* ungetiftemp for procvar of object temp
2002-09-01 12:13:00 +00:00
peter
a28f75ed03 * sym.insert_in_data removed
* symtable.insertvardata/insertconstdata added
  * removed insert_in_data call from symtable.insert, it needs to be
    called separatly. This allows to deref the address calculation
  * procedures now calculate the parast addresses after the procedure
    directives are parsed. This fixes the cdecl parast problem
  * push_addr_param has an extra argument that specifies if cdecl is used
    or not
2002-08-25 19:25:18 +00:00
peter
d551c5d867 * i386 uses now the generic exception management from ncgflw 2002-08-24 18:35:42 +00:00
peter
4b81e16fe2 * tempgen cleanup
* tt_noreuse temp type added that will be used in genentrycode
2002-08-23 16:14:48 +00:00
florian
4549d72802 + target macos for ppc added
+ frame work for mpw assembler output
2002-08-20 21:40:44 +00:00
peter
98dd65b0f3 * inlining is now also allowed in interface
* renamed write/load to ppuwrite/ppuload
  * tnode storing in ppu
  * nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
florian
e313bab4ff * first part of procinfo rewrite 2002-08-17 09:23:33 +00:00
peter
8082f79ea6 * first things tai,tnode storing in ppu 2002-08-15 19:10:35 +00:00
carl
588abc6631 * jmpbuf size allocation for exceptions is now cpu specific (as it should)
* more generic nodes for maths
  * several fixes for better m68k support
2002-08-15 15:15:55 +00:00
carl
ecb32b0ef0 * first_int_to_real moved to i386 (other one is generic) 2002-08-14 19:19:14 +00:00
carl
534f6b2468 * bugfix of unaryminus node with left LOC_CREGISTER 2002-08-14 19:18:16 +00:00
Jonas Maebe
3ab3c91e0a - remove valuelow/valuehigh fields from tlocation, because they depend
on the endianess of the host operating system -> difficult to get
    right. Use lo/hi(location.valueqword) instead (remember to use
    valueqword and not value!!)
2002-08-14 18:41:47 +00:00
florian
af4302bc67 * more fixes for ppc calling conventions 2002-08-13 21:40:55 +00:00
carl
c68b2dfbee * rename swatoperands to swapoperands
+ m68k first compilable version (still needs a lot of testing):
      assembler generator, system information , inline
      assembler reader.
2002-08-13 18:01:50 +00:00
carl
9da171faf2 + stab register indexes for powerpc (moved from gdb to cpubase)
+ tprocessor enumeration moved to cpuinfo
  + linker in target_info is now a class
  * many many updates for m68k (will soon start to compile)
  - removed some ifdef or correct them for correct cpu
2002-08-12 15:08:39 +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
carl
18b102ce95 + moved target_cpu_string to cpuinfo
* renamed asmmode enum.
  * assembler reader has now less ifdef's
  * move from nppcmem.pas -> ncgmem.pas vec. node.
2002-08-10 14:46:29 +00:00
florian
030eae46de * a couple of interface related fixes 2002-08-09 07:33:01 +00:00
florian
b136cecacd * first part of ppc calling conventions fix 2002-08-06 20:55:20 +00:00
Jonas Maebe
f8b6c707a2 * made assigned() handling generic
* add nodes now can also evaluate constant expressions at compile time
    that contain nil nodes
2002-08-02 07:44:30 +00:00
florian
463b355ba3 * more powerpc fixes
+ dummy tcgvecnode
2002-07-28 21:34:31 +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
eb2ca8d10f * rewrote the system handling 2002-07-26 21:15:37 +00:00
Jonas Maebe
ed2bdb31a6 * the optimization of converting a multiplication with a power of two to
a shl is moved from n386add/secondpass to nadd/resulttypepass
2002-07-26 11:17:52 +00:00
Jonas Maebe
185fa10345 * fixed (actual and potential) range errors 2002-07-26 11:16:35 +00:00
carl
ebbd8e9e04 + added generic inline nodes 2002-07-25 18:01:58 +00:00
carl
448d40de1a + FPURESULTREG -> FPU_RESULT_REG 2002-07-25 17:56:29 +00:00
daniel
feb28ce902 * Added internal error when asked to generate code for 'if expr in []' 2002-07-23 14:31:00 +00:00
florian
d88d2ed099 * splitting of i386\cgcpu.pas into x86\cgx86.pas and i386\cgcpu.pas
cgx86.pas will contain the common code for i386 and x86_64
2002-07-20 19:28:47 +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
31da813d1d * exit is now a syssym instead of a keyword 2002-07-16 15:34:20 +00:00
florian
336808f6c3 * start of the new generic parameter handling 2002-07-11 14:41:27 +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
63e0f03f63 + generic set handling 2002-07-06 20:27:26 +00:00
florian
479a745096 * first x86-64 patches 2002-07-04 20:43:00 +00:00
peter
4285e99853 * internal linker
* reorganized aasm layer
2002-07-01 18:46:20 +00:00
peter
86ed32cc55 * obsolete 2002-07-01 16:29:23 +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
09de3f8d5b * fixed errors found with new -CR code from Peter when cycling with -O2p3r 2002-06-24 12:43:00 +00:00
carl
b2ab15a9a3 * bugfix of missing popecx for shift operations 2002-06-16 08:16:59 +00:00
Jonas Maebe
e483612cf2 * IDIV reads edx too (but now the div/mod optimization fails :/ ) 2002-06-09 12:56:04 +00:00
Jonas Maebe
f233163464 * fixed detection of register usage 2002-06-09 12:55:23 +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
f6b3e2e37f * synchronized cpubase between powerpc and i386
* moved more tables from cpubase to cpuasm
  * tai_align_abstract moved to tainst, cpuasm must define
    the tai_align class now, which may be empty
2002-05-14 17:28:08 +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
11a60a8a1e * some small portability fixes 2002-05-12 19:58:36 +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
florian
37194d2f61 * fixed more problems with cpubase and x86-64 2002-04-25 16:12:09 +00:00
peter
67ede1276b * add pinline unit that inserts compiler supported functions using
one or more statements
  * moved finalize and setlength from ninl to pinline
2002-04-23 19:16:34 +00:00
peter
624e5bd699 * fixed @methodpointer 2002-04-22 16:30:05 +00:00
peter
6320530bdd * removed newn and disposen nodes, the code is now directly
inlined from pexpr
  * -an option that will write the secondpass nodes to the .s file, this
    requires EXTDEBUG define to actually write the info
  * fixed various internal errors and crashes due recent code changes
2002-04-21 19:02:03 +00:00
carl
1da6f9535c * changeregsize -> rg.makeregsize
* changeregsize moved from cpubase to here
2002-04-21 15:43:32 +00:00
carl
21593abffb - removed some other stuff to their units 2002-04-21 15:31:40 +00:00
carl
654e5540ee * changeregsize -> rg.makeregsize
+ a_jmp_always added
2002-04-21 15:31:05 +00:00
carl
fb605f11b0 * changeregsize -> rg.makeregsize 2002-04-21 15:29:53 +00:00
carl
83ee224b80 + optimization cpu specific information base file 2002-04-20 21:50:14 +00:00
carl
b4f0af389d + 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
* removing frame pointer in routines is only available for : i386,m68k and vis targets
2002-04-20 21:37:07 +00:00
peter
8d0751ff97 * removed some more routines from cga
* moved location_force_reg/mem to ncgutil
  * moved arrayconstructnode secondpass to ncgld
2002-04-19 15:39:34 +00:00
peter
6d3ac41ce6 * fixed conflicts between the last 2 commits 2002-04-15 19:53:54 +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
79b490d551 + target_info.size_of_pointer -> pointer_size
+ some cleanup of unused types/variables
* move several constants from cpubase to their specific units
  (where they are used)
+ att_Reg2str -> gas_reg2str
+ int_reg2str -> std_reg2str
2002-04-15 19:12:09 +00:00
carl
85216e1a0e + stack checking enabled for all targets (it is simulated now) 2002-04-14 20:54:17 +00:00
carl
39c86c857d + att_reg2str -> gas_reg2str 2002-04-14 16:58:41 +00:00
carl
f3bfe280a8 + move into aggas most of the stuff non-processor specific 2002-04-14 16:58:04 +00:00
Jonas Maebe
3566880766 * fix for the ie9999 under Linux (patch from Peter) 2002-04-10 08:07:55 +00:00
carl
4cff0f13fd - moved type constant 2002-04-07 13:41:50 +00:00
carl
6b39ecb2ef - remove unused variable 2002-04-07 09:16:07 +00:00
Jonas Maebe
bb959439f0 * fixed web bug #1915 2002-04-05 15:09:13 +00:00
peter
5e7a1e3729 * removed unused units
* use tlocation.size in cg.a_*loc*() routines
2002-04-04 19:05:54 +00:00
carl
0ee2ac7451 + added wdosx support (patch from Pavel) 2002-04-04 18:30:22 +00:00
carl
555c30ce2f + added wdosx support (patch from Pavel) 2002-04-04 18:27:37 +00:00
carl
303ad5eeaa + added wdosx patch from Pavel 2002-04-04 18:25:30 +00:00
michael
e043c5af70 * Patch from peter to fix go32v2 cycle 2002-04-04 07:56:15 +00:00
Jonas Maebe
807cf0000b * fixed regvar-related bugs (the load node set the location to
LOC_REGISTER instead of LOC_CREGISTER and the assignment node didn't
    support loading constants in LOC_CREGISTER's)
2002-04-03 10:43:37 +00:00
Jonas Maebe
adb8b9eabf + support for folding inc/dec in shl/add/sub sequences toa single lea
instruction
2002-04-02 20:30:16 +00:00
Jonas Maebe
36699776ee * optimized the code generated by the a_op_const_* and a_op64_const
methods
2002-04-02 20:29:02 +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
511582cde3 * fixed nasty bug in "and" peepholeoptimization that caused wrong
optimizations after Peter's big location patch
2002-04-02 13:01:58 +00:00
Jonas Maebe
313e7a0053 * better fix for new/dispose bug with init/final data 2002-04-01 09:44:04 +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
carl
eb09d6061c - remove go32v1 support 2002-03-28 20:46:44 +00:00
armin
ed209a3961 + initialize threadvars defined local in units 2002-03-28 16:07:52 +00:00
peter
b4cc4b7b01 * removed compiler warnings 2002-03-04 19:10:11 +00:00
peter
fd2ad837e2 * implicit result variable generation for assembler routines
* removed m_tp modeswitch, use m_tp7 or not(m_fpc) instead
2002-01-24 18:25:48 +00:00
peter
869ca12ddb * fixed init/final for value parameters 2002-01-19 14:21:17 +00:00
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