Commit Graph

5141 Commits

Author SHA1 Message Date
mazen
12b5bae421 * instruction are moved lowercase to allow using old assmeblers 2003-04-29 10:00:31 +00:00
michael
cf68b27bb9 + Patch from peter to fix wrong pushing of ansistring function results in open array 2003-04-29 07:28:52 +00:00
peter
dfd469b7a3 * fix stabs generation for implicit initfinal 2003-04-28 21:19:02 +00:00
peter
7c733ebcca * write sec_none info in extdebug 2003-04-28 21:17:53 +00:00
peter
6d57995944 * do not finalize function results 2003-04-28 21:17:38 +00:00
peter
5af7a2c7a0 * sharedlib is placed in exe outputdir 2003-04-28 16:18:16 +00:00
mazen
04e19cce0d - InternalError removed from TSparcCallNode.push_framepointer as it is called by common coplier code. 2003-04-28 09:49:58 +00:00
mazen
c475df7735 + max_scratch_regs variable added because requested by common compiler code 2003-04-28 09:46:30 +00:00
mazen
fad91e6369 + NOP after conditional jump instruction to prevent delay slot execution 2003-04-28 09:44:42 +00:00
mazen
5e741c4ca2 * Debug message in SetCondition more explicit. 2003-04-28 09:40:47 +00:00
Jonas Maebe
d03841dc16 * store register para's to memory before copying the valuepara's, because
that one requires them to be there already (and it calls subroutines ->
    could overwrite those registers)
2003-04-27 16:30:34 +00:00
Jonas Maebe
7a3e1b917c * fixed Florian's quick hack :)
* fixed small bug 64bit range checking code
2003-04-27 14:48:09 +00:00
Jonas Maebe
cfe94be378 * fixed overflow checking form of 64bit add instruction 2003-04-27 11:55:34 +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
Jonas Maebe
92ac35cc37 * fixed 64bit "const - reg/ref" bugs 2003-04-27 11:06:06 +00:00
florian
d4ca538a40 * fixed nested procedures to get them working as before 2003-04-27 10:41:47 +00:00
Jonas Maebe
e514b12f7a * fixed stabs generation for local variables on systems where they have
a positive offset relative to the stack/framepointer
2003-04-27 10:03:18 +00:00
florian
098caf591c * aprocdef instead of aktprocdef must be used 2003-04-27 09:14:48 +00:00
florian
886dae65fe * quick fix for param64 for intel 2003-04-27 09:10:49 +00:00
Jonas Maebe
b19a9cfc0a * do callparatemp stuff only after the parameters have been firstpassed,
because some nodes are turned into calls during the firstpass
2003-04-27 09:08:44 +00:00
florian
887d64f038 * another compile fix 2003-04-27 08:52:00 +00:00
peter
3bda511c4a * compile fix 2003-04-27 08:50:45 +00:00
florian
80b1ccdd76 * fixed parameter passing for 64 bit ints 2003-04-27 08:23:51 +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
Jonas Maebe
38d7ec6670 * fix to a_op64_const_reg_reg 2003-04-26 22:56:11 +00:00
florian
4450957bdd * fixed para locations of fpc_class_new helper call 2003-04-26 20:57:17 +00:00
florian
19946413fe * fixed setjmp record size 2003-04-26 20:15:22 +00:00
daniel
b899ea5469 * Bug fix in simplify 2003-04-26 20:03:49 +00:00
peter
fd278ee582 * print lineinfo for internalerror 2003-04-26 19:32:31 +00:00
florian
b5d749d24d * fixed passing of fpu values by fpu register 2003-04-26 17:21:08 +00:00
Jonas Maebe
31d94f4f4c * fixed g_flags2reg 2003-04-26 16:08:41 +00:00
florian
dda473894c * fixed cmp_reg_reg_reg, cmp operands were emitted in the wrong order 2003-04-26 15:25:29 +00:00
florian
15c0b633ab * fixed the powerpc to work with the new function result handling 2003-04-26 11:30:59 +00:00
peter
063979bcae * length of tparalocation is now stored in ppu 2003-04-26 09:56:24 +00:00
peter
35801981d1 * .o files belonging to the unit are first searched in the same dir
as the .ppu
2003-04-26 09:16:07 +00:00
peter
a23e3f0a2f * add string returns in LOC_REFERENCE 2003-04-26 09:12:55 +00:00
peter
fe96aad6d6 * vo_is_result flag added for the special RESULT symbol 2003-04-26 00:33:07 +00:00
peter
5541dc331f * start search for overriden properties in the parent class 2003-04-26 00:32:37 +00:00
peter
9b236892b7 * set return_offset moved to after_header 2003-04-26 00:31:42 +00:00
peter
6720314fc5 * reset aktfilepos when setting new module for compile 2003-04-26 00:30:52 +00:00
peter
2b888374ce * don't close inputfile when still closed 2003-04-26 00:30:27 +00:00
peter
ab6df4aa5e * adapted for removed funcretsym 2003-04-26 00:29:17 +00:00
peter
61a964729e * removed load_funcret 2003-04-26 00:28:41 +00:00
florian
574d50e86b * fixed tfuncretsym stuff in powerpc specific part 2003-04-25 21:05:22 +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
b9c76fcf5e * stack frame calculations are now completly done using the code generator
routines instead of generating directly assembler so also large stack frames
    are handle properly
