Commit Graph

11935 Commits

Author SHA1 Message Date
Jonas Maebe
9ab050316e * all accesses that cannot be handled natively by the code generator have
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 -
2010-10-26 17:17:28 +00:00
tom_at_work
f520989064 Fixed ordinal to string conversion for enumerations
* clean up actual ordinal to string conversion in system unit: try to use records instead of hardcoded offsets
* before emitting the enum ordinal to string rtti information for enums, they need to be sorted according to their values first. Otherwise rtti information for sparse enums is broken.

git-svn-id: trunk@16218 -
2010-10-24 21:35:16 +00:00
florian
dce3405c66 * reset lookahead char as well when resetting the scanner, resolves #17688
git-svn-id: trunk@16216 -
2010-10-24 21:26:30 +00:00
Jonas Maebe
14b95b3b9b * always force range checking for the upper and lower bounds of for-loops if
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 -
2010-10-24 14:55:48 +00:00
tom_at_work
a380da6204 Fixed conversion from string to enum value for 64 bit platforms requiring proper alignment (e.g. ppc64/linux)
* start of data entries (Tsorted_array record in fpc_shortstr_enum_intern) in string-to-ordinal helper table must be aligned to the maximum alignment required by the members, otherwise the actual and the expected layout do not match
* do not use magic constants (+1) in the code for calculating the address of the first Tsorted_array in the string-to-ordinal helper table
* fix wrong calculation of the start offset to the Tsorted_array in the rtti writer (although it came to the same result)
* refactored rtti writing code for enums: removed duplicate code

git-svn-id: trunk@16211 -
2010-10-23 20:19:32 +00:00
Jonas Maebe
5e84c557fa * don't internalerror when a property is hidden by a method in a child class
(mantis #17675)

git-svn-id: trunk@16191 -
2010-10-20 14:12:58 +00:00
Jonas Maebe
dd8fd7cd4a * fixed loading the vmt of TP-style objects when it's not at offset zero
(for virtual procvars of object, mantis #17521)

git-svn-id: trunk@16190 -
2010-10-20 12:00:15 +00:00
joost
07bf44517c * Merged XPCom branch into trunk, added support for constref and changed
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 -
2010-10-17 20:58:22 +00:00
florian
5dae691c96 * implementation of bit scan intrinsics by Richard Vida, resolves #17592
git-svn-id: trunk@16174 -
2010-10-16 15:03:30 +00:00
daniel
3307d98c40 - Revert micro-exe mode for now.
git-svn-id: trunk@16170 -
2010-10-15 16:49:48 +00:00
pierre
73b1fa667c * use dwarf64 numbers for x86_64 stabs registers
git-svn-id: trunk@16157 -
2010-10-13 22:56:02 +00:00
Károly Balogh
f634ef6640 + Workaround for IE2010053115 internal errors while writing PPU with explicitparaloc functions.
* MorphOS cycles again now at least, someone with clue might want to take a look if this is the proper way to fix this.

git-svn-id: trunk@16154 -
2010-10-13 19:58:44 +00:00
pierre
ec99b1ba40 * Add tf_dwarf_only_local_labels for win64 as suggested by Willibald Krenn
git-svn-id: trunk@16151 -
2010-10-13 08:52:35 +00:00
pierre
ba6a4760e9 * fix regression 16700 introduced in rev 16104
git-svn-id: trunk@16133 -
2010-10-11 21:23:11 +00:00
pierre
586dd1ee49 * fix go32v2 assembler parsing failure introduced in rev 16104
git-svn-id: trunk@16132 -
2010-10-11 20:53:19 +00:00
Jonas Maebe
a178ff5172 * fixed evaluation of length('') (the type of an empty string is a chararray
instead of string) (mantis #17604)

git-svn-id: trunk@16128 -
2010-10-11 15:00:20 +00:00
daniel
2139a229d3 + If no unit is used, no symbol inside the system unit is used,
and no language features requiring initialization are used,
    do not initialize units, but just configure the fpu and
    signal handlers.

git-svn-id: trunk@16124 -
2010-10-10 17:40:39 +00:00
Jonas Maebe
d1ed076618 * changed r16080 so that global debug labels are only created on linux
systems when smart linking and PIC are on, because on Darwin this
    breaks smart linking and it's not necessary there (probably should be
    disabled completely and the problem should be solved in another way)
    (mantis #17593)

git-svn-id: trunk@16122 -
2010-10-10 13:39:46 +00:00
Jonas Maebe
31dab28eca * when checking for stack tainting parameters, verify all locations of every
parameter instead of only the first location (mantis #17590)

git-svn-id: trunk@16121 -
2010-10-10 12:36:59 +00:00
Jonas Maebe
d5bc1c972f * don't generate init/fini sections in the al_procedures list, because the
compiler assumes it remains a sec_code (fixes linking problems with the
    iOS SDK 3.2 simulator tool chain when using debug info)

git-svn-id: trunk@16119 -
2010-10-09 21:27:07 +00:00
Jonas Maebe
769eb3f604 * moved the initialisation of the nodetree and tai class reference constants
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 -
2010-10-09 18:52:22 +00:00
Jonas Maebe
15846bf3d1 - disabled {$modeswitch result} for macpas mode by default (mantis #17382)
git-svn-id: trunk@16117 -
2010-10-09 18:43:07 +00:00
joost
799b0368ac * place the function result parameter last for safecall routines on
all platforms that support a safecall calling convention

git-svn-id: trunk@16114 -
2010-10-08 22:38:30 +00:00
Jonas Maebe
db8a67747d * give an error when trying to use (bit)sizeof on a type that is not yet
resolved by the compiler (mantis #14354)

git-svn-id: trunk@16112 -
2010-10-08 17:42:53 +00:00
pierre
41e388ace8 * Revert rev 16108
git-svn-id: trunk@16111 -
2010-10-08 13:39:11 +00:00
pierre
386478cd77 * Allow any register for GOT if current procedure has assembler code
git-svn-id: trunk@16110 -
2010-10-08 13:20:28 +00:00
pierre
207e0b58f5 * Support Intel [ebx].offset var PIC construct
git-svn-id: trunk@16109 -
2010-10-08 13:19:50 +00:00
pierre
1d2581b6d9 labels need to be non-local for PIC code using GOT
git-svn-id: trunk@16108 -
2010-10-08 13:16:04 +00:00
Jonas Maebe
92997a0249 * store/load tloopnode.loopflags to/from ppu files so that for/repeat/while
loops are correctly inlined (mantis #17493)

git-svn-id: trunk@16106 -
2010-10-08 13:01:25 +00:00
pierre
7f200ab27e * Use asmsearchsym in assembler readers
git-svn-id: trunk@16104 -
2010-10-08 07:58:18 +00:00
pierre
f23695cf92 * Also declare GOT in main program
git-svn-id: trunk@16103 -
2010-10-07 22:14:58 +00:00
Jonas Maebe
94d976bc87 * when simplifying ordinal expressions during inlining, keep the resultdef
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 -
2010-10-07 15:08:52 +00:00
pierre
d2939bce3d * i386 _GLOBAL_OFFSET_TABLE_ label special treatment moved to taicpu.pass2
git-svn-id: trunk@16100 -
2010-10-07 14:14:25 +00:00
mazen
b127fc154a * Fixed spell error revealed by lintian.
git-svn-id: trunk@16094 -
2010-10-06 20:33:57 +00:00
Jonas Maebe
13399280dc * don't write rtti for static fields so we don't try to initialise/finalise
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 -
2010-10-05 14:56:48 +00:00
pierre
292e85a59a * Partial fix for i386 linux PIC code generation
git-svn-id: trunk@16080 -
2010-10-05 08:07:15 +00:00
Jonas Maebe
ae1fb2bf74 + documented darwin, iphonesim, solaris and win64 options for -T
* removed "for <achitecture>" from all -T option help messages, because
    only targets supported on the current architecture are shown anyway

git-svn-id: trunk@16076 -
2010-10-03 11:24:23 +00:00
Jonas Maebe
d1206c6279 * also set the persistent typedef of simplified ordconstn type conversions
(related to mantis #17458)

git-svn-id: trunk@16071 -
2010-09-30 20:45:31 +00:00
pierre
23ff1e0681 * fix error in cfidwarf rev 16062 for non-windows systems
git-svn-id: trunk@16067 -
2010-09-30 07:41:19 +00:00
Jonas Maebe
8b0301409a + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and
later: the same as i386/darwin, except
      a) uses the non-fragile Objective-C ABI/runtime
      b) does not require stubs for direct calls/jumps (not required for
         i386/darwin under 10.6 and later either, but still generated
         there for backwards compatibility)
      c) only the same packages are enabled as for ARM/Darwin
      d) MacOSAll is compiled specifically for the iPhoneSimulator SDK
    This target also defines the symbol "darwin" apart from the target
    name "iphonesim" for source code compatibility reasons.

git-svn-id: trunk@16065 -
2010-09-29 21:56:47 +00:00
pierre
fa4b4906e6 * ogcoff.pas: Add support for RELOC_SECREL32.
* cfidwarf.pas: Fix CIE pointer inside dwarf-FDE entry which must be
    a section relative offset.

git-svn-id: trunk@16062 -
2010-09-29 12:58:21 +00:00
Jonas Maebe
bd0567563c * don't crash in {$x-} mode if a call cannot be resolved due to an error
in the expression (mantis #17455)

git-svn-id: trunk@16061 -
2010-09-29 12:11:22 +00:00
pierre
19e037dde7 * Try to improve directory handling of program
git-svn-id: trunk@16057 -
2010-09-28 10:21:51 +00:00
pierre
7c04d8d13b From patch submitted by Willibald Krenn in Bug Report 17500.
* assemble.pas (TInternalAssembler.WriteStab): Use RELOC_ABSOLUTE32 for
   32-bit stab entry.
 * ogcoff.pas: Add check for correct generated reloc section size.
 * systems/t_win.pas: Use 0x400000 image base for x86_64 programs using
   stabs debug information format.

git-svn-id: trunk@16056 -
2010-09-28 10:06:54 +00:00
florian
7199ac4ad7 + apply cse on load parent frame pointer nodes
git-svn-id: trunk@16055 -
2010-09-27 20:54:34 +00:00
Jonas Maebe
e6c09430cb * fixed inverted condition in r16052 that could cause superfluous parameter
copies (and missing parameter copies, although that was less likely)

git-svn-id: trunk@16053 -
2010-09-27 14:23:08 +00:00
Jonas Maebe
6094cb79dc * fixed internalerrors on non-use_fixed_stack platforms after r16050:
stack parameters can also be split over multiple locations

git-svn-id: trunk@16052 -
2010-09-27 09:52:47 +00:00
Jonas Maebe
92901a0619 - removed unused local variable after r16050
git-svn-id: trunk@16051 -
2010-09-27 09:51:40 +00:00
Jonas Maebe
f13f6627c4 * moved use_fixed_stack from cgutils to a method in paramgr so it can
be used outside the code generator
  * renamed tabstractprocdef.requiredargarea into callerargareasize,
    and also added calleeargareasize field; added init_paraloc_info(side)
    method to init the parameter locations and init those size fields and
    replaced all "if not procdef.has_paraloc_info then ..." blocks with
    procdef.init_paraloc_info(callersize)"
  * moved detection of stack tainting parameters from psub to
    symdef/tabstractprocdef
  + added tcallparanode.contains_stack_tainting_call(), which detects
    whether a parameter contains a call that makes use of stack paramters
  * record for each parameter whether or not any following parameter
    contains a call with stack parameters; if not, in case the current
    parameter itself is a stack parameter immediately place it in its
    final location also for use_fixed_stack platforms rather than
    first putting it in a temporary location (part of mantis #17442)
  * on use_fixed_stack platforms, always first evaluate parameters
    containing a stack tainting call, since those force any preceding
    stack parameters of the current call to be stored in a temp location
    and copied to the final location afterwards

git-svn-id: trunk@16050 -
2010-09-26 21:24:14 +00:00
Jonas Maebe
92a53a9cf1 * moved initialisation of overridesclasshelper "out" parameter to correct
place (was in a nested procedure instead of in the main one, fix for
    r16035)

git-svn-id: trunk@16039 -
2010-09-24 23:48:14 +00:00