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 -