value is different from the comparand (patch by "FVI", mantis #18082)
* sign extend the loaded value of interlockedcompareexchange() on PowerPC64,
because the function arguments are longints
git-svn-id: trunk@16475 -
* ncal.pas, translate_disp_call:
* pass UnicodeString as varUStrArg
* do not typecast ordinal consts to Integer, so typecasts in source (if any) are preserved.
+ test for correct passing of Dispatch method arguments, concludes work on Mantis #17904.
git-svn-id: trunk@16456 -
those for variants. All defined operators are guaranteed to be valid by
the code that checks them when they are defined (mantis #17846)
git-svn-id: trunk@16449 -
display purposes if there was a parameter with a default value > 255 chars
* replace #0, #10 and #13 in the fullprocname with '.' so they do not cause
line breaks or early string termination when writing them to the
assembler file (mantis #17928)
git-svn-id: trunk@16344 -
constant is > high(longint), because then it must be loaded into a register
first since such values cannot be encoded directly in non-mov x86-64
instructions (mantis #17836)
git-svn-id: trunk@16305 -
to be handled as a bitpacked access, not just those whose size mod 8 <> 0
(bug reported by Willibald Krenn on fpc-devel, and mantis #17715)
git-svn-id: trunk@16227 -
* TXMLNodeType, TNodeData and TAttrDataType moved to xmlutils.pp, so they can be shared between dom, xmlread and dtdmodel.
* TContentParticle class moved from xmlread.pp to dtdmodel.pp.
* dom.pp and xmlread.pp switched to DOM-independent representation of DTD element declarations and attribute defaults.
git-svn-id: trunk@16221 -
they are constants (instead of only on 32 bit systems), and always use the
actual upper/lower bound of the loop variable instead of hardcoding the
bounds of longint (mantis #17646)
git-svn-id: trunk@16213 -
the IInterface implementation to be XPCom-compatible
--- Merging r15997 through r16179 into '.':
U rtl/inc/variants.pp
U rtl/inc/objpash.inc
U rtl/inc/objpas.inc
U rtl/objpas/classes/persist.inc
U rtl/objpas/classes/compon.inc
U rtl/objpas/classes/classesh.inc
A tests/test/tconstref1.pp
A tests/test/tconstref2.pp
A tests/test/tconstref3.pp
U tests/test/tinterface4.pp
A tests/test/tconstref4.pp
U tests/webtbs/tw10897.pp
U tests/webtbs/tw4086.pp
U tests/webtbs/tw15363.pp
U tests/webtbs/tw2177.pp
U tests/webtbs/tw16592.pp
U tests/tbs/tb0546.pp
U compiler/sparc/cpupara.pas
U compiler/i386/cpupara.pas
U compiler/pdecsub.pas
U compiler/symdef.pas
U compiler/powerpc/cpupara.pas
U compiler/avr/cpupara.pas
U compiler/browcol.pas
U compiler/defcmp.pas
U compiler/powerpc64/cpupara.pas
U compiler/ncgrtti.pas
U compiler/x86_64/cpupara.pas
U compiler/opttail.pas
U compiler/htypechk.pas
U compiler/tokens.pas
U compiler/objcutil.pas
U compiler/ncal.pas
U compiler/symtable.pas
U compiler/symsym.pas
U compiler/m68k/cpupara.pas
U compiler/regvars.pas
U compiler/arm/cpupara.pas
U compiler/symconst.pas
U compiler/mips/cpupara.pas
U compiler/paramgr.pas
U compiler/psub.pas
U compiler/pdecvar.pas
U compiler/dbgstabs.pas
U compiler/options.pas
U packages/fcl-fpcunit/src/testutils.pp
git-svn-id: trunk@16180 -
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 -
them (mantis #17546)
* fixed the various field rtti methods so that they only operate on fields
and skip the rest (at the end they always typecast the sym to a
tfieldvarsym, so this could result in wrong memory accesses)
git-svn-id: trunk@16086 -
same way as regular methods as far as overriding is concerned ("override"
is now allowed, and even required, to override them in a descendent class;
and similarly, "reintroduce" must be used if a category wants to replace
a method in a child class if that method was added by another category in
a parent class)
* print the name of owning objcclass/category of the original method in case
override/reintroduce is missing for objc methods, since this is no longer
always the parent class
git-svn-id: trunk@16035 -
* merged:
r328 | jonas | 2010-09-17 15:16:21 +0200 (Fri, 17 Sep 2010) | 3 lines
Changed paths:
M /trunk/MPPInterfaces/SecTrust.pas
- {$align power}
+ translation credit
...
r327 | jonas | 2010-09-17 15:09:54 +0200 (Fri, 17 Sep 2010) | 2 lines
Changed paths:
M /trunk/MPPInterfaces/cssmapple.pas
- removed superfluous MW/GPC macro definitions from the implemenation
...
r326 | jonas | 2010-09-17 00:14:28 +0200 (Fri, 17 Sep 2010) | 6 lines
Changed paths:
M /trunk/MPPInterfaces/MacTypes.pas
A /trunk/MPPInterfaces/SecTrust.pas
A /trunk/MPPInterfaces/certextensions.pas
A /trunk/MPPInterfaces/cssmapple.pas
A /trunk/MPPInterfaces/cssmconfig.pas
A /trunk/MPPInterfaces/cssmerr.pas
A /trunk/MPPInterfaces/cssmkrapi.pas
A /trunk/MPPInterfaces/cssmtype.pas
A /trunk/MPPInterfaces/x509defs.pas
M /trunk/Scripts/Convert.pl
+ a bunch of Security.Framework headers, required by new Cocoa header
translations
+ added a number of NULL-macros appearing in those headers to convert.pl
+ added UInt32_fix type to MacTypes because one of those headers contains
a field with the name "Uint32" whose type is also UInt32.
...
r325 | jonas | 2010-09-17 00:10:14 +0200 (Fri, 17 Sep 2010) | 2 lines
Changed paths:
M /trunk/MPPInterfaces/ColorSyncDeprecated.pas
* added (hopefully correct) setting for packrecords C for GPC
...
r324 | jonas | 2010-09-17 00:05:41 +0200 (Fri, 17 Sep 2010) | 2 lines
Changed paths:
M /trunk/MPPInterfaces/CFStringTokenizer.pas
* fixed compilation with GPC
...
r323 | jonas | 2010-09-09 20:31:47 +0200 (Thu, 09 Sep 2010) | 2 lines
Changed paths:
A /trunk/MPPInterfaces/CFStringTokenizer.pas
+ translation of CoreFoundation/CFStringTokenizer.h
git-svn-id: trunk@16002 -
in the range high(ptruint)-$fffe .. high(ptruint), because all large
allocations are rounded up to the next multiple of 64kb, which is 0 in
that case (mantis #17430)
git-svn-id: trunk@16001 -
don't have any parameters in most expressions, rather than using them
as the procvar itself) -> replaced procvar<>nil with assigned(procvar)
in test/tmacprocvar.pp to keep it compiling (otherwise it now called
the procvar); necessary in combination with the next fix to compile
webtbs/tw17379a.pp
* automatically disambiguate the use of the function name when used as a
parameter in macpas mode (if the formal parameter type is a procvar
type then interpret it as the current function definition, otherwise
as the current function result) (mantis #17379)
git-svn-id: trunk@15971 -
of the same register (or of a register and its aliases) -> make
sure that all relevant constraints are applied to it as well
(mantis #16980)
git-svn-id: trunk@15952 -
pointer, because that will force "value" to become unsigned, which
result in errors in case of negative 64bit constants in case they
are multiplied by the size of the pointed type in ncginl (the
tconstexprint type operators have to handle positive and
negative numbers differently) (mantis #17342)
git-svn-id: trunk@15951 -
* Patch with new linear based IPF writer
* patch for Interfaces Overview in all Linear writers
* patch with new Linear Writer specific parameter to control
if linked documentation should be duplicated or not.
new parameter is: --duplinkeddoc
Default is that linked docs are not duplicated.
* patch for fixing minor spelling mistakes in fpdoc
* patch to not create a section Errors if there isn't actually
any specific documentation for errors. makeskel generates error
nodes but most don't have any items. This caused an Errors title
in the docs, but with no content.
* patch to fix SeeAlso section in Linear writer. It never output
the custom text, but always the node link as text.
* new features for linear writer that could be overridden in
descendants.
- marked some protected methods as virtual so it can be overridden
in descendants for customization.
- new section for listing Types found in a unit. Default does nothing,
except in IPF writer.
- new section for listing Variables found in a unit. Default does
nothing, except in IPF writer.
- new section for listing Constants found in a unit. Default does
nothing, except in IPF writer.
git-svn-id: trunk@15849 -
solves the problem whereby an empty list could sometimes be inserted
after a jump table load (in case the jump table was larger than the
maximally allowed offset, and if there was a skipinstr between the
previous instruction and the jump table load) (mantis #17164)
git-svn-id: trunk@15831 -
shifted all the parameters on the stack. Now the 'self' parameter is
declared as var, not const, restoring its original value is not necessary
anymore
git-svn-id: trunk@15744 -
+ support for nested procedural variables:
o activate using {$modeswitch nestedprocvars} (compatible with all
regular syntax modes, enabled by default for MacPas mode)
o activating this mode switch changes the way the frame pointer is
passed to nested routines into the same way that Delphi uses (always
passed via the stack, and if necessary removed from the stack by
the caller) -- Todo: possibly also allow using this parameter
passing convention without enabling nested procvars, maybe even
by default in Delphi mode, see mantis #9432
o both global and nested routines can be passed to/assigned to a
nested procvar (and called via them). Note that converting global
*procvars* to nested procvars is intentionally not supported, so
that this functionality can also be implemented via compile-time
generated trampolines if necessary (e.g. for LLVM or CIL backends
as long as they don't support the aforementioned parameter passing
convention)
o a nested procvar can both be declared using a Mac/ISO Pascal style
"inline" type declaration as a parameter type, or as a stand-alone
type (in the latter case, add "is nested" at the end in analogy to
"of object" for method pointers -- note that using variables of
such a type is dangerous, because if you call them once the enclosing
stack frame no longer exists on the stack, the results are
undefined; this is however allowed for Metaware Pascal compatibility)
git-svn-id: trunk@15694 -
in libraries to be parsed as if they were the main module block,
which in practice mainly mean that local variables with default
values were never initialisation (mantis #16949)
git-svn-id: trunk@15596 -
except block that deals with exceptions raised inside the constructor
(including afterconstruction), so that afterconstruction is always
called after all temps have been finalised (necessary because in case
of tinterfacedobject it decreases the reference count of the instance
without every freeing the instance, so if that is done before a temp
that also holds a refernce is finalised, the temp may wrongly free
the instance (mantis #16592, #16592)
git-svn-id: trunk@15583 -
* disallow pushfd/popfd for x86_64 (mantis #14862)
* fixed assembling popfq with the internal assembler (it needs a rex.w
prefisx, while pushfq doesn't)
* changed the default opcode size of pushf/popf/pusha/popa in
{$asmmode intel} from "native size" to 16 bit (compatible with Intel
manuals and Kylix; in AT&T mode, the default size for those operations
remains the native one)
* changed pushf/popf in rtl/i386/* into pushfd/popfd because of the
previous change
git-svn-id: trunk@15546 -
+ {$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 -