Commit Graph

4314 Commits

Author SHA1 Message Date
carl
4207d5634f * new message errors 2002-09-07 20:34:27 +00:00
florian
757e3976fe * tvarsym.paraitem is set now 2002-09-07 19:40:39 +00:00
florian
bf32e2d2cf + tcg.direction is used now 2002-09-07 19:34:08 +00:00
florian
c1d369dc5f + added tcg.direction to allow upwards growing temp areas
i.e. temps with positive index
2002-09-07 18:25:00 +00:00
florian
e4664f0ed6 + tvarsym.paraitem added 2002-09-07 18:17:41 +00:00
florian
d78ad92f92 * first part of PowerPC fixes 2002-09-07 18:05:51 +00:00
florian
a7a354956d * first part of PowerPC fixes 2002-09-07 17:54:58 +00:00
peter
dcd9e0107c * old logs removed and tabs fixed 2002-09-07 15:25:00 +00:00
peter
8a03c810de * obsolete 2002-09-07 14:14:14 +00:00
peter
17aba7002c * fixed procdef access 2002-09-07 14:13:40 +00:00
carl
6c2bede5a8 * second part bug report 1996 fix, testrange in cordconstnode
only called if option is set (also make parsing a tiny faster)
2002-09-07 12:16:03 +00:00
Jonas Maebe
edb02a1409 * fixed small regalloction info bug 2002-09-07 11:50:02 +00:00
carl
e1b3ddc3fb * fix my stupid copy and paste bug 2002-09-07 09:16:55 +00:00
carl
8fd9561a31 * start bugfix 1996
* 64-bit typed constant now work correctly and fully (bugfix 2001)
2002-09-06 19:58:31 +00:00
carl
1603394d9a - moved files to systems directory 2002-09-06 15:05:23 +00:00
carl
517c2566e8 * moved files to systems directory 2002-09-06 15:03:50 +00:00
carl
a013d19c36 * bugfix of bug report 2072 (merged) 2002-09-06 14:58:42 +00:00
peter
20af604613 * memdebug enhancements 2002-09-05 19:29:42 +00:00
peter
8b5e92cb3c * removed repetitive pass counting
* display heapsize also for extdebug
2002-09-05 19:28:29 +00:00
peter
37bb42694b * fixed crash when current_module becomes nil 2002-09-05 19:27:05 +00:00
peter
f5a4b06b8a * fixed old callnode.det_resulttype code
* old ncal code is default again
2002-09-05 14:53:41 +00:00
peter
93f33a3d0c * internalerror instead of crash in getprocdef 2002-09-05 14:51:42 +00:00
pierre
0aceb4b76b * fix for bug #2004 merged 2002-09-05 14:17:27 +00:00
Jonas Maebe
86830c26b8 - reverted my last commit, it was completely bogus :( 2002-09-05 05:56:07 +00:00
Jonas Maebe
426de6d36f * fixed bugs in 64bit operations (registers weren't always allocated for
the result)
  * optimized 'const64 - reg64/mem64'
  * optimized equaln/unequaln with 64bit values (change them to
    '(left.hi xor right.hi) or (left.lo xor right.lo)' so there are less
    branches and the result can be returned in the flags this way. Could
    be done for the i386 too probably.
2002-09-04 19:42:45 +00:00
Jonas Maebe
d2401f67b4 - removed unnecessary typeconversion from char_to_string 2002-09-04 19:38:42 +00:00
Jonas Maebe
e66f54e328 * changed some ctypeconvnode/toggleflag(nf_explizit) combo's to
ctypeconvnode.create_explicit() statements
2002-09-04 19:32:56 +00:00
Jonas Maebe
650eb87f8c + parse basic optimization parameters 2002-09-04 16:03:53 +00:00
daniel
c2fcc297ad * Small bugfix for procdef selection 2002-09-03 21:32:49 +00:00
daniel
d5870e8075 * Activated new ncal code 2002-09-03 19:27:22 +00:00
daniel
fff92ef11e * Fixed PowerPC & M68000 compilation 2002-09-03 19:04:18 +00:00
daniel
b0364566d1 * Make Tprocdef.defs protected 2002-09-03 16:26:26 +00:00
peter
64c4be5ca9 * fixed private methods hiding public virtual methods 2002-09-03 15:44:44 +00:00
mazen
2b9b0d86ed +generic register names commented 2002-09-03 07:41:00 +00:00
peter
a17291b2d4 * array of char support for Str() 2002-09-02 19:24:41 +00:00
peter
36481b72bb * insert PASCALMAIN in library for Win32 only 2002-09-02 18:46:26 +00:00
peter
88dce133e4 * reuse a reference when resizing ordinal values to smaller sizes,
this is required for constructions like byte(w):=1 that are
    allowed in tp mode only
2002-09-02 18:46:00 +00:00
peter
c850b953c0 * fixed (not) pushing of empty parameters
* fixed implicit initialization/finalization generation
  * fixed/optimized local copy of value arguments init/final
2002-09-02 18:44:48 +00:00
peter
8a75d59544 * fixed parsing of register names with lowercase 2002-09-02 18:40:52 +00:00
florian
b5e2c87b87 * fixed generic procedure variable calling 2002-09-02 11:25:20 +00:00
Jonas Maebe
ce868dcdac + a_call_reg()
* small fix in a_call_ref()
2002-09-02 10:14:51 +00:00
Jonas Maebe
c7df12f6f0 * fixed range error 2002-09-02 06:09:02 +00:00
florian
6502638258 * several powerpc related stuff fixed 2002-09-01 21:04:47 +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
a73ecec989 * fixed register variable loading from parasymtable, the call by
reference code was moved wrong
2002-09-01 19:26:32 +00:00
peter
5a06f334b7 * fixed maybe_save that did not support a reference with only
a index register. It now also updates the location with the new
    base register only
2002-09-01 18:50:20 +00:00
peter
274624f2f6 * assignn check in exitnode changed to use a separate boolean as the
assignn can be changed to a calln
2002-09-01 18:47:00 +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
d2400aae38 * cleanup of tvecnode.det_resulttype
* move 0 element of string access check to resulttype
2002-09-01 18:44:17 +00:00
peter
5ab0e99252 * include accumulator in regs_to_push list 2002-09-01 18:43:27 +00:00
peter
b65dedc9e4 * reduced level of comment that type is wrong for release 2002-09-01 18:42:50 +00:00
florian
3546ffa8b0 + added abstract tcg.g_removevaluepara_openarray 2002-09-01 17:05:43 +00:00
peter
90308521d5 * fixed direct assembler for i386 2002-09-01 14:43:12 +00:00
peter
a4e309d6ae * removevaluepara added to fix the stackpointer so restoring of
saved registers works
2002-09-01 14:42:41 +00:00
peter
7d02a4f264 * increase refcount in exit(arg) for arg 2002-09-01 14:41:47 +00:00
daniel
f4c6d762fd - write_access fields removed in favor of a flag 2002-09-01 13:28:37 +00:00
peter
e0bcfca509 * fixed loading of procvar of object when the object is initialized
with 0
2002-09-01 12:15:40 +00:00
peter
8b2fb4187e * fixed some wrong levels in extdebug comments 2002-09-01 12:14:53 +00:00
peter
8ee2462ba4 * remove debug line
* containself methods can be called directly
2002-09-01 12:14:15 +00:00
peter
a06f84daf8 * use a_call_reg
* ungetiftemp for procvar of object temp
2002-09-01 12:13:00 +00:00
peter
f68c3a9552 * calc param_offset after parameters are read, because the calculation
depends on po_containself
2002-09-01 12:11:33 +00:00
peter
7898dcf9ed + a_call_reg, a_call_loc added
* removed exprasmlist references
2002-09-01 12:09:27 +00:00
daniel
b0ffb45275 + Added read/write notifications of variables. These will be usefull
for providing information for several optimizations. For example
   the value of the loop variable of a for loop does matter is the
   variable is read after the for loop, but if it's no longer used
   or written, it doesn't matter and this can be used to optimize
   the loop code generation.
2002-09-01 08:04:42 +00:00
daniel
4b82d30953 * Removed sets from Tcallnode.det_resulttype
+ Added read/write notifications of variables. These will be usefull
   for providing information for several optimizations. For example
   the value of the loop variable of a for loop does matter is the
   variable is read after the for loop, but if it's no longer used
   or written, it doesn't matter and this can be used to optimize
   the loop code generation.
2002-09-01 08:01:16 +00:00
Jonas Maebe
431b9fac81 * fixed a_call_ref (it should load ctr, not lr) 2002-08-31 21:38:02 +00:00
florian
391ce796ef * fixed several problems caused by Jonas' commit :) 2002-08-31 21:30:45 +00:00
Jonas Maebe
f107ba3bbe + support top_none for branches 2002-08-31 19:27:48 +00:00
Jonas Maebe
7a8429a4fe * fixed 64bit comparisons 2002-08-31 19:26:20 +00:00
Jonas Maebe
76111bb9eb + implemented a_call_ref() 2002-08-31 19:25:50 +00:00
florian
fb5e694dca * write double # before float constants when -al is turned on
else some gas versions interpret it as line number
2002-08-31 16:05:17 +00:00
florian
5e60724d23 + HEAP* stuff must be generated for Linux/PPC as well
+ direct assembler reader searches now global and static symtables as well
2002-08-31 15:59:30 +00:00
florian
5380652cad * ppc compilation fixed 2002-08-31 12:43:31 +00:00
mazen
c6b0a2e9a3 - undefining win32 when SPARC defined removed, no more needed. 2002-08-30 13:42:29 +00:00
mazen
c7bf4df982 *call parameter handling is now based on the new param manager 2002-08-30 13:16:23 +00:00
mazen
12c3e9a760 ncgcall.pas moved to ncpucall.pas (I'd like ncpu* insteade of nsparc* since it
provides processor independent units naming)
2002-08-30 06:15:27 +00:00
mazen
dd411127f4 added support for SPARC processors 2002-08-29 11:02:36 +00:00
mazen
66ab5e4a54 File added support to the new generic parameter handling 2002-08-29 10:16:20 +00:00
mazen
221d94a65e + added ncpucnp to fix a call to an abstract method in pss_2 2002-08-29 10:07:47 +00:00
mazen
2c774736c5 +added -gl to ease compiler debug 2002-08-29 10:06:01 +00:00
pierre
b6f43ac07b * fixed compilation cycle with -Cr option by adding explicit
longint typecast in PutPtrUInt and putexprint methods.
 + added checks for sizeof and internalerros if size is not handled.
2002-08-26 14:05:57 +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
8a43a12934 * also check the paratypes when a forward was found 2002-08-25 11:33:06 +00:00
peter
3486c0c668 * don't optimize not([lten,gten]) for setdefs 2002-08-25 11:32:33 +00:00
peter
160103faba * fixed not(not()) removal 2002-08-25 09:10:58 +00:00
peter
4aa03c0656 * add calls to release temps 2002-08-25 09:06:58 +00:00
peter
5c57932695 * fixed loop in concat_procdefs 2002-08-25 09:06:21 +00:00
peter
563a0dc818 * fixed wrong label in jump of except block (was also in n386flw wrong)
* fixed wrong pushing of raise parameters
  * fixed wrong compare in finally
2002-08-24 18:41:52 +00:00
peter
46731a77ab * really use tt_noreuse for exception frame buffers 2002-08-24 18:38:26 +00:00
peter
d551c5d867 * i386 uses now the generic exception management from ncgflw 2002-08-24 18:35:42 +00:00
peter
a903647258 * when reusing a block also update the temptype instead of forcing it
to tt_normal
2002-08-24 18:35:04 +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
peter
770b338833 * also firstpass funcretrefnode if available. This was breaking the
asnode compilerproc code
2002-08-23 16:13:16 +00:00
mazen
9b960198d0 *** empty log message *** 2002-08-23 13:17:59 +00:00
mazen
a49dea276c fixed compilation problem related to tai_labeled_instruction 2002-08-23 13:11:11 +00:00
mazen
7dff137383 GDB support added 2002-08-23 10:33:30 +00:00
mazen
c52839c2d6 *** empty log message *** 2002-08-23 10:08:28 +00:00
mazen
af7d17d28c stab_regindex added for GDB support 2002-08-23 09:53:15 +00:00
daniel
3d7430e270 * Fixed the detection wether the first check of a for loop can be skipped 2002-08-22 15:15:20 +00:00
florian
ac29d65fc4 + register32 is now written by tnode.dowrite
* fixed write of value of tconstnode
2002-08-22 11:21:44 +00:00
mazen
9df674734c psystem.pas removed from sparc directory 2002-08-22 10:13:29 +00:00