Commit Graph

116 Commits

Author SHA1 Message Date
Jonas Maebe
df84ca49b4 * fixed tests/cg/opt/tretopt, and also in more cases
perform the transformation of x:=f(hiddencomplexresult, ..)
    -> f(x, ...) (the compiler now performs some very
    conservative escape analysis for such types)

git-svn-id: trunk@8361 -
2007-09-02 21:27:37 +00:00
Jonas Maebe
e4487e628d * fixed overload choosing error on 64 bit
git-svn-id: trunk@8327 -
2007-08-29 06:30:38 +00:00
Jonas Maebe
fc70aa545c * changed boolean fields in ttempinfo to a set for easier
extensibility without increasing the size of the record

git-svn-id: trunk@8199 -
2007-07-29 19:37:06 +00:00
Jonas Maebe
49a2084ea0 * fixed calling inline functions (with exit statements) from inside
finally blocks
  * fixed the handling of function results of inlined functions with
    exit statements
  + test for the above two issues and for bug fixed in r8091
  * copy may_be_in_reg field inside ttempcreatenode.dogetcopy (allows
    some more temps which were needlessly forced into memory to be in
    registers)

git-svn-id: trunk@8108 -
2007-07-20 16:49:35 +00:00
Jonas Maebe
28bab3fb4f - removed some unused variables
* fixed some (harmless) ptrint warnings
  - removed some commented code in agppcmpw
  * added one missing field in a typed constant in cp1251

git-svn-id: trunk@8081 -
2007-07-17 13:57:15 +00:00
yury
cf19c0993a * fixed bug #8919.
+ test.

git-svn-id: trunk@7448 -
2007-05-24 08:15:28 +00:00
Jonas Maebe
168e652d42 + support for simplifying simple inline functions down to a single
constant node (rather than to just a blocknode with a statement
    assigning a constant to a temp)

git-svn-id: trunk@6832 -
2007-03-13 22:27:55 +00:00
pierre
d5e4828f6f * avoid memory leak for copy of withnode in tempnodes
git-svn-id: trunk@6067 -
2007-01-19 05:12:08 +00:00
Jonas Maebe
f2b07704b5 * proper initialised/used warnings for variables used
in complex with-statements + tests

git-svn-id: trunk@6024 -
2007-01-17 12:04:53 +00:00
florian
7781e842fc * varset support fixed
git-svn-id: trunk@5294 -
2006-11-08 22:48:44 +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
85d63d9fa9 * settings refactored
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +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
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
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
e4451558c4 * optimized register allocation for tempnodes
git-svn-id: trunk@2221 -
2006-01-08 12:53:43 +00:00
Jonas Maebe
255855b5d9 * more informative printnode* output for temp-related nodes
git-svn-id: trunk@702 -
2005-07-19 14:59:04 +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
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
florian
252fa84c62 + compiler support for reading/writing of vararrays 2005-03-27 20:19:21 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
be1808953c * fix laststatement() 2005-01-31 16:15:17 +00:00
peter
5ee4b9ad24 * use tlocation for tempnodes 2004-12-03 16:04:47 +00:00
Jonas Maebe
21c7a9db2f * fixed check for regvar-ability of tempnodes 2004-11-28 19:16:53 +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
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
560a790a57 * gen high tree makes copy in temp when there is a calln 2004-10-12 14:36:38 +00:00
peter
8fb3536f6e * simple regvar support, not yet finished 2004-09-26 17:45:29 +00:00
Jonas Maebe
ddf175f171 + temps can now also hold fpu values in registers (take care with use,
bacause of the x86 fpu stack)
  * fpu parameters to node-inlined procedures can now also be put in
    a register
2004-07-16 19:45:15 +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
72365ec95b * implicit_finally flag must be set in pass1
* add check whether the implicit frame is generated when expected
2004-05-23 15:06:20 +00:00
peter
8756d4f862 * maybe_in_reg moved to tempinfo
* fixed expectloc for maybe_in_reg
2004-03-10 20:41:17 +00:00
Jonas Maebe
5290787578 * don't put types that need init/fini in register temps 2004-02-06 20:22:58 +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
Jonas Maebe
0d004c1e35 * fixed and re-enabled temps in registers 2004-02-03 19:48:06 +00:00
Jonas Maebe
edb91b0d18 * disabled temps in registers for now, because the register allocator
can't handle it yet in some cases
2004-02-03 17:56:14 +00:00
Jonas Maebe
694eee6cae + support to store ttempcreate/ref/deletenodes in registers
* put temps for withnodes and some newnodes in registers
   Note: this currently only works because calling ungetregister()
     multiple times for the same register doesn't matter. We need again
     a way to specify that a register is currently a regvar and as such
     should not be freed when you call ungetregister() on it.
2004-02-03 16:46:51 +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
Jonas Maebe
8da316cf21 * override tblocknode.destroy so all statements are freed sequentially
instead of recusively.
2003-12-10 20:31:40 +00:00
peter
f663d2488f * cross unit inlining fixed 2003-11-10 22:02:52 +00:00
peter
30f1eb4705 * fix for referencecounted temps 2003-11-04 15:35:13 +00:00
peter
f2264589fc * fix crashes in asmnode.deref when p_asm=nil 2003-10-31 15:51:47 +00:00
peter
fae3eaf83d * move check for unused object constructor result to blocknode 2003-10-29 20:34:20 +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
925046ad5f * fixed check for $X- result usage 2003-10-21 18:15:16 +00:00