Commit Graph

11455 Commits

Author SHA1 Message Date
Jonas Maebe
0e96a159c8 * enabled pushing (x87) fpu registers in case too few might be available
also for x86_64, since some of those platforms also support the x87
    (noticed by Florian)

git-svn-id: trunk@14338 -
2009-12-05 22:53:27 +00:00
Jonas Maebe
8f3b1e42c0 + -godwarfmethodclassprefix option to prefix method names in the DWARF debug
info with the classname, like is done for Stabs. Not done by default
    because otherwise once calling methods from the debugger is implemented,
    this would require typing classinstance.classname__methodname

git-svn-id: trunk@14337 -
2009-12-05 22:21:52 +00:00
Jonas Maebe
3a8f889179 * fixed printing formal constants with DWARF:
a) use DW_TAG_variable instead of DW_TAG_constant in combination with a
      DW_AT_constant_value, since that way gdb does support formal constants
   b) store constant strings as either a shortstring or a longstring rather
      than using DW_FORM_string, since gdb's Pascal printer doesn't support
      gdb's generic STRING type yet for output

git-svn-id: trunk@14336 -
2009-12-05 21:54:27 +00:00
Jonas Maebe
fa044d05e0 * fixed shortstring size information
git-svn-id: trunk@14335 -
2009-12-05 19:26:25 +00:00
Jonas Maebe
fbebd87593 * use BLX instead of "mov r14, r15; mov r15, reg" for a_call_reg on ARMv6
and above, so this also works when calling thumb code (should actually
    also be done for ARMv5T, but we don't have a monicker for that yet)
  * use BX instead of "mov r15, r14" for simple returns from subroutines
    on ARMv6+ to support returning to thumb code from ARM code (idem)

git-svn-id: trunk@14332 -
2009-12-04 22:38:50 +00:00
Jonas Maebe
d19eaab7c6 * don't specify ARM architecture subtype to linker, because then it will
refuse linking in compiled resources (because those have a generic
    cpu subtype)

git-svn-id: trunk@14330 -
2009-12-04 20:29:05 +00:00
Jonas Maebe
877c024d4e * added tf_requires_proper_alignment for Darwin/ARM, fixes webtbs/tw7391.pp
with VFP

git-svn-id: trunk@14329 -
2009-12-04 19:56:00 +00:00
Jonas Maebe
4838ebe73b * renamed mark_InlineStart/mark_InlineEnd to mark_NoLineinfoStart/
mark_NoLineinfoEnd
  * add "no line info" markers for try/except and try/finally internal cleanup
    code, so the debugger doesn't jump back and forth between the end and start
    of exception blocks when you arrive at the end
  * honour "no line info" markers in dbgdwarf.pas

git-svn-id: trunk@14327 -
2009-12-04 19:37:22 +00:00
paul
ae52b19820 compiler: generate STABS debug info for Variant type
git-svn-id: trunk@14326 -
2009-12-04 17:06:17 +00:00
Jonas Maebe
e6ce17c1de - removed accidentally committed unfinished code in r14317
git-svn-id: trunk@14321 -
2009-12-04 10:27:28 +00:00
Jonas Maebe
280f27b45c * store/restore trttinode.rttidatatype to/from ppu file, and also copy it in
rttidatatype.getcopy (fixes mantis #15207)

git-svn-id: trunk@14318 -
2009-12-03 23:03:25 +00:00
Jonas Maebe
d1538ab023 o added ARM VPFv2/VFPv3 support:
+ 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 -
2009-12-03 22:46:30 +00:00
Jonas Maebe
3bd7f55f92 * write debug info for Variant with the name "Variant" instead of TVARDATA
so they can be distinguished by debugger frontends

git-svn-id: trunk@14298 -
2009-12-03 14:34:47 +00:00
Jonas Maebe
985c74adde * sizeof(voidpointertype.size) -> voidpointertype.size (although they
happen to be the same currently on all platforms, this is not
     guaranteed)

git-svn-id: trunk@14297 -
2009-12-03 13:29:02 +00:00
Jonas Maebe
93523c7767 * fixed for overflow in sort_movelist (by Paul Ishenin, mantis #15204), and
made a similar change in sort_simplify_worklist

git-svn-id: trunk@14296 -
2009-12-03 11:07:37 +00:00
pierre
3fce09ae26 * modify native likner args for library creation
git-svn-id: trunk@14294 -
2009-12-01 13:52:46 +00:00
Jonas Maebe
f191ab39cd * don't use a voidpointer typecast to access hardcoded objc fields, because
that sets the alignment to 1 and hence causes unnecessary unaligned
    loads/stores on ARM

git-svn-id: trunk@14291 -
2009-11-30 20:43:48 +00:00
Jonas Maebe
a6716fd2a2 * fixed calling inherited class methods from category methods when using
the iPhoneOS/Mac OS X 10.6 objc runtime interface (tests/test/tobjc25.pp)

git-svn-id: trunk@14289 -
2009-11-29 21:41:47 +00:00
pierre
a823e6834d * remove path for sparc
git-svn-id: trunk@14288 -
2009-11-29 20:15:00 +00:00
Jonas Maebe
b30b7ee6b1 * fixed alignment initialisation of temprary dst reference in
g_concatcopy_unaligned()

git-svn-id: trunk@14287 -
2009-11-29 15:14:56 +00:00
florian
be8470125f * solaris x86-64 libraries require pic
git-svn-id: trunk@14286 -
2009-11-28 18:27:58 +00:00
pierre
b0a77480cf rlinkpath and initfini fixes
git-svn-id: trunk@14285 -
2009-11-28 07:08:53 +00:00
pierre
7a21770ead * Add solaris to the -Xr option list
git-svn-id: trunk@14284 -
2009-11-28 07:08:05 +00:00
pierre
100e7c4d76 fix shared lib native linknig
git-svn-id: trunk@14283 -
2009-11-27 23:16:06 +00:00
pierre
6bead44bdf * fix solaris ld version mapfile (option -M)
git-svn-id: trunk@14282 -
2009-11-27 22:38:19 +00:00
pierre
2354c0d43a * avoid trailing spaces in solaris ld call
git-svn-id: trunk@14281 -
2009-11-27 21:23:25 +00:00
florian
9b4be66260 + first patches to support mips/mipsel in the compiler makefile
git-svn-id: trunk@14279 -
2009-11-27 15:22:15 +00:00
florian
28ac4a8dda * several mips/mipsel related stuff fixed
* regenerated linux makefile to support mipsel

git-svn-id: trunk@14278 -
2009-11-27 15:10:56 +00:00
pierre
b52df81a2c + commit Jonas' changes for init/fini for libraires
git-svn-id: trunk@14275 -
2009-11-26 16:53:11 +00:00
pierre
1fffaf627e * fix -Xn option
git-svn-id: trunk@14274 -
2009-11-26 13:44:34 +00:00
pierre
679309704a * fix compilation error
git-svn-id: trunk@14273 -
2009-11-25 16:58:25 +00:00
pierre
f5938d771f * Implement use of solaris linker for libraries
git-svn-id: trunk@14272 -
2009-11-25 16:07:06 +00:00
pierre
ca11bcd6cb + Use of native Solaris linker
git-svn-id: trunk@14270 -
2009-11-24 22:49:56 +00:00
pierre
728899606b + New option -Xn to use native linker, used for solaris targets
git-svn-id: trunk@14269 -
2009-11-24 22:49:06 +00:00
Jonas Maebe
5fa1e1cee2 * escaped special characters in latex descriptions
git-svn-id: trunk@14263 -
2009-11-23 21:46:03 +00:00
Jonas Maebe
d644fc87a1 * handle loc_jump/loc_flags in for-loop upper bound (mantis #15169)
git-svn-id: trunk@14261 -
2009-11-23 21:11:16 +00:00
Jonas Maebe
2c3c6d27d3 * fixed range checking for inc/dec when mixing unsigned and signed types
(mantis #14841)
   -> this also makes it impossible now to use constructs such as
    inc(qword_var,-1) with range checking enabled, because that would require
    a conversion to 128 bit for proper evaluation

git-svn-id: trunk@14260 -
2009-11-23 20:01:07 +00:00
paul
c6c15f6533 compiler: revert r14244
git-svn-id: trunk@14257 -
2009-11-23 01:43:42 +00:00
marco
b3ec68e2e1 * when "all" target is not used, unit dir was not created.
Added a msg2inc$(exeext) target that forces unitdir creation
	mantis 15116

git-svn-id: trunk@14253 -
2009-11-22 11:36:36 +00:00
florian
4123e0425c * don't generate instruction alignment fill bytes in non exectuable sections
git-svn-id: trunk@14251 -
2009-11-21 22:34:46 +00:00
florian
44c6ff898b * mipsel compiler builds
git-svn-id: trunk@14249 -
2009-11-21 22:17:34 +00:00
Jonas Maebe
80499a1732 * don't align entries in string sections, gcc doesn't either
git-svn-id: trunk@14246 -
2009-11-21 21:24:27 +00:00
paul
5684e3acc7 compiler: speedup tdynamicarray.read, tdynamicarray.write
git-svn-id: trunk@14244 -
2009-11-21 18:27:37 +00:00
paul
f0c57aa76e compiler: fix is_visible_for_object for nested specialization
git-svn-id: trunk@14243 -
2009-11-21 17:57:32 +00:00
pierre
b19f79bc58 * Set solaris default for x86_64 compiler if on solaris system
git-svn-id: trunk@14241 -
2009-11-21 16:30:25 +00:00
pierre
30161fdc04 * Use as_ggas for x86_64 solaris
git-svn-id: trunk@14240 -
2009-11-21 16:26:25 +00:00
pierre
ff25f1797c + Add gas for x86_64 solaris
git-svn-id: trunk@14239 -
2009-11-21 16:21:10 +00:00
Jonas Maebe
af85e45b67 + support for id.anyobjcmethodinscope() calls for Objective-Pascal code,
using standard FPC overload selection logic
  * fixed detection of references to static symbol tables for class
    helpers

git-svn-id: trunk@14234 -
2009-11-21 00:14:21 +00:00
Jonas Maebe
9d5b597105 * don't push/pop the unit/program's static symtable on/off the symtable stack
before parsing the main begin/end, because that symtable is already on the
    symtable stack at that point   

git-svn-id: trunk@14233 -
2009-11-21 00:11:39 +00:00
florian
f54365db94 * adapted more fpc-mips stuff to trunk
git-svn-id: trunk@14230 -
2009-11-20 21:13:53 +00:00