2003-04-25 20:55:34 +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
c36e3569c3 * removed 2003-04-25 11:50:38 +00:00
florian
d0025abb0e * commited it, to remove it :) 2003-04-25 11:50:20 +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
41da381f1a * fixed a lot of PowerPC related stuff 2003-04-24 22:29:57 +00:00
florian
47a3437dba * comp is now written with its bit pattern to the ppu instead as an extended 2003-04-24 13:03:01 +00:00
florian
cca5ca2ab9 * fixed not node 2003-04-24 12:57:32 +00:00
florian
90561d5e71 * symbols which are register identifiers aren't resolved anymore 2003-04-24 12:05:53 +00:00
florian
7ec9711f9a * fixed several issues with nested procedures 2003-04-24 11:24:00 +00:00
florian
88f3ab569c + HAS_TYPE_* defines for floats on i386 and powerpc added 2003-04-24 11:21:45 +00:00
florian
a2f6bad2ce + created from n386opt 2003-04-24 11:20:06 +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
c092e24817 * fixes to get rtl compiled 2003-04-23 22:18:01 +00:00
peter
72ad478f97 * fix compile for ppc,sparc,m68k 2003-04-23 21:10:54 +00:00
peter
c351d2a524 * compile fix for no-newra 2003-04-23 20:23:06 +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
99c4b6cf86 * m68k fix 2003-04-23 13:48:07 +00:00
peter
35ea6c7233 * optimizer is x86 2003-04-23 13:47:41 +00:00
peter
2bb32541be * fix m68k compile 2003-04-23 13:40:33 +00:00
peter
7ff85f0779 * fix sparc compile 2003-04-23 13:35:39 +00:00
peter
32d79d4f80 * fix warning for calling constructor inside constructor 2003-04-23 13:21:06 +00:00
peter
77cdb2fcae * fix self passing to fpc_help_fail 2003-04-23 13:20:34 +00:00
peter
cf1f53f910 * fix push_high_param for cdecl 2003-04-23 13:15:04 +00:00
peter
4cee86cad2 * fix operator overload search parameter order 2003-04-23 13:13:58 +00:00
peter
155a2cdab4 * fix checking of procdef type which was broken since loadn returned
pointertype for tp procvar
2003-04-23 13:13:08 +00:00
peter
74756e4e85 * fix po_comp setting for fpc mode 2003-04-23 13:12:26 +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
7dae726270 * po_comp for proc to procvar fixed 2003-04-23 11:37:33 +00:00
peter
29a382388e * fix range check error after previous commit 2003-04-23 11:37:15 +00:00
peter
3a321cb62e * cdecl array of const has no addr push 2003-04-23 10:14:30 +00:00
peter
181da6423d * firstaddr will check procvardef 2003-04-23 10:13:55 +00:00
peter
5207aaf391 * don't check po_varargs for delphi 2003-04-23 10:12:51 +00:00
peter
e258c7bf84 * allow multi pass2 changed to global boolean instead of node flag 2003-04-23 10:12:14 +00:00
peter
a13db1decb * range check error for GUID fixed 2003-04-23 10:11:22 +00:00
peter
18b1a27d2c * procvar is not compared in addrn 2003-04-23 10:10:54 +00:00
peter
4290586968 * unix signalhandler has longint argument 2003-04-23 10:10:31 +00:00
peter
41dfcfba39 * expectloc fixes 2003-04-23 10:10: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
Jonas Maebe
5ed5d2897f * fixed ttemprefnode.compare and .getcopy to take offset field into
account
2003-04-23 08:41:34 +00:00
Jonas Maebe
b3a3398faf * fixed istemp() when tg.direction = 1 2003-04-23 08:40:39 +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
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
florian
92a29d7e82 * fixed generic in operator code
+ added debug code to check if all scratch registers are released
2003-04-22 12:45:58 +00:00
florian
253df05727 + added first_ and last_imreg 2003-04-22 11:27:48 +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
8edbb7afed * fix insert_typeconv to handle new varargs which don't have a
paraitem set
2003-04-22 09:53:33 +00:00
peter
0e0a581230 * do not convert procvars with void return to callnode 2003-04-22 09:52:30 +00:00
peter
0cb3160a63 * mark_write implemented for default with a warning in EXTDEBUG, this
is required for error recovery where the left node can be also a non
    writable node
