Jonas Maebe
89349c2f1a
* fixed web bug #7963 (crash when trying to print the name of a procvar
...
with too few parameters specified)
git-svn-id: trunk@5591 -
2006-12-14 15:57:17 +00:00
Jonas Maebe
d7633e9dd0
* removed wrong comment from r5389 (no longer applicable since r5390)
...
git-svn-id: trunk@5539 -
2006-12-04 14:13:45 +00:00
Jonas Maebe
7c387c9f82
- removed double initialisation of local typed constants/initialised
...
variables (initialization code of inlined routines is stored/loaded
from ppu as wel)
git-svn-id: trunk@5538 -
2006-12-04 14:10:10 +00:00
Jonas Maebe
9e60d6791d
* show name of procedure/function called with too few parameters
...
git-svn-id: trunk@5522 -
2006-12-01 20:15:57 +00:00
tom_at_work
3b6d5c3676
- cleanup, fixing of uninitialized variables, missing return values and unused variables
...
git-svn-id: trunk@5502 -
2006-11-26 21:54:23 +00:00
Jonas Maebe
5444207df8
* better fix for tw1623 (generates more optimal code)
...
git-svn-id: trunk@5390 -
2006-11-15 14:15:00 +00:00
Jonas Maebe
248046320a
* fixed inlining of functions called in their own parameters (tw1623)
...
git-svn-id: trunk@5389 -
2006-11-15 09:56:11 +00:00
peter
0557ddc342
* removed typed const, it is now handled by staticvarsym
...
* globalvarsym renamed to staticvarsym
* fixed invalid regvar use in init when the finalize also uses the var
git-svn-id: trunk@5290 -
2006-11-08 21:04:22 +00:00
peter
f88e6a834e
* typo
...
git-svn-id: trunk@5255 -
2006-11-05 21:19:41 +00:00
florian
5cbc15b339
* some variant dispatching stuff fixed
...
git-svn-id: trunk@5254 -
2006-11-05 21:07:59 +00:00
florian
a13d358f1e
* first partially working implementation of variant com invoking
...
git-svn-id: trunk@5247 -
2006-11-05 15:34:15 +00:00
florian
c947295cb8
+ ttertiarynode
...
* traise node refactored using tertiarynode
* more dipatch stuff
git-svn-id: trunk@5215 -
2006-11-03 23:03:31 +00:00
peter
e17b424e28
* refactor procsym procdef list
...
git-svn-id: trunk@5210 -
2006-11-03 18:44:46 +00:00
peter
658c46b903
* remove tdictionary and tindexarray
...
* symtables based on TFPHashObjectList and TFPObjectList
* rename torddef.typ to torddef.ordtype
* rename tfloatdef.typ to tfloatdef.floattype
* rename tdef.deftype to tdef.typ
* remove obsolete browser code, browcol is kept so the ide
can still be compiled
git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
florian
be2b715d3c
+ parsing of disp variant invokes
...
git-svn-id: trunk@5162 -
2006-11-01 21:23:04 +00:00
florian
ef7bd58c54
* germanism removed (aktfilepos -> current_filepos)
...
git-svn-id: trunk@5099 -
2006-10-30 22:37:31 +00:00
florian
85d63d9fa9
* settings refactored
...
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
daniel
1406181aa5
* Fix incorrect usage of result value.
...
git-svn-id: trunk@5090 -
2006-10-30 10:32:56 +00:00
peter
3078a1927f
* remove ttype
...
* rename old ttype variables *type to *def
* rename resulttypepass to pass_typecheck
* rename pass_2 to pass_generate_code
git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
daniel
de423ab5b0
+ stringvar[l..h] now valid parameter for open array of char.
...
git-svn-id: trunk@5038 -
2006-10-27 22:23:25 +00:00
daniel
068c0f7952
* Cleaner implementation of pointer index to open array, codegen changes
...
no longer necessary and therefore reverted.
git-svn-id: trunk@5037 -
2006-10-27 20:57:51 +00:00
daniel
2450f5a778
+ First working concept of open_array_procedure(Pbyte_var[0..9]);
...
git-svn-id: trunk@5028 -
2006-10-26 20:30:16 +00:00
Jonas Maebe
0a23786605
- reverted r4880 (wrong varargs reform) and r4838 (wrong removal of
...
varargs/array of const overloads)
* arrayconstructor and array of const are no longer compatible with
the extra varargs parameters (so overloaded varargs and array of
const cdecl functions can be distinguished)
* fixed tprintf2 for the correct varargs syntax
git-svn-id: trunk@4909 -
2006-10-14 17:39:00 +00:00
florian
9288a2f76d
+ more verbose printnode for call nodes
...
git-svn-id: trunk@4892 -
2006-10-13 21:19:14 +00:00
Jonas Maebe
e9cabd17e1
* fixed handling of "varargs" procedures (i.e., those without an explicit
...
array-of-const parameter)
git-svn-id: trunk@4880 -
2006-10-13 12:35:17 +00:00
florian
02d0ac4c3e
+ only procedures doing recursive calls are checked for tail recursivity
...
+ parameters are tested if they are usable with tail recursion removal
git-svn-id: trunk@4853 -
2006-10-10 20:29:48 +00:00
peter
d07f470b71
* remove ifdef fpc
...
git-svn-id: trunk@4819 -
2006-10-07 13:43:34 +00:00
micha
d704af7216
fix compilation for {$T+} linux/win
...
git-svn-id: trunk@4794 -
2006-10-04 20:43:55 +00:00
peter
2f0ce31751
* string concat changed from function to procedure to
...
allow runtime optimization if the destination is the
same as a source parameter
* tassignmentnode now sets aktassignmentnode global that can be used
to use the left node as a destination parameter and
skip the assignment
* disabled all cpu specific shortstr concat/append
git-svn-id: trunk@4770 -
2006-10-02 20:00:06 +00:00
Jonas Maebe
733f559267
* also perform C varargs type conversions for cdecl procedures declared
...
as "varargs" instead of using an array of const parameter
git-svn-id: trunk@4572 -
2006-09-08 16:04:15 +00:00
yury
2df42b29af
* removed "Note: Local variable "X" is assigned but never used" when the variable is passed to procedure/function as OUT parameter.
...
git-svn-id: trunk@4257 -
2006-07-19 18:19:41 +00:00
Jonas Maebe
84d1fc929f
* properly set regvarability of parameters and local variables of inlined
...
functions
* fixed setting of expectloc for fields of regvar'ed records
git-svn-id: trunk@3607 -
2006-05-20 23:37:55 +00:00
Jonas Maebe
e0250bcdb4
* never remove regvar-ability of parameters passed by reference
...
(previously worked only for var/out, now also for const and
is more generic)
git-svn-id: trunk@3554 -
2006-05-17 13:38:02 +00:00
peter
ae0010ad6c
* support proc to procvar conversion for overloaded procdefs passed to parameters
...
git-svn-id: trunk@2997 -
2006-03-21 07:51:54 +00:00
Jonas Maebe
4db6e1ddb8
* moved type conversion of C varargs from tcallnode to
...
tarrayconstructornode.inset_typeconvs() and fixed them:
* integers < 32 bit are converted to 32 bit (this was previously
done in the code generator for some targets, and not for others)
* currency is also converted to double for targets where currency = int64
* single is converted to double, except for x86_64 (is at least
necessary on darwin/ppc, darwin/i386 and linux/i386)
* enums are converted to 32 bit ints
* procvars are converted to pointers
* proper errors are given for various unsupported types
NOTE: in C, floating point constants are by default double, while in
FPC they are of type extended. On platforms where extended <> double,
such constants when passed to C varargs are automatically converted
to double by default (gives warning). If you want to pass them as
single or extended or get rid of the warning, use an explicit typecast
* increased ppu version because of introduction of new node flag
(nf_cvarargs for tarrayconstructornode)
* fixed tests/test/cg/tprintf
* changed tests/test/cg/cdecl/taoc5 to use explicit typecasts for
floating point constants passed to C varargs functions.
git-svn-id: trunk@2949 -
2006-03-17 22:26:48 +00:00
peter
b6e35a200e
* rewrite of optimizer options
...
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
peter
38c0ae73da
Merged revisions 2775,2788-2789 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2775 | peter | 2006-03-05 22:43:30 +0100 (Sun, 05 Mar 2006) | 2 lines
* merge ppu changes to keep ppus the same
........
r2788 | peter | 2006-03-06 12:59:14 +0100 (Mon, 06 Mar 2006) | 2 lines
* Add TFPList and TFPObjectList
........
r2789 | peter | 2006-03-06 13:01:37 +0100 (Mon, 06 Mar 2006) | 2 lines
* fix powerpc
........
git-svn-id: trunk@2790 -
2006-03-06 12:04:44 +00:00
Jonas Maebe
791be20f28
* committed wrong file in r2614 (ncal.pas instead of pexpr.pas)
...
git-svn-id: trunk@2616 -
2006-02-17 09:05:03 +00:00
Jonas Maebe
a15505521c
* fixed handling of wrong invocations of slice + improved error reporting
...
git-svn-id: trunk@2614 -
2006-02-16 20:27:31 +00:00
Jonas Maebe
765fe2b2ab
* fixed bug #4737 (check for potential range errors in for-loop
...
assignment, report correct column for potential range errors of
call parameters)
* refactored code to check potential range check errors (check_ranges
in htypechk)
git-svn-id: trunk@2501 -
2006-02-09 17:39:22 +00:00
Jonas Maebe
0dc6d51c08
* fixed displaying of hints such for procedures and functions
...
(and moved check_hints from pbase to htypechk) (forgot to commit earlier)
git-svn-id: trunk@2469 -
2006-02-07 14:23:38 +00:00
peter
232555904e
* symtablestack cleanup and rewrite
...
git-svn-id: trunk@2448 -
2006-02-05 22:24:18 +00:00
peter
45176ea2a8
* split tstringtype for stringdef and stringconstnode
...
to prevent wrong typecasts
git-svn-id: trunk@2276 -
2006-01-13 17:20:27 +00:00
Jonas Maebe
9c2ee3a722
* fixed web bug #4086 : do not create a refcounted temp for
...
interface temps created for complex callnodes
git-svn-id: trunk@2165 -
2006-01-04 21:07:10 +00:00
florian
f7d2c47f73
+ no stackframe is generated for i386 if possible
...
git-svn-id: trunk@2162 -
2006-01-04 19:19:06 +00:00
Jonas Maebe
cbb59be2f1
* fixed web bug #4651 + test
...
git-svn-id: trunk@2108 -
2006-01-01 20:19:38 +00:00
Jonas Maebe
d6559f594d
* also make "out" parameters unique
...
git-svn-id: trunk@2043 -
2005-12-23 23:48:48 +00:00
Károly Balogh
238964e443
Various m68k fixes/additions:
...
- fixes in asmreader, basic stuff works again, the rest is untested
- removed lot of unnecessary ungetcpuregister()s
- various other fixes i forgot
+ basic amigaos syscalls support. still lacks explicit funcretloc
git-svn-id: trunk@1943 -
2005-12-13 20:42:15 +00:00
Jonas Maebe
52ca5e6922
* use more precise vs_* information to replace less parameters of inlined
...
procedures with const and value parameters with temps, allowing a bit
more value propagation
+ tinline6.pp for testing wrong propagation of value parameters in
dangerous situations
git-svn-id: trunk@1914 -
2005-12-10 17:01:07 +00:00
Jonas Maebe
42ec76598c
* new categories for vs_*: vs_declared, vs_initialised, vs_read,
...
vs_written, vs_readwritten. vs_initialised is the old vs_assigned;
vs_used has been replaced by vs_read, vs_written and vs_readwritten
* the valid_for_*() routines in htypechk now get an extra parameter to
decide whether or not errors should be reported
git-svn-id: trunk@1913 -
2005-12-10 16:51:26 +00:00
peter
f622915690
* fix infinite loop in createinlineparas
...
git-svn-id: trunk@1456 -
2005-10-18 05:51:13 +00:00
florian
71b90d4d00
+ slice implemented
...
git-svn-id: trunk@1384 -
2005-10-15 16:48:27 +00:00
tom_at_work
b2e1cf2610
* powerpc64 port now (manually) cycles, most test programs in tests/test are fine too
...
* fixed bug in ncal.pas which in some circumstances treated the hidden length parameter for open arrays as 32 bit integer
git-svn-id: trunk@1303 -
2005-10-05 21:55:25 +00:00
peter
89297d2c39
* move all stabs ($ifdef gdb) code to dbgstabs
...
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
peter
edf553a223
* string constants are now array of char until
...
they are converted to a specific string type
git-svn-id: trunk@1254 -
2005-10-02 11:08:58 +00:00
peter
a720145fd1
* remove obsolete pass2inline code
...
git-svn-id: trunk@1198 -
2005-09-25 20:02:17 +00:00
peter
2f0fdd1847
* cleaner fix for tb0496 (r1185)
...
git-svn-id: trunk@1196 -
2005-09-25 19:23:37 +00:00
florian
cdd5b61af8
+ internal error added
...
git-svn-id: trunk@1069 -
2005-09-10 09:29:56 +00:00
florian
a53c9e2666
* fixed stupid copy/paste which turned softfloat always off
...
* fixed wince softfloat compiler proc. to be correctly named also when used outside the system unit
git-svn-id: trunk@966 -
2005-08-28 21:08:23 +00:00
florian
5e8db3eb5a
* better error message if a compiler can't find a compilerproc
...
git-svn-id: trunk@943 -
2005-08-25 20:21:06 +00:00
florian
80f1b0953e
* inlining on x86_64 fixed (not broken in fixes branch, needs no merging)
...
git-svn-id: trunk@755 -
2005-07-26 20:44:58 +00:00
Jonas Maebe
20e1ac4640
* fixed inlining of method calls with a methodpointer in a temp
...
+ print inline trees to screen if compiler is compiled with -ddebuginline
git-svn-id: trunk@704 -
2005-07-19 15:03:48 +00:00
Jonas Maebe
2d58a4d4d7
* fixed disabling of recusive inlining after pocall_inline to po_inline
...
change
git-svn-id: trunk@699 -
2005-07-19 11:09:24 +00:00
Jonas Maebe
8bc4e0a32f
* inline and compilerproc are now procoptions instead of proccall types
...
(so both can be combined with each other, as well as with other calling
conventions)
* defined COMPPROCINLINEFIXED so SYSTEMINLINE is again activated
git-svn-id: trunk@658 -
2005-07-18 15:27:14 +00:00
florian
7cd67ea3f0
* node optimizer branch merged
...
* gotonode and gotolabel refactored
* -Nu added to enable for loop unrolling
git-svn-id: trunk@446 -
2005-06-19 17:42:10 +00:00
peter
34ed3ae7a5
* don't use normal assingments for inlining of formal consts
...
git-svn-id: trunk@393 -
2005-06-13 06:57:54 +00:00
Jonas Maebe
893f45c9e2
* fixed web bug #4039 (include methodpointer init/fini for inlined methods)
...
git-svn-id: trunk@390 -
2005-06-12 16:40:10 +00:00
florian
21038de78d
+ started with refactoring det_resulttype
...
+ dosimplify
* inlinenig makes use of dosimplify
git-svn-id: trunk@140 -
2005-05-29 15:15:38 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
michael
55e76063df
* Fix methodpointer copy from callnode to loadnode
2005-04-06 11:49:37 +00:00
peter
521b7cfa3b
* load all complex loads of parameters that are needed multiple times
...
to a temp to prevent calling functions twice
2005-04-05 21:07:43 +00:00
peter
e71066495c
fix type of temps generated for parameters during inlining
2005-03-28 15:05:17 +00:00
peter
3f9d6ab32f
* add hint when passing an uninitialized variable to a var parameter
2005-03-25 22:20:18 +00:00
peter
20ad7813c2
* fix empty varargs codegeneration for x86_64
2005-03-14 20:18:46 +00:00
peter
047c28d993
* member call to constructor returns void to prevent
...
generating unexpected code. Otherwise the return value is always
equal to self, which can also be directly accessed
2005-02-17 17:50:26 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
5007b3e395
* inherited; works now in delphi mode for private methods; looks like a delphi bug
2005-02-01 22:50:50 +00:00
peter
8d251e8506
* unit mapping rewrite
...
* new derefmap added
2005-01-19 22:19:41 +00:00
peter
720815e13b
* fix aftercosntruction calls, vmt=1 is used to indicate that
...
afterconstruction needs to be called
* only accept resourcestring when objpas is loaded
2005-01-04 16:36:31 +00:00
peter
a15f1c3283
* Don't release methodpointer. It is maybe still needed when we need to
...
convert the calln to loadn
2005-01-02 16:58:48 +00:00
peter
c1bf99c30a
* fix crash with callnode.ppuload when symtableproc=nil
2004-12-27 16:36:10 +00:00
peter
ced6bf20cd
* fix lineinfo for with blocks
2004-12-26 16:22:01 +00:00
peter
29db12ecfa
* disable inlining across units when the inline procedure references
...
a variable or procedure in the static symtable
2004-12-15 21:08:15 +00:00
peter
d387fda801
* give error when paraloc is not filled in order_parameter
2004-12-15 19:30:16 +00:00
peter
78c2af7b3c
* set vo_explicit_paraloc flag
2004-12-07 16:11:52 +00:00
peter
2b6456fe16
* procvar handling for tp procvar mode fixed
...
* proc to procvar moved from addrnode to typeconvnode
* inlininginfo is now allocated only for inline routines that
can be inlined, introduced a new flag po_has_inlining_info
2004-12-05 12:28:10 +00:00
peter
57dc23a294
* fix crashes with nodeinlining
2004-12-03 16:07:04 +00:00
peter
959bdccc49
* disable pass2inline
2004-12-02 19:26:14 +00:00
Jonas Maebe
38db3679d8
* only try to replace locals from the inlined procedure with temps,
...
cycle now works with -dNODEINLINE
2004-11-28 14:34:59 +00:00
Jonas Maebe
f244dea6ec
* fixed some bugs in the node inlining code due to the transition from
...
dynamic array to tlist
* fixed some register temp bugs (node inlining still does not work again
though)
2004-11-27 22:43:01 +00:00
peter
576e1825aa
* enabled pass1 inlining from Jonas
2004-11-22 22:19:00 +00:00
peter
8cf8c54609
* fixed varargs
...
* replaced dynarray with tlist
2004-11-22 22:01:19 +00:00
peter
89b1b583c9
* ttempcreatenode.create_reg merged into .create with parameter
...
whether a register is allowed
* funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +00:00
peter
e740a66636
* tparaitem removed, use tparavarsym instead
...
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
7c0b6e129e
* fixed wrong typecasts
2004-11-09 17:26:47 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
peter
2e161c5e9e
* nf_internal flag for internal inserted typeconvs. This will
...
supress the generation of warning/hints
2004-11-02 12:55:16 +00:00
peter
0d506c579e
* removed wrong check for symtableprocentry
2004-11-01 18:16:48 +00:00
peter
6a0aa09b20
* give IE instead of crash when no procsym is passed for calln
2004-11-01 16:58:57 +00:00