peter
a2cbf27e96
* -Or fix for absolute
2004-11-01 15:31:57 +00:00
peter
adb6f59eef
* small regvar fixes
...
* loadref parameter removed from concatcopy,incrrefcount,etc
2004-10-24 11:44:28 +00:00
mazen
581b52422c
- remove $IFDEF DELPHI and related code
...
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
f1ae6fb6d4
* give error when converting class to interface are not related
2004-10-12 14:33:41 +00:00
peter
66df745917
* small regvar for para fixes
...
* function tvarsym.is_regvar added
* tvarsym.getvaluesize removed, use getsize instead
2004-10-11 15:48:15 +00:00
peter
8fb3536f6e
* simple regvar support, not yet finished
2004-09-26 17:45:29 +00:00
florian
120c165a62
* constant floating point assignments etc. are now overflow checked
...
if Q+ or R+ is turned on
2004-08-08 16:00:56 +00:00
peter
e179e7d9e1
* fix pchar:=char
...
* fix longint(smallset)
2004-06-29 20:57:50 +00:00
peter
cf3c1198ea
* include unit name in error messages when types are the same
2004-06-23 16:22:45 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
b86f2c6a25
* methodpointer is loaded into a temp when it was a calln
2004-05-23 18:28:40 +00:00
peter
a9df763770
* some typeconvs don't allow assignment or passing to var para
2004-05-23 15:03:40 +00:00
florian
d6b865167c
+ added set of widechar support (limited to 256 chars, is delphi compatible)
2004-05-23 14:14:18 +00:00
daniel
b721e5872c
* Prepare compiler infrastructure for multiple ansistring types
2004-04-29 19:56:36 +00:00
peter
e46cdcea48
* constants ordinals now always have a type assigned
...
* integer constants have the smallest type, unsigned prefered over
signed
2004-03-23 22:34:49 +00:00
peter
6b96b70118
* fixed operator overload allowing for pointer-string
...
* replaced some type_e_mismatch with more informational messages
2004-03-18 16:19:03 +00:00
florian
1d8b4661b8
* message about illegal type conversion reports now the types
2004-02-21 16:03:10 +00:00
peter
c844c5a505
* procvar cleanup
2004-02-20 21:55:59 +00:00
peter
3a3fdde6d1
* compare_defs_ext has now a options argument
...
* fixes for variants
2004-02-13 15:42:21 +00:00
florian
465aa5851b
* several fixes to compile x86-64 system
2004-02-05 01:24:08 +00:00
daniel
d735071838
* Rtti generation moved to ncgutil
...
* Assmtai usage of symsym removed
* operator overloading cleanup up
2004-02-04 22:15:15 +00:00
peter
ecfbbeffc3
* renamed xNNbittype to xNNinttype
...
* renamed registers32 to registersint
* replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
daniel
97e87aaebc
* reginfo now also only allocated during register allocation
...
* third round of gdb cleanups: kick out most of concatstabto
2004-01-26 16:12:27 +00:00
florian
3d8e1ab1fb
+ fpu<->mm register conversion
2003-12-26 00:32:21 +00:00
peter
f2d2c4c496
* fix rangecheck error
2003-12-22 23:11:15 +00:00
peter
1260eed8fd
* again procvar fixes
2003-12-08 22:35:28 +00:00
Jonas Maebe
3c33590a80
* fixed range error
2003-11-22 00:31:52 +00:00
florian
8b337fb5ef
+ type cast variant<->enum
...
* cnv. node second pass uses now as well helper wrappers
2003-11-04 22:30:15 +00:00
peter
9b0dda9f42
* don't call proc_to_procvar for explicit typecasts
2003-10-31 18:42:03 +00:00
florian
6a06df943b
* fixed passing of dyn. arrays to open array parameters
2003-10-29 22:01:20 +00:00
peter
079e489b08
* absolute to object field supported, fixes tb0458
2003-10-28 15:36:01 +00:00
peter
4a1ecb07d1
* splitted buildderef and buildderefimpl to fix interface crc
...
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80
* write derefdata in a separate ppu entry
2003-10-22 20:39:59 +00:00
peter
a28d911c98
* IncompatibleTypes() added that will include unit names when
...
the typenames are the same
2003-10-21 18:16:13 +00:00
peter
a909ffdd35
* allow explicit typecasts from classrefdef, fixes 2728
2003-10-09 14:39:03 +00:00
peter
95f132db3d
* set_varstate cleanup
2003-10-08 19:19:45 +00:00
peter
e55017a946
* fix 2720
2003-10-07 14:30:27 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
0805c4e535
* fix different expectloc
2003-09-25 14:57:51 +00:00
florian
f3e9e7a24f
* fixed web bug #2669
...
* cosmetic fix in printnode
* tobjectdef.gettypename implemented
2003-09-06 22:27:08 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
peter
6731abb0db
* fixed some reported bugs
2003-08-10 17:25:23 +00:00
peter
28ebc69c8f
* removed changesettype because that will change the definition
...
of the setdef forever and can result in a different between
original interface and current implementation definition
2003-06-05 20:05:55 +00:00
Jonas Maebe
d8725a18bf
* disable fpuregable for fpu variables typecasted to non fpu-type
2003-06-04 17:55:09 +00:00
Jonas Maebe
ad0dd43c4b
* fixed void_to_(int,pointer) typeconversion
2003-06-04 17:29:01 +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
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
1a2eedd767
* self moved to hidden parameter
...
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +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
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
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
41dfcfba39
* expectloc fixes
2003-04-23 10:10:07 +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
0e0a581230
* do not convert procvars with void return to callnode
2003-04-22 09:52:30 +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
carl
dd0322c646
* generic conversaion routines only work on signed types
2003-02-15 22:15:57 +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
90473fa87f
* constant string conversion fixed, it's now equal to both
...
shortstring, ansistring and the typeconvnode will return
te_equal but still return convtype to change the constnode
2003-01-09 21:43:39 +00:00
peter
b3ef495a2b
* move code that checks for longint-pointer conversion hint
2003-01-05 22:41:40 +00:00
daniel
5041b70618
* Removed ifdefs around notifications
...
ifdefs around for loop optimizations remain
2003-01-03 12:15:55 +00:00
peter
54d8b64899
* proc-procvar crash fixed (tw2277)
2002-12-22 16:34:49 +00:00
peter
70f03b9d6c
* don't allow class(classref) conversion
2002-12-20 16:01:26 +00:00
florian
121ca40b39
* some variant <-> dyn. array stuff
2002-12-05 14:27:25 +00:00
carl
87e69126fb
* fix bug with checking of duplicated items in sets (new sets bug only)
2002-11-30 10:45:14 +00:00
carl
4532dbd680
* updated notes and hints
2002-11-27 19:43:21 +00:00
peter
acb449fb1f
* more currency fixes, taddcurr runs now successfull
2002-11-27 13:11:38 +00:00
peter
8351bb059b
* when converting from and to currency divide or multiple the
...
result by 10000
2002-11-27 11:29:21 +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
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
florian
161d1b923e
+ several widestring/pwidechar related stuff added
2002-10-10 16:07:57 +00:00
florian
6d1506a7c6
* when compiling <interface> as <interface> we can't assume
...
anything about relation
2002-10-06 16:10:23 +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
florian
eeae421d91
- removed the relation check for <class> as <interface> because we don't
...
know the runtime type of <class>! It could be a child class of the given type
which implements additional interfaces
2002-10-02 20:23:50 +00:00
florian
4cf1bb7038
+ the as operator for <class> as <interface> has to check the parent classes as well
2002-10-02 20:17:14 +00:00
florian
d5f0cbbf2b
* fixes to common code to get the alpha compiler compiled applied
2002-09-30 07:00:44 +00:00
peter
cea50f7185
* add argument to equal_paras() to support default values or not
2002-09-16 14:11:12 +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
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
86830c26b8
- reverted my last commit, it was completely bogus :(
2002-09-05 05:56:07 +00:00
Jonas Maebe
d2401f67b4
- removed unnecessary typeconversion from char_to_string
2002-09-04 19:38:42 +00:00
peter
a17291b2d4
* array of char support for Str()
2002-09-02 19:24:41 +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
4b81e16fe2
* tempgen cleanup
...
* tt_noreuse temp type added that will be used in genentrycode
2002-08-23 16:14:48 +00:00
Jonas Maebe
ed08ed1ce0
* the as node again uses a compilerproc
...
+ (untested) support for interface "as" statements
2002-08-20 18:23:32 +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
e313bab4ff
* first part of procinfo rewrite
2002-08-17 09:23:33 +00:00
carl
e212fa90d5
+ generic int_to_real type conversion
...
+ generic unaryminus node
2002-08-14 19:26:55 +00:00
florian
31c178f207
+ support of explicit type case boolean->char
2002-08-11 16:08:55 +00:00
florian
589c742efe
+ support of explicit type case <any ordinal type>->pointer
...
(delphi mode only)
2002-08-11 15:28:00 +00:00
florian
030eae46de
* a couple of interface related fixes
2002-08-09 07:33:01 +00:00
florian
e7a6cd18dd
* more fixes for the ppc
...
+ wrappers for the tcnvnode.first_* stuff introduced
2002-07-29 21:23:42 +00:00
daniel
1130395e7e
* Readded old set code. To use it define 'oldset'. Activated by default
...
for ppc.
2002-07-23 12:34:29 +00:00
daniel
46b8ed0657
* Tried to make Tprocsym.defs protected. I didn't succeed but the cleanups
...
are worth comitting.
2002-07-23 09:51:22 +00:00
daniel
3a134c6e07
* Sets are now internally sets.
2002-07-22 11:48:04 +00:00
florian
4f7b35be5b
+ source code page support
2002-07-20 17:11:48 +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
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
peter
cc8c4d7093
* moved more routines from cga/n386util
2002-04-25 20:16:38 +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
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
Jonas Maebe
71a52a4aeb
* several powerpc-related additions and fixes
2002-04-06 18:10:42 +00:00
peter
5e7a1e3729
* removed unused units
...
* use tlocation.size in cg.a_*loc*() routines
2002-04-04 19:05:54 +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
peter
190ead04c0
* more fixes for protected handling
2002-02-03 09:30:03 +00:00
Jonas Maebe
cd378a2881
* fixed type conversions from dynamic arrays to open arrays
2001-12-10 14:34:04 +00:00
florian
b60666ae1f
+ parasym to tparaitem added
2001-12-06 17:57:33 +00:00
peter
e45bb82d81
* freemem change to value parameter
...
* torddef low/high range changed to int64
2001-12-03 21:48:41 +00:00
Jonas Maebe
a87a30b831
* fixed web bug #1665 (allow char to chararray type conversion) ("merged")
2001-11-02 23:24:11 +00:00
peter
d2e1952377
* procsym definition rewrite
2001-11-02 22:58:00 +00:00
peter
ac400051bd
* allow assignment of overloaded procedures to procvars when we know
...
which procedure to take
2001-10-28 17:22:25 +00:00
peter
17d6dded66
* interface 2 guid support
...
* guid constants support
2001-10-20 19:28:37 +00:00
peter
cea68ee35c
* fixed size of constset when change from small to normalset
2001-10-20 17:21:54 +00:00
Jonas Maebe
f33d23922a
- removed unnecessary i386 pass_2 of as- and isnode and added dummy generic ones
2001-09-30 16:12:46 +00:00
Jonas Maebe
fc6d300a95
* almost all second pass typeconvnode helpers are now processor independent
...
* fixed converting boolean to int64/qword
* fixed register allocation bugs which could cause internalerror 10
* isnode and asnode are completely processor indepent now as well
* fpc_do_as now returns its class argument (necessary to be able to use it
properly with compilerproc)
2001-09-29 21:32:46 +00:00
Jonas Maebe
f256a47f04
* compilerproc implementation of set addition/substraction/...
...
* changed the declaration of some set helpers somewhat to accomodate the
above change
* i386 still uses the old code for comparisons of sets, because its
helpers return the results in the flags
* dummy tc_normal_2_small_set type conversion because I need the original
resulttype of the set add nodes
NOTE: you have to start a cycle with 1.0.5!
2001-09-03 13:27:41 +00:00
peter
43dea5a35f
* move class of definitions into type section for delphi
2001-09-02 21:12:06 +00:00
Jonas Maebe
06f9cd4c96
* some fixes in compilerprocs for chararray to string conversions
...
* conversion from string to chararray is now also done via compilerprocs
2001-08-29 19:49:03 +00:00
Jonas Maebe
105b7ae809
+ new createinternres() constructor for tcallnode to support setting a
...
custom resulttype
* compilerproc typeconversions now set the resulttype from the type
conversion for the generated call node, because the resulttype of
of the compilerproc helper isn't always exact (e.g. the ones that
return shortstrings, actually return a shortstring[x], where x is
specified by the typeconversion node)
* ti386callnode.pass_2 now always uses resulttype instead of
procsym.definition.rettype (so the custom resulttype, if any, is
always used). Note that this "rettype" stuff is only for use with
compilerprocs.
2001-08-29 12:18:07 +00:00
Jonas Maebe
fc92c3b336
+ compilerproc implementation of most string-related type conversions
...
- removed all code from the compiler which has been replaced by
compilerproc implementations (using {$ifdef hascompilerproc} is not
necessary in the compiler)
2001-08-28 13:24:46 +00:00
florian
9746f4c2d6
* some cg reorganisation
...
* some PPC updates
2001-08-26 13:35:06 +00:00
peter
8d11d0d6bf
* partly fix for proc of obj=nil
2001-08-05 13:19:51 +00:00
peter
c4b84ce276
* m68k updates from v10 merged
2001-07-30 20:59:27 +00:00
peter
ca8d604964
* various widestring updates, it works now mostly without charset
...
mapping supported
2001-07-08 21:00:14 +00:00
florian
f56c9c6855
* made resultype_char_to_char a little bit robuster
2001-05-13 15:43:46 +00:00
florian
05cfc07952
* some more support for widechars commited especially
...
regarding type casting and constants
2001-05-08 21:06:30 +00:00
florian
3c5793d8c6
* some Delphi incompatibilities fixed:
...
- out, dispose and new can be used as idenfiers now
- const p = apointerype(nil); is supported now
+ support for const p = apointertype(pointer(1234)); added
2001-05-04 15:52:03 +00:00
peter
a14d8618da
* remove wrongly placed first_call_helper
2001-04-13 22:20:58 +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
759f678192
* move constant folding into det_resulttype
2001-04-04 22:42:39 +00:00
peter
4e2655cdc5
* resulttype rewrite
2001-04-02 21:20:29 +00:00
Jonas Maebe
044e307ab3
* fixed web bug #1430
2001-03-08 17:44:47 +00:00
Jonas Maebe
ee9ebaa3ee
* evaluate typecasts of const pointers to ordinals inline ('merged')
2001-02-21 11:49:50 +00:00
peter
211bd33dcb
* removed unused code
2001-02-20 18:37:10 +00:00
marco
69705d29e9
* Fix from Peter for passing a procedure of method to a other method in a method
2001-02-20 13:14:18 +00:00
Jonas Maebe
74c1d32ce9
* fixed web bug #1396 : tpointerord is now a cardinal instead of a longint,
...
but added a hack in ncnv so that pointer(-1) still works
2001-02-08 13:09:03 +00:00
Jonas Maebe
4c8ca9774f
+ implemented/fixed docompare() mathods for all nodes (not tested)
...
+ nopt.pas, nadd.pas, i386/n386opt.pas: optimized nodes for adding strings
and constant strings/chars together
* n386add.pas: don't copy temp strings (of size 256) to another temp string
when adding
2000-12-31 11:14:10 +00:00
Jonas Maebe
06603cf428
* fixed bug in sign extension patch
2000-12-08 12:41:01 +00:00
Jonas Maebe
c91a23c27d
* new constant handling: from now on, hex constants >$7fffffff are
...
parsed as unsigned constants (otherwise, $80000000 got sign extended
and became $ffffffff80000000), all constants in the longint range
become longints, all constants >$7fffffff and <=cardinal($ffffffff)
are cardinals and the rest are int64's.
* added lots of longint typecast to prevent range check errors in the
compiler and rtl
* type casts of symbolic ordinal constants are now preserved
* fixed bug where the original resulttype wasn't restored correctly
after doing a 64bit rangecheck
2000-12-07 17:19:42 +00:00
florian
b9796f6a7f
* unused units removed from uses clause
...
* some changes for widestrings
2000-11-29 00:30:30 +00:00
Jonas Maebe
8075e46f5d
+ allow evaluation of 64bit constant expressions at compile time
...
* disable range checking for explicit typecasts of constant expressions
2000-11-20 16:06:04 +00:00
florian
1462deb207
* interfaces are basically running
2000-11-12 23:24:10 +00:00
florian
51527ba1c9
+ merged Attila's changes for interfaces, not tested yet
2000-11-04 14:25:19 +00:00
peter
451723647e
* symtable splitted, no real code changes
2000-10-31 22:02:46 +00:00
peter
4b17f6f0ff
* fixed memory leaks
2000-10-14 21:52:54 +00:00
peter
e171f341a0
* moehrendorf oct 2000 rewrite
2000-10-14 10:14:45 +00:00
peter
38951f5ce1
* lot of compile updates for cg11
2000-10-01 19:48:23 +00:00
florian
57a566e53d
*** empty log message ***
2000-09-28 19:49:51 +00:00
florian
c284d15e57
* fixed a lot of syntax errors in the n*.pas stuff
2000-09-27 18:14:31 +00:00
florian
a32e181d77
* hmm, still a lot of work to get things compilable
2000-09-26 20:06:13 +00:00
florian
4d6f20c0d4
* more conversion work done
2000-09-26 14:59:34 +00:00
florian
df4eb26ed0
* more fixes
2000-09-25 15:37:14 +00:00