2003-04-22 09:52:00 +00:00
peter
ed82f9ff35 * do not load self when calling a non-inherited class constructor 2003-04-22 09:49:44 +00:00
peter
26b4fdbfa7 * always allocate 4 bytes when 0 bytes are asked 2003-04-22 09:46:17 +00:00
peter
811fdad9b6 * removed some ie checks 2003-04-21 20:05:10 +00:00
peter
ab7f62f3e1 * forgot to copy vmtrefaddr to selfrefaddr when self=vmt 2003-04-21 20:03:32 +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
Jonas Maebe
934974e234 * fixed tstatementnode.det_resulttype and tststatementnode.pass_1
* fixed some getcopy issues with ttemp*nodes
2003-04-21 15:00:22 +00:00
Jonas Maebe
e206a74439 - removed copying of all paras when secondpassing a callnode (this used
to be necessary for inlinign support, but currently the whole inlined
    procedure is already copied in advance). Note that the compiler crashes
    when compiling ucomplex with -dTEST_INLINE (also after fixing the
    syntax errors), but that was also the case before this change.
2003-04-21 13:53:16 +00:00
Jonas Maebe
44f26523e6 * process para's from first to last instead of the other way round 2003-04-17 18:52:35 +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
daniel
a32926e2fc * Some work on interference graph construction 2003-04-17 07:50:24 +00:00
Jonas Maebe
56132c1a9c * assembler procedures now again get a stackframe if they have local
variables. No space is reserved for a function result however.
    Also, the register parameters aren't automatically saved on the stack
    anymore in assembler procedures.
2003-04-16 09:26:55 +00:00
Jonas Maebe
fd1056c621 * fixed paralocation for integer var/out parameters 2003-04-16 07:55:07 +00:00
Jonas Maebe
06e03ecd23 * calculation of parameter and resultlocation offsets now depends on
tg.direction instead of if(n)def powerpc
2003-04-16 07:53:11 +00:00
peter
12cced8116 * don't clean rtl unit dir in ppuclean, this breaks the snapshot
building
2003-04-15 18:22:07 +00:00
peter
c889842761 * fix ppuclean 2003-04-15 17:45:02 +00:00
pierre
9e21fb4c0a * use 218 as ignore value for compare under win32
* also remove ppu files in subdirectories
2003-04-14 15:15:34 +00:00
peter
2c5eee4c62 * convert registers for importssection 2003-04-12 15:43:40 +00:00
peter
aca9555704 * Use the original unitname when defining a unitsym 2003-04-12 15:13:03 +00:00
Jonas Maebe
bd90c192c5 * ttempdeletenode.create now sets the nodetype to tempdeleten instead of
temprefn
2003-04-12 14:53:59 +00:00
peter
1bfa0a6ba3 * don't firstpass typen 2003-04-11 16:02:05 +00:00
peter
d6838c82b4 * support subscript,vec for setting methodpointer varstate 2003-04-11 15:51:04 +00:00
peter
d780263799 * default property also increased the reference count for the
property symbol
2003-04-11 15:49:01 +00:00
peter
2e4c0445fa * fix bug #2438 2003-04-11 15:01:23 +00:00
peter
5cff10dd1a * fix tw2454 2003-04-11 14:50:08 +00:00
peter
8da3f59d32 * vs_hidden released 2003-04-10 17:57:52 +00:00
peter
426b43ed1f * amiga has also no .exe 2003-04-08 16:01:40 +00:00
Jonas Maebe
ffb79851e6 * more vs_invisible fixes 2003-04-07 11:58:22 +00:00
Jonas Maebe
a4af1a61e1 * fixed VS_HIDDEN for high parameter so it works again 2003-04-07 10:40:21 +00:00
Jonas Maebe
d951c7b5f2 * fixed compiling error 2003-04-07 08:52:58 +00:00
Jonas Maebe
5c5b86b650 + generic a_op64_reg_ref implementation 2003-04-07 08:45:09 +00:00
olle
a069aadad0 * changed newasmsymbol to newasmsymboldata for data symbols 2003-04-06 21:11:23 +00:00
olle
1372a617cb + line numbers are now emitted in the assembler code
* bug in export and import directive fixed
  * made code more in sync with aggas.pas
2003-04-06 21:01:40 +00:00
Jonas Maebe
f51a189be0 * don't generate entry/exit code for assembler procedures 2003-04-06 16:39:11 +00:00
Jonas Maebe
ec71805aa8 * several ppc/generic result offset related fixes. The "normal" result
offset seems now to be calculated correctly and a lot of duplicate
    calculations have been removed. Nested functions accessing the parent's
    function result don't work at all though :(
2003-04-05 21:09:31 +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
3c5e8e2b07 * quote names with hi-ascii chars 2003-04-04 15:34:25 +00:00
peter
45e5cada69 * give error when exports is not supported 2003-04-02 16:11:34 +00:00
peter
d7d14b0eca * reset symbol for unique types 2003-04-01 16:17:15 +00:00
peter
29762b04a6 * regenerated 2003-04-01 16:09: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
f3caa701d3 * regenerated 2003-03-30 19:03:59 +00:00
Tomas Hajny
7e44bb1506 * Makefiles regenerated with corrected fpcmake 2003-03-30 00:01:43 +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
peter
750c3b315e * fixed small mem leaks 2003-03-27 17:44:13 +00:00
armin
8473dada93 * avoid problems with the ide in init/dome 2003-03-26 12:50:54 +00:00
armin
0795cf556b * replaced experimental with clib for netware 2003-03-25 18:23:34 +00:00