peter
bfb8ae2151
* sym,def resolving partly rewritten to support also parent objects
...
not directly available through the uses clause
2003-06-25 18:31:23 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
75b147ba60
* fixed revious commit
2003-06-15 16:47:33 +00:00
Jonas Maebe
4e7fac9e7e
* callparatemp fix: if a threadvar is a parameter, that paramter also
...
does a call
2003-06-15 15:10:57 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
Jonas Maebe
10eb92c546
* optimized assignments with on the right side a function that returns
...
an ansi- or widestring
2003-06-08 20:01:53 +00:00
Jonas Maebe
8e09d78f79
+ ability to change the location of a ttempref node with changelocation()
...
method. Useful to use instead of copying the contents from one temp to
another
+ some shortstring optimizations in tassignmentnode that avoid some
copying (required some shortstring optimizations to be moved from
resulttype to firstpass, because they work on callnodes and string
addnodes are only changed to callnodes in the firstpass)
* allow setting/changing the funcretnode of callnodes after the
resulttypepass has been done, funcretnode is now a property
(all of the above should have a quite big effect on callparatemp)
2003-06-08 18:27:15 +00:00
peter
563e8d205f
* creating class with abstract call checking fixed
...
* there will be only one warning for each class, the methods
are listed as hint
2003-06-08 11:42:33 +00:00
peter
e7975c7592
* re-resolving added instead of reloading from ppu
...
* tderef object added to store deref info for resolving
2003-06-07 20:26:32 +00:00
peter
4d67ae9f31
* fix check for procedure without parameters
...
* calling constructor as member will not allocate memory
2003-06-03 21:05:48 +00:00
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +00:00
peter
047a066711
* procinlinenode removed
...
* aktexit2label removed, fast exit removed
+ tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
072a55b73e
* methodpointer self pushing fixed
2003-05-25 11:34:17 +00:00
peter
b1369666c4
* inline fixes
2003-05-25 08:59:16 +00:00
Jonas Maebe
527153658e
* added missing firstpass for callparatemp code
2003-05-24 17:16:37 +00:00
peter
8ff5792776
* remove some unit dependencies
...
* current_procinfo changes to store more info
2003-05-23 14:27:35 +00:00
Jonas Maebe
56b4360422
* fixed callparatemp for ansi/widestring and interfacecoms
2003-05-17 14:05:58 +00:00
Jonas Maebe
cb279b2029
* changed tt_persistant to tt_persistent :)
...
* tempcreatenode now doesn't accept a boolean anymore for persistent
temps, but a ttemptype, so you can also create ansistring temps etc
2003-05-17 13:30:08 +00:00
peter
abca40f041
* regvar fixes
2003-05-16 14:33:31 +00:00
Jonas Maebe
bfd98ec80d
* fixed callparatemp so it works with vs_var, vs_out and formal const
...
parameters
2003-05-14 19:35:50 +00:00
peter
b52ba06662
* constructors return in register
2003-05-13 20:53:41 +00:00
peter
a467b84faa
* fixed various crashes
2003-05-13 15:18:49 +00:00
peter
26d78ff5c9
* moved implicit exception frame from ncgutil to psub
...
* constructor/destructor helpers moved from cobj/ncgutil to psub
2003-05-11 21:37:03 +00:00
peter
15b0132f6f
* tloadnode does not support objectsymtable,withsymtable anymore
...
* withnode cleanup
* direct with rewritten to use temprefnode
2003-05-11 14:45:12 +00:00
peter
1a2eedd767
* self moved to hidden parameter
...
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
peter
e2cbae0ff1
* vs_hidden replaced by is_hidden boolean
2003-05-05 14:53:16 +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
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
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
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
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
peter
32d79d4f80
* fix warning for calling constructor inside constructor
2003-04-23 13:21:06 +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
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
8edbb7afed
* fix insert_typeconv to handle new varargs which don't have a
...
paraitem set
2003-04-22 09:53:33 +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
8da3f59d32
* vs_hidden released
2003-04-10 17:57:52 +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
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
07f1898c68
* fix missing self setting for method to procvar conversion in
...
tp_procvar mode
2003-03-17 18:54:23 +00:00
peter
830ea4e876
* support DefaultHandler and anonymous inheritance fixed
...
for message methods
2003-03-17 16:54:41 +00:00
peter
ec66760702
* store symoptions also for procdef
...
* check symoptions (private,public) when calculating possible
overload candidates
2003-03-17 15:54:22 +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
34de6782a5
* convert_l3 convertlevel added. This level is used for conversions
...
where information can be lost like converting widestring->ansistring
or dword->byte
2003-01-16 22:13:51 +00:00
peter
00e2ee165b
* merged methodpointer fixes from 1.0.x
2003-01-15 01:44:32 +00:00
peter
970f5d9112
* only check for auto inherited in objectsymtable
2003-01-12 17:52:07 +00:00
peter
23f6b91c4a
* extended information about overloaded candidates when compiled
...
with EXTDEBUG
2003-01-09 21:45:46 +00:00
Jonas Maebe
ed5a4a6977
* fixed check for whether or not a high parameter was already generated
...
* no type checking/conversions for invisible parameters
2002-12-26 18:24:33 +00:00
florian
c7ca2ff901
+ some stuff for the new hidden parameter handling added
2002-12-15 22:50:00 +00:00
peter
772d7147cd
* give sign difference between ordinals a small penalty. This is
...
needed to get word->[longword|longint] working
2002-12-15 21:34:15 +00:00
florian
1da30f2610
* tcallnode.paraitem introduced, all references to defcoll removed
2002-12-15 21:30:12 +00:00
peter
5ebf9afd63
* fix crash with default parameters
2002-12-15 20:59:58 +00:00
peter
a2a1a36e83
* ignore vs_hidden parameters when choosing overloaded proc
2002-12-15 11:26:02 +00:00
peter
d611c25599
* tcallnode.det_resulttype rewrite, merged code from nice_ncal and
...
the old code. The new code collects the information about possible
candidates only once resultting in much less calls to type compare
routines
2002-12-11 22:42:28 +00:00
carl
081a4aab35
* 3% memory optimization
...
* changed some types
+ added type checking with different size for call node and for
parameters
2002-12-07 14:27:07 +00:00
peter
dc66eafb0b
* merged cdecl and array fixes
2002-12-06 17:51:09 +00:00
peter
cab4c8879f
* only compile cs_fp_emulation support when cpufpuemu is defined
...
* define cpufpuemu for m68k only
2002-12-06 16:56:57 +00:00
peter
1b116848d8
* cdecl array of const fixes
2002-11-27 20:04:38 +00:00
peter
67153fd9a1
* the never ending story of tp procvar hacks
2002-11-27 15:33:46 +00:00
peter
1ba12c259e
* fixed inlinetree parsing in det_resulttype
2002-11-27 02:31:17 +00:00
carl
6a52e7a9e5
- removed the invalid if <> checking (Delphi is strange on this)
...
+ implemented abstract warning on instance creation of class with
abstract methods.
* some error message cleanups
2002-11-25 18:43:31 +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
peter
a496dbe1ff
* pass proccalloption to ret_in_xxx and push_xxx functions
2002-11-18 17:31:54 +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
carl
ed1a28dcdc
* var parameter checking for classes and interfaces in Delphi mode
2002-10-14 18:20:30 +00:00
peter
a1b570bc48
* fixed limit checking for qword
2002-10-06 21:02:17 +00:00
peter
ebbf4d8d14
* Write unknwon compiler proc using Comment and only in Extdebug
2002-10-05 15:15:45 +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
9d0437f8aa
* support inherited; support for overload as it is handled by
...
delphi. This is only for delphi mode as it is working is
undocumented and hard to predict what is done
2002-10-05 00:48:57 +00:00
peter
cea50f7185
* add argument to equal_paras() to support default values or not
2002-09-16 14:11:12 +00:00
peter
6d0e34fa5e
* don't have strict var parameter checking for procedures in the
...
system unit
2002-09-15 17:49:59 +00:00
peter
ab536bffc2
* don't allow convertable parameters for var and out parameters in
...
delphi and tp mode
2002-09-09 19:30:34 +00:00
peter
dcd9e0107c
* old logs removed and tabs fixed
2002-09-07 15:25:00 +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
peter
f5a4b06b8a
* fixed old callnode.det_resulttype code
...
* old ncal code is default again
2002-09-05 14:53:41 +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
b0364566d1
* Make Tprocdef.defs protected
2002-09-03 16:26:26 +00:00
daniel
f4c6d762fd
- write_access fields removed in favor of a flag
2002-09-01 13:28:37 +00:00
peter
8ee2462ba4
* remove debug line
...
* containself methods can be called directly
2002-09-01 12:14:15 +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
peter
770b338833
* also firstpass funcretrefnode if available. This was breaking the
...
asnode compilerproc code
2002-08-23 16:13:16 +00:00
daniel
ba29715c7a
* Tcallnode.det_resulttype rewritten
2002-08-20 10:31:26 +00:00
peter
91b49914f6
* More fixes for cross unit inlining, all tnodes are now implemented
...
* Moved pocall_internconst to po_internconst because it is not a
calling type at all and it conflicted when inlining of these small
functions was requested
2002-08-19 19:36:42 +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
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
daniel
399036f1c2
* State tracker work
...
* The whilen and repeatn are now completely unified into whilerepeatn. This
allows the state tracker to change while nodes automatically into
repeat nodes.
* Resulttypepass improvements to the notn. 'not not a' is optimized away and
'not(a>b)' is optimized into 'a<=b'.
* Resulttypepass improvements to the whilerepeatn. 'while not a' is optimized
by removing the notn and later switchting the true and falselabels. The
same is done with 'repeat until not a'.
2002-07-19 11:41:34 +00:00
florian
c3f4220f3b
* readded removed changes
2002-07-15 18:03:14 +00:00
daniel
eeae0e4c00
+ Added the beginning of a state tracker. This will track the values of
...
variables through procedures and optimize things away.
2002-07-14 18:00:43 +00:00
florian
336808f6c3
* start of the new generic parameter handling
2002-07-11 14:41:27 +00:00
florian
479a745096
* first x86-64 patches
2002-07-04 20:43:00 +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
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
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