peter
bbf8bddbb4
* unit loading changed to first register units and load them
...
afterwards. This is needed to support uses xxx in yyy correctly
* unit dependency check fixed
2002-12-29 14:57:50 +00:00
peter
9147303907
* duplicate procsym-unitsym fix
2002-12-25 01:26:56 +00:00
peter
bbd18afe11
* don't include uf_init for library. The code is already called and
...
does not need to be in the initfinal table
2002-12-15 13:37:15 +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
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
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
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
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
6d8024afc4
* noopt for non-i386 targets
2002-11-09 15:32:30 +00:00
florian
0d94086e03
* call to procinfo.after_header added
2002-09-10 20:31:48 +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
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
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
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
afd252b0b5
* fixed stackframe parameter (should only contain local size),
...
set to zero currently
2002-08-09 19:14:28 +00:00
florian
b136cecacd
* first part of ppc calling conventions fix
2002-08-06 20:55:20 +00:00
florian
eb2ca8d10f
* rewrote the system handling
2002-07-26 21:15:37 +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
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
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
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
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
70ff711f73
* mangledname rewrite, tprocdef.mangledname is now created dynamicly
...
in most cases and not written to the ppu
* add mangeledname_prefix() routine to generate the prefix of
manglednames depending on the current procedure, object and module
* removed static procprefix since the mangledname is now build only
on demand from tprocdef.mangledname
2002-04-19 15:46:01 +00:00
carl
5befcda7e5
+ target_info.size_of_pointer -> pointer_Size
2002-04-15 18:57:22 +00:00
carl
0ee2ac7451
+ added wdosx support (patch from Pavel)
2002-04-04 18:30:22 +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
a6d63f0adc
* commited the wrong file :(
2002-01-19 15:37:24 +00:00
peter
04248ee5b5
* also check at the end of the implementation for incomplete classes
2002-01-19 15:20:09 +00:00
peter
d6fb9766ee
* check for unresolved forward classes in the interface
2002-01-19 15:12:34 +00:00
peter
d2e1952377
* procsym definition rewrite
2001-11-02 22:58:00 +00:00
peter
e37dbf904d
* calling convention rewrite
2001-10-25 21:22:32 +00:00
peter
09cd7f1642
* overloaded functions don't need to be global in kylix
2001-10-22 21:20:46 +00:00
Jonas Maebe
2c87e58a77
* allow self parameter for normal procedures again (because Kylix allows
...
it too) ("merged")
2001-10-01 13:38:44 +00:00
Jonas Maebe
6a15178f0f
* fixed web bug #1593
...
* writing of procvar headers is more complete (mention var/const/out for
paras, add "of object" if applicable)
+ error if declaring explicit self para as var/const
* fixed mangled name of procedures which contain an explicit self para
* parsing para's should be slightly faster because mangled name of
procedure is only updated once instead of after parsing each para
(all merged from fixes)
2001-09-10 10:26:26 +00:00
florian
9746f4c2d6
* some cg reorganisation
...
* some PPC updates
2001-08-26 13:35:06 +00:00
peter
81200dc9ef
* funcret moved from tprocinfo to tprocdef
2001-08-06 21:40:46 +00:00
peter
e652444594
+ varargs directive
2001-06-04 11:53:12 +00:00
peter
f86ce17588
+ hint directive parsing support
2001-06-03 21:57:35 +00:00
peter
9a47ac9ec2
* m68k updates merged from fixes branch
2001-04-21 12:03:11 +00:00
peter
0c03535b5b
* registration of targets and assemblers
2001-04-18 22:01:53 +00:00
peter
cf8a1e1462
* better skipping of secondpass if error
2001-04-14 14:05:47 +00:00
peter
a5a695d141
* when errors are found don't generate code, but still run the
...
resulttype pass
2001-04-13 23:49:24 +00:00
peter
f9c8c7e2ef
* don't generate code when there is already an error
2001-04-13 17:59:03 +00:00
peter
a7cf57524e
* symtable change to classes
...
* range check generation and errors fixed, make cycle DEBUG=1 works
* memory leaks fixed
2001-04-13 01:22:06 +00:00
peter
4e2655cdc5
* resulttype rewrite
2001-04-02 21:20:29 +00:00
peter
684970ea22
* merged generic m68k updates from fixes branch
2001-02-26 19:44:52 +00:00
peter
32b9cdb7cf
+ new tlinkedlist class (merge of old tstringqueue,tcontainer and
...
tlinkedlist objects)
2000-12-25 00:07:25 +00:00
florian
b9796f6a7f
* unused units removed from uses clause
...
* some changes for widestrings
2000-11-29 00:30:30 +00:00
Jonas Maebe
50f0345bb8
* if a procedure uses exceptions (be it implicit or explicit), the
...
usedregisters are set to all (because FPC_POPADDRSTACK doesn't save
any registers) ("merged", fixes make cycle woth -Or)
2000-11-08 16:38:24 +00:00
peter
5115083270
* tprocdef.fullprocname added for better casesensitve writing of
...
procedures
2000-11-01 23:04:37 +00:00
peter
451723647e
* symtable splitted, no real code changes
2000-10-31 22:02:46 +00:00
peter
299d6098aa
* set usedregisters after writing entry and exit code (merged)
2000-10-24 22:21:25 +00:00
florian
f80c24177a
* a lot of changes:
...
- basic dyn. array support
- basic C++ support
- some work for interfaces done
....
2000-10-21 18:16:11 +00:00
peter
eb3ca9c51d
* unit names and procedure names are stored mixed case
2000-10-15 07:47:51 +00:00
peter
e171f341a0
* moehrendorf oct 2000 rewrite
2000-10-14 10:14:45 +00:00
peter
24fc983597
* message updates merges
2000-09-24 21:33:46 +00:00
peter
5218af7926
* delphi compile fixes
2000-09-24 21:19:48 +00:00
peter
a71e44ac49
* use defines.inc
2000-09-24 15:06:10 +00:00
peter
3b46bdb72d
* overload checking in implementation removed (merged)
2000-09-10 20:11:07 +00:00
peter
b90e759995
* fixed operator overloading
2000-09-04 20:15:19 +00:00
peter
4c94659743
* moved some util functions from globals,cobjects to cutils
...
* splitted files into finput,fmodule
2000-08-27 16:11:48 +00:00
peter
7eaac1706d
* splitted namedobjectitem.next into indexnext and listnext so it
...
can be used in both lists
* don't allow "word = word" type definitions (merged)
2000-08-16 18:33:53 +00:00
peter
cb4de797c1
* class member decl wrong then no other error after it
...
* -vb has now also line numbering
* -vb is also used for interface/implementation different decls and
doesn't list the current function (merged)
2000-08-13 12:54:53 +00:00
peter
43f82ba0ff
* memdebug/memory patches (merged)
...
* only once illegal directive (merged)
2000-08-08 19:28:57 +00:00
peter
658a1f4fcd
* default parameters working !
2000-08-06 19:39:28 +00:00
peter
95253a2759
* overload fixes (merged)
2000-08-06 14:17:15 +00:00
peter
c5da6c53fd
* merged fixes
2000-07-30 17:04:43 +00:00
michael
665c1f6410
+ patched to 1.1.0 with former 1.09patch from peter
2000-07-13 12:08:24 +00:00
michael
650fbb86aa
+ removed logs
2000-07-13 11:32:24 +00:00
michael
e7aca136a1
+ Initial import
2000-07-13 06:29:38 +00:00
pierre
ab6fd6b3b8
* get a failure on webtbf/tbug890
2000-07-07 20:42:55 +00:00
peter
b91050ccb7
* allow in delphi mode directives without semicolons between
2000-07-06 19:04:59 +00:00
florian
73269986f3
* fixed a problem with forward declarations in TP mode, probably introduced by
...
Pierre's last changes
2000-06-25 20:13:51 +00:00
pierre
38f27344f4
* equal_paras and convertable_paras changed by transforming third parameter
...
into an enum with three possible values:
cp_none, cp_value_equal_const and cp_all.
2000-06-20 12:47:52 +00:00
peter
b71b416cd1
* support overload keyword
2000-06-18 18:12:40 +00:00
pierre
ef8abc1dd7
* operator overloading now uses isbinaryoperatoracceptable
...
and is unaryoperatoracceptable
2000-06-02 21:24:46 +00:00
pierre
5f437d210d
* Delphi defines TP so that code compiles
...
sent by Kovacs Attila Zoltan
2000-05-10 19:22:51 +00:00
pierre
51a1677da5
* calculate para_offset for interrupt procedures
2000-05-09 14:19:08 +00:00
pierre
3174b39bcc
* More changes for operator bug
...
Order_overloaded method removed because it conflicted with
new implementation where the defs are ordered
according to the unit loading order !
2000-04-26 08:54:18 +00:00
pierre
dbdb7ee667
+ Hint about unused unit
...
* Testop bug fixed !!
Now the operators are only applied if the unit is explicitly loaded
2000-04-25 23:55:29 +00:00
peter
a9cff3c8c5
* removed unused vars
2000-04-24 12:48:37 +00:00
pierre
92e9d3bf83
* fix the handling of value parameters in cdecl function
2000-03-31 22:56:45 +00:00
pierre
700f9ce852
* fix for bug #890
2000-03-27 11:57:22 +00:00
pierre
578465bef0
* fix tf000008 bug
2000-03-23 22:17:51 +00:00
pierre
0f4e1e10e0
* fix for bug #807
2000-03-16 16:41:11 +00:00
pierre
4177d64781
* fix for bug #848 (that still genrated wrong code)
...
+ better testing for variables used in assembler
(gives an error if variable is not directly reachable !)
2000-03-15 23:09:58 +00:00
peter
50a4b4b4db
* if calling convention doesn't match don't print note about
...
different manglednames
2000-02-27 14:44:39 +00:00
florian
df41d1395c
* newcg is compiling
...
* fixed the dup id problem reported by Paul Y.
2000-02-20 20:49:45 +00:00
florian
dfe879d12e
* some updates for the newcg
2000-02-17 14:53:42 +00:00
peter
4a4a24b6e8
* log truncated
2000-02-09 13:22:42 +00:00
peter
119ebd56c6
* reset section back to code after localdata
2000-02-08 13:55:13 +00:00
florian
a0cc4f970b
* an exception in a construcor calls now the destructor (this applies only
...
to classes)
2000-02-04 20:00:21 +00:00
Jonas Maebe
16e46c496c
* moved call to resetusableregs to compile_proc_body (put it right before the
...
reset of the temp generator) so the optimizer can know which registers are
regvars
2000-02-04 14:54:17 +00:00
florian
997ddf88f9
* virtual XXXX; support for objects, only if -dWITHDMT is defined
2000-01-28 23:17:53 +00:00
florian
eb1715ded4
* fixed for the fix of bug #793
...
* fpu variables modified by nested subroutines aren't regable anymore
* $maxfpuregisters doesn't modify anymore the behavior of a procedure before
2000-01-21 22:06:16 +00:00
peter
25dda03cdc
* renamed call_offset to para_offset
2000-01-16 22:17:11 +00:00
Jonas Maebe
edf419d5a7
* removed a lot of memory leaks when an error is encountered (caused by
...
procinfo and pstringcontainers). There are still plenty left though :)
2000-01-11 17:16:04 +00:00
peter
e525797c51
* updated copyright to 2000
2000-01-07 01:14:18 +00:00
peter
7583de7a4f
- removed freelabel()
...
* added undefined label detection in internal assembler, this prevents
a lot of ld crashes and wrong .o files
* .o files aren't written anymore if errors have occured
* inlining of assembler labels is now correct
1999-12-22 01:01:45 +00:00
peter
03a9699ce3
* newcg compiler compiles again
1999-12-06 18:17:09 +00:00
peter
0512ba80fb
+ ttype, tsymlist
1999-11-30 10:40:42 +00:00
pierre
fca8adf6c2
* also complain about unused functions in program
1999-11-22 00:23:09 +00:00
pierre
62da9bd4c0
* Notes/hints changes
1999-11-17 17:04:58 +00:00
pierre
acaa9296b7
* more browser details
1999-11-10 00:24:02 +00:00
pierre
142ace2afc
* better browser info
1999-11-09 23:43:08 +00:00
peter
23ca9de3b3
* esi_offset -> selfpointer_offset to be newcg compatible
...
* hcogegen -> cgbase fixes for newcg
1999-11-09 23:06:44 +00:00
peter
0887060ff2
* truncated log to 20 revs
1999-11-06 14:34:16 +00:00
peter
503d5a1cfa
* const parameter is now checked
...
* better and generic check if a node can be used for assigning
* export fixes
* procvar equal works now (it never had worked at least from 0.99.8)
* defcoll changed to linkedlist with pparaitem so it can easily be
walked both directions
1999-10-26 12:30:40 +00:00
peter
89b677a0ee
* split type reading from pdecl to ptype unit
...
* parameter_dec routine is now used for procedure and procvars
1999-10-22 10:39:34 +00:00
peter
19aa88a729
* moved mangledname creation of normal proc so it also handles a wrong
...
method proc
1999-10-13 10:37:36 +00:00
florian
8b9633266b
* new codegenerator compiles again
1999-10-12 21:20:41 +00:00
peter
6b6fc5aac4
* fixed forward decl check for tp7/delphi
1999-10-03 19:38:39 +00:00
peter
532d85cd50
+ procedure directive support in const declarations, fixes bug #232
1999-10-01 10:05:37 +00:00
peter
49fcd8aceb
* forward type declaration rewritten
1999-10-01 08:02:45 +00:00
peter
6b1ab5eb31
* procinfo is now a pointer
...
* support for result setting in sub procedure
1999-09-27 23:44:46 +00:00
peter
71f28ed588
* cs_create_smart instead of cs_smartlink
...
* -CX is create smartlink
* -CD is create dynamic, but does nothing atm.
1999-09-20 16:38:51 +00:00
florian
1c638f2952
* small fix to operator overloading when in MMX mode
...
+ the compiler uses now fldz and fld1 if possible
+ some fixes to floating point registers
+ some math. functions (arctan, ln, sin, cos, sqrt, sqr, pi) are now inlined
* .... ???
1999-09-15 20:35:37 +00:00
florian
a9d8bfa1f7
* some bug fixes (e.g. must_be_valid and procinfo.funcret_is_valid)
...
* most things for stored properties fixed
1999-09-10 18:48:00 +00:00
pierre
c528cf639f
* bugfix for 237 and 244
1999-09-07 14:59:40 +00:00
daniel
1777e0c901
* Could not compile with TP, some arrays moved to heap
...
* NOAG386BIN default for TP
* AG386* files were not compatible with TP, fixed.
1999-09-02 18:47:41 +00:00
peter
0274f3a08b
* fixed crash in psub
...
* ansistringcompare fixed
* support for #$0b8
1999-08-30 10:17:56 +00:00
pierre
154386ac6a
* pi_is_global was missing for global methods
...
+ code to restore overloaded list order
(necessary to get same CRC values after interface and after
implementation)
1999-08-27 10:41:46 +00:00
pierre
1c8a7a1924
+ label faillabel added for _FAIL support
1999-08-19 13:02:08 +00:00
pierre
c63cfc6f7a
* linking to C code with cdecl;external; was broken
1999-08-10 16:24:44 +00:00
pierre
88185b4be3
+ procsym field of tprocdef set
1999-08-10 12:37:44 +00:00
peter
cb8aeb3fd6
* V_Fatal=1, all other V_ are also increased
...
* Check for local procedure when assigning procvar
* fixed comment parsing because directives
* oldtp mode directives better supported
* added some messages to errore.msg
1999-08-05 16:52:53 +00:00
Jonas Maebe
ace7ff6983
* all tokens now start with an underscore
...
* PowerPC compiles!!
1999-08-04 13:02:40 +00:00
florian
ca53eee67e
* renamed i386asm and i386base to cpuasm and cpubase
1999-08-04 00:22:34 +00:00
peter
ed8eb13d59
* moved bitmask constants to sets
...
* some other type/const renamings
1999-08-03 22:02:29 +00:00
florian
1cf1665d73
* the alpha compiler can be compiled now
1999-08-03 17:09:34 +00:00
florian
eac806034d
* the main branch psub.pas is now used for
...
newcg compiler
1999-08-02 21:28:56 +00:00
peter
30be2bf063
* indirect type referencing is now allowed
1999-07-27 23:42:10 +00:00
florian
9cbaac5beb
* bugs 494-496 fixed
1999-07-26 09:41:59 +00:00
peter
f2818d7908
* merged
1999-07-11 20:10:23 +00:00
peter
f959158854
* merged
1999-07-02 13:02:24 +00:00
pierre
e8da115c3f
* merged from 0_99_12 branch
1999-06-17 13:19:50 +00:00
peter
8db8e0d6a8
* reinserted
1999-06-11 13:21:37 +00:00