* eliminate warnings in compiler (i386 & i368->x86_64) and minor refactorings
- comment out unused vars and types
- comment out unneeded comparisons (Longword <=> 0)
- suppress some "comparison always true|false" warnings
- tweak visiblity sections
git-svn-id: trunk@19385 -
(this tempinitcode contains a reference to the tempcreatenode itself
-> hookoncopy must be set before copying the tempinitnode)
git-svn-id: trunk@18016 -
from the unit initialisation sections to the variable declaration sections
to prevent the base units from overriding derived classes (based on patch
by Hans-Peter Dietrich, mantis #17516)
git-svn-id: trunk@16118 -
that was set during the typecheck pass because typeconversion nodes
may have been optimised away previously and sometimes the resultdef is
important (e.g. for the value of callparanodes) (mantis #17458)
git-svn-id: trunk@16101 -
returns true for variants and those aren't refcounted
* also allow tempnodes for pointers to managed types to be put in
registers (not sure why it was disabled, and there are no
testsuite regressions by enabling it)
git-svn-id: trunk@15319 -
to the parser, so that it only looks at what the programmer wrote rather
than at all statements that the compiler may generate internally
(mantis #11619)
+ several tests for {$x-} mode
* modified tenumerators1 so it compiles without extended syntax enabled
(to check for..in with {$x-})
git-svn-id: trunk@15075 -
* replace derefnode with resolveppuidx method that only needs to be
implemented for nodes referencing other nodes
* fix IE when a label is not defined in inline function
git-svn-id: trunk@11697 -
* small cleanups of unused variables in firstpass
* node_resources_fpu() created to get an approximation of the
required fpu registers
* for the moment use node_complexity in the CG until the
node_resource_int() is created
git-svn-id: trunk@8655 -
* rename methodpointerinit/done to callinitblock/callcleanupblock
* moved checks in callnode to separate functions
* funcretnode is now always a simple node instead of a block of
statements
* funcret and methodpointer are generated/optimized only in pass_1 so
a conversion from calln to loadn is much easier
* function result assignments are much more often optimized to use the
assignment destination location instead of using a temp
git-svn-id: trunk@8558 -
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 -
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 -
* 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 -
* 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 -
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 -
* 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.
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
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)
* 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
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
* fixed inlining of write()
* switched statementnode left and right parts so the statements are
processed in the correct order when getcopy is used. This is
required for tempnodes