it doesn't have to duplicate any type checking code, and so constant
expressions get the same resultdefs as non-constant expressions
* properly fixed resultdef determination of "set + setelementn" (follows
same rules now as "set + set")
* also convert "longint or/xor cardinal" to int64 (needed for correct
results with negative numbers and Delphi-compatible) + test
* extended 64-to-32 type conversion simplification to also handle
or/xor nodes (so if the result is typecasted back to 32 bit, the
evaluation can still be done entirely in 32 bit). These changes also
enable that optimization in some extra cases (not just anymore for
expressions containing only uint32)
git-svn-id: trunk@10418 -
the code using {$pascalmainname x} + storing it in the ppu file
(and give a warning if it's overridden multiple times + test)
git-svn-id: trunk@10406 -
entry/exit (mantis #10897)
* fixed tinterface2 which crashed after this change. It also crashed under
Kylix: you cannot assign the result of an interfaced class to a class
instance variable and then use it both as an interface (refcounted) and
as class (non-refcounted)
git-svn-id: trunk@10405 -
they are added (mantis #10807), because
a) the typecheckpass of the entire blocks has to be postponed until firstpass
because new statements may still be added in the firstpass (otherwise
the newly added statements in the firstpass are never typechecked due to
the blocknode already having a resultdef set)
b) simplify can be called between the typecheck and firstpass, and it needs
the typeinfo
git-svn-id: trunk@10263 -
http://svn.freepascal.org/svn/fpc/branches/avr
........
r5891 | florian | 2007-01-11 17:30:12 +0100 (Do, 11 Jan 2007) | 2 lines
+ some initial work
........
r10170 | florian | 2008-02-03 11:02:04 +0100 (So, 03 Feb 2008) | 2 lines
* continued to work on avr port
........
r10180 | florian | 2008-02-03 15:29:30 +0100 (So, 03 Feb 2008) | 2 lines
+ a lot of skeleton code for avr added
........
git-svn-id: trunk@10186 -
as a parameter and the funcret is also passed as parameter. Because in that
case both are pointing to the same memory location
git-svn-id: trunk@10159 -
because the method was always called the same way (and it did not
affect any counting anymore)
* fixed and simplified read/write checking of methodpointer (mantis
#10736)
git-svn-id: trunk@10155 -