+ {$modeswitch objectivec2}, which is required before you can use
Objective-C 2.0 features (such as the above). It automatically
also implies {$modeswitch objectivec1}
+ genloadfield() helper to load a field of a node representing
a record/object/class
git-svn-id: trunk@15460 -
(the ABIs that prescribe special treatment for aggregates with one
scalar element don't either, since a "union containing a single scalar"
is not the same as a scalar)
* fixed passing record with a single float field on PowerPC/AIX abi's
* several changes to cgobj and ncgutil to correctly deal with transfering
such records between integer and floating point registers
git-svn-id: trunk@15416 -
x86-64 platforms (except for win64, which uses another ABI and which
already complied to it) + test
* fixed returning records containing 1 single or double field on darwin/i386,
these have to be returned via ST0 instead of as a regular record
* added support for LOC_FPUREGISTER and LOC_MMREGISTER in several places
where they can now occur due to the previous two changes
* made a few internalerrors unique
git-svn-id: trunk@15368 -
used to generate include files for the fpc-all fpmake package. Now sndfile
and ptc are effecively disabled for fpmake, just like for Makefile.fpc
git-svn-id: trunk@15265 -
+ test cpp class renaming (compiled for linux/i386 and all darwin platforms)
* changed compilation instructions for obj/cpptcl1.cpp
git-svn-id: trunk@15239 -
significant digits before the decimal points matches the precision
parameter exactly (mantis #16188)
* round instead of cut off digits in FloatToStr with ffGeneral
* take into account the minus sign when determining whether a number needs
to be represented using ffExponent instead of ffGeneral because it has
too many digits
git-svn-id: trunk@15114 -
treated as a regvar from pass_1 to the code generator, because this
can always occur with a function result from a called function (in
case the ABI prescribes returning certain records in registers)
(mantis #16163)
git-svn-id: trunk@15101 -
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 -
- add own symbol table for enumeration to store enumeration elements
- reimplement enumeration member traverse using symbol table instead of firstenum/nextenum - that members are removed
- implement TEnum.Element access syntax - element is searched in the enumeration symtable in this case instead of global/local symtables
- implement {$SCOPEDENUM ON/OFF} local switch
+ tests
git-svn-id: trunk@15051 -
pthread_self(), because it's a procvar under Linux and hence otherwise
the value of the procvar instead of the function result will be
taken (mantis #15821)
git-svn-id: trunk@15049 -
match but the source range does not fit in the dest range
(related to mantis #16023)
* don't give a "potential range error" when converting between
s80real and sc80real, since even though the size may differ,
the represented range does not
git-svn-id: trunk@15044 -
tested on FreeBSD (general Unix) and Windows. Note that Haiku seems
to have a native threadmgr rather than the Unix one. Will notify
maintainer (Olivier)
git-svn-id: trunk@15026 -
- add an option to skip varspez during parameters comparison
- skip varspez comparison when searching a property reader candidate if $VARPROPSETTER is ON
git-svn-id: trunk@15020 -
passing any value to that parameter which has the same size as the
parameter (it basically acts as if there is an explicit type conversion
to the parameter type around the value at the caller side). If a procvar
has an univ parameter, all procvars whose corresponding parameter
has the same size as that univ parameter are similarly compatible.
This transparent compatibility can however cause crashes in case of
of the procvars when one of the types is passed on the stack and the
other isn't (because then the called routine will a) load the parameter
from a wrong location and b) pop the wrong amount off of the stack at
then end). Therefore FPC will warn in most cases where this can happen.
(mantis #15777)
git-svn-id: trunk@15010 -
because the associated simplifications can turn invalid statements
into valid statements (based on patch by Aleksa Todorovic, mantis
#15594)
git-svn-id: trunk@14998 -
properties/behaviour of the equivalent of Extended in C (i.e., to
"long double" on i386 and x86_64 platforms that support a 10 byte
long double, and to "double" elsewhere)
git-svn-id: trunk@14912 -
compares by avoiding unnecessary sign extensions (fixes bug reported in
http://lists.freepascal.org/lists/fpc-pascal/2010-January/023907.html )
* never throw away int2int type conversions on bitpacked loads, because
in these cases the proper bits still need to be selected
git-svn-id: trunk@14892 -
Objective-C methods or which are fields of Objective-C classes (since they
are basically opaque to the Objective-C runtime) + fixed tobjc11 so it
expects classes to be encoded as opaque types
* give a proper error message when using illegal field/parameter types in
Objective-C classes/methods instead of an internal error (only checked
during rtti generation rather than during parsing, because during parsing
some types may still be forwarddefs)
* split objcutil in objcdef and objcutil, with objcdef depending only on
the symtable so it can be used in symdef
git-svn-id: trunk@14838 -
so the TMultiReadExclusiveWriteSynchronizer routines can be safely
executed even with the default thread manager -> removed ismultithread
checks, so that it keeps working even if ismultithread is set to true
between acquiring and freeing a lock (mantis #15619)
git-svn-id: trunk@14830 -
--- Merging r13710 through r14654 into '.':
G utils/debugsvr/README.txt
G utils/fpmc/README.txt
G utils/tply/COPYING.txt
G utils/tply/README.txt
G utils/fpdoc/COPYING.txt
G utils/fpdoc/README.txt
G utils/fppkg/README.txt
G utils/README.txt
G utils/h2pas/README.txt
G ide/README.txt
G ide/TODO.txt
G rtl/macos/README.txt
G rtl/freebsd/x86_64/cprt0.as
G rtl/freebsd/x86_64/gprt0.as
G rtl/freebsd/buildrtl.pp
G rtl/freebsd/buildrtl.lpi
G rtl/COPYING.txt
G rtl/netware/README.txt
G rtl/inc/ustrings.inc
C rtl/inc/objpash.inc
G rtl/inc/ustringh.inc
G rtl/README.txt
G rtl/objpas/README.txt
G tests/test/README.txt
G tests/test/tunistr6.pp
G tests/test/tunistr1.pp
G tests/test/tunistr7.pp
G tests/test/tunistr2.pp
G tests/test/opt/README.txt
G tests/test/tunistr4.pp
C tests/test/tobject5.pp
G tests/test/tunistr5.pp
G tests/webtbs/uw13345y.pp
G tests/webtbs/tw11846a.pp
G tests/webtbs/tw12993.pp
G tests/webtbs/tw11846b.pp
--- Merging r13710 through r14654 into 'tests/webtbf/tw13815.pp':
U tests/webtbf/tw13815.pp
--- Merging r13710 through r14654 into 'tests/tbf/tb0216.pp':
U tests/tbf/tb0216.pp
--- Merging r13710 through r14654 into '.':
G compiler/ccharset.pas
G compiler/README.txt
G compiler/COPYING.txt
G compiler/optloop.pas
G compiler/utils/README.txt
G packages/sdl/README.txt
G packages/fcl-net/README.txt
--- Merging r13710 through r14654 into 'packages/fcl-xml/tests/README_DOM.txt':
U packages/fcl-xml/tests/README_DOM.txt
--- Merging r13710 through r14654 into '.':
G packages/fcl-xml/tests/README.txt
G packages/fcl-xml/src/README.txt
--- Merging r13710 through r14654 into 'packages/unzip/src/unzip51g.pp':
U packages/unzip/src/unzip51g.pp
--- Merging r13710 through r14654 into '.':
G packages/libc/README.txt
G packages/newt/README.txt
G packages/fcl-process/src/dummy
G packages/fcl-db/src/memds/README.txt
G packages/fcl-db/src/README.txt
U packages/fcl-web/Makefile.fpc
A packages/fcl-web/src/webpage.pp
U packages/fcl-web/src/fphtml.pp
G packages/fcl-web/src/README.txt
C packages/fcl-web/Makefile
G packages/libgd/src/gd.pas
G packages/libgd/README.txt
G packages/ptc/docs/TODO.txt
G packages/ptc/docs/README.txt
G packages/postgres/README.txt
G packages/fcl-base/examples/intl/README.txt
G packages/fcl-base/examples/README.txt
G packages/xforms/README.txt
G packages/amunits/README.txt
G packages/ibase/README.txt
G packages/sndfile/README.txt
G packages/libxml/src/xml2.pas
G packages/svgalib/README.txt
--- Merging r13710 through r14654 into 'packages/winunits-base/src/dwmapi.pp':
U packages/winunits-base/src/dwmapi.pp
--- Merging r13710 through r14654 into '.':
G packages/cdrom/README.txt
G packages/mysql/README.txt
G packages/oracle/README.txt
G packages/gtk1/README.txt
G packages/uuid/README.txt
G packages/odbc/README.txt
G packages/gdbm/README.txt
Summary of conflicts:
Text conflicts: 2
Tree conflicts: 1
git-svn-id: trunk@14808 -
- fix is_visible_for_object to work correctly if symbol is in the objectsymtable but no current_objectdef present
- fix ClassName for nested classes
+ test
git-svn-id: trunk@14617 -
- fix type visibility (was always public)
- fix parsing of class sections after the type declaration
- allow nested classes declarations
+ tests
git-svn-id: trunk@14607 -
(mantis #14940 and #14941)
* only turn var/our shortstring parameters with a length of 255 into
openstring parameters with {$p+} (new tbf/tb0217.pp)
git-svn-id: trunk@14602 -
- implement class properties: properties which can access only static fields and static class methods
- tests
- fix a possibility to call an instance method from the class method
git-svn-id: trunk@14585 -
implementation for mac68k alignment (mantis #15061)
* changed {$align power} from an alias for {$packrecords 4} to an alias for
{$packrecords c}, as Power alignment is the default C alignment for
PowerPC under Mac OS X (it's close to {$packrecords 4}, but not identical)
git-svn-id: trunk@14577 -
units have changed, because these can influence the code of the
current unit in case method signatures changed (mantis #13840)
+ manual test
* fixed some recompilation crashes related to WPO info
* clarified the unit_u_add_depend_to message
git-svn-id: trunk@14503 -
a) it's Delphi-incompatible
b) when a tdatetime property is obtained via GetPropValue(), then
it will be a varfloat rather than a vardate, and there full
precision certainly is required (mantis #15296)
- since DoVarCmpFloat() is now identical to DoVarCmpDate(), removed
DoVarCmpFloat
git-svn-id: trunk@14472 -
* Changed the PHP variable which was causing the parser to not produce iphone headers
* Added /utils/iphone directory which is the last safe version of the parser. This is because future versions of the parser will likely break the iphone parsing ability before it can be fully restored.
git-svn-id: trunk@14454 -
* constant widestrings must be allocated and copied at program start up through an api call else they couldn't be passed between progam/dlls
git-svn-id: trunk@14432 -
has been upcasted to int64, but convert it back to cardinal (mantis
#15015)
* put the "remove unnecessary 64 bit type conversions" code between
{$ifndef cpu64bitalu} instead of {$ifndef cpu64bitaddr}
git-svn-id: trunk@14396 -
one on iPhoneOS, the OS refuses to execute the new binary; you have to
remove the old one first -- but it's easier to make sure that there are
no two tests with the same name)
git-svn-id: trunk@14331 -
+ RTL support:
o VFP exceptions are disabled by default on Darwin,
because they cause kernel panics on iPhoneOS 2.2.1 at least
o all denormals are truncated to 0 on Darwin, because disabling
that also causes kernel panics on iPhoneOS 2.2.1 (probably
because otherwise denormals can also cause exceptions)
* set softfloat rounding mode correctly for non-wince/darwin/vfp
targets
+ compiler support: only half the number of single precision
registers is available due to limitations of the register
allocator
+ added a number of comments about why the stackframe on ARM is
set up the way it is by the compiler
+ added regtype and subregtype info to regsets, because they're
also used for VFP registers (+ support in assembler reader)
+ various generic support routines for dealing with floating point
values located in integer registers that have to be transferred to
mm registers (needed for VFP)
* renamed use_sse() to use_vectorfpu() and also use it for
ARM/vfp support
o only superficially tested for Linux (compiler compiled with -Cpvfpv6
-Cfvfpv2 works on a Cortex-A8, no testsuite run performed -- at least
the fpu exception handler still needs to be implemented), Darwin has
been tested more thoroughly
+ added ARMv6 cpu type and made it default for Darwin/ARM
+ ARMv6+ implementations of atomic operations using ldrex/strex
* don't use r9 on Darwin/ARM, as it's reserved under certain
circumstances (don't know yet which ones)
* changed C-test object files for ARM/Darwin to ARMv6 versions
* check in assembler reader that regsets are not empty, because
instructions with a regset operand have undefined behaviour in that
case
* fixed resultdef of tarmtypeconvnode.first_int_to_real in case of
int64->single type conversion
* fixed constant pool locations in case 64 bit constants are generated,
and/or when vfp instructions with limited reach are present
WARNING: when using VFP on an ARMv6 or later cpu, you *must* compile all
code with -Cparmv6 (or higher), or you will get crashes. The reason is
that storing/restoring multiple VFP registers must happen using
different instructions on pre/post-ARMv6.
git-svn-id: trunk@14317 -