Commit Graph

16458 Commits

Author SHA1 Message Date
sergei
eeb15fc445 * Added virtual method tprocinfo.postprocess_code and moved target-specific processing from base class into target-specific descendant classes (ARM and AVR, other targets still to do).
git-svn-id: trunk@27449 -
2014-04-02 13:14:06 +00:00
Jonas Maebe
edff5a9aa1 * fixed m68k typo in r27438
git-svn-id: trunk@27443 -
2014-04-01 21:48:28 +00:00
Jonas Maebe
f017e16722 * increased ppu version after all symdef changes
git-svn-id: trunk@27442 -
2014-04-01 21:41:40 +00:00
Jonas Maebe
d452686c39 * moved pbestrealtype from symdef to symcpu
git-svn-id: trunk@27441 -
2014-04-01 21:41:37 +00:00
Jonas Maebe
a251b270b6 - removed no longer used jvmdef unit from uses clause
git-svn-id: trunk@27440 -
2014-04-01 21:41:33 +00:00
Jonas Maebe
93d50bc287 * moved jvm-specific classdef-related fields from tenumdef to a platform-
specific descendant

git-svn-id: trunk@27439 -
2014-04-01 21:41:30 +00:00
Jonas Maebe
9c7c64a3af * moved amiga/morphos-specific libsym-related field from tprocdef to
cpu-specific descendants (unfortunately causes some duplication, but the
    code is trivial and there is no easy way to avoid it)
  * also moved the use of the field in ncal to cpu-specific files (with same
    caveat)

git-svn-id: trunk@27438 -
2014-04-01 21:41:27 +00:00
Jonas Maebe
5053a39501 * moved ARM-specific tprocdef.total_stackframe_size field to cpu-specific
descendant

git-svn-id: trunk@27437 -
2014-04-01 21:41:24 +00:00
Jonas Maebe
f101118cd6 * moved MIPS-specific tprocdef.total_local_size field to cpu-specific
descendant

git-svn-id: trunk@27436 -
2014-04-01 21:41:21 +00:00
Jonas Maebe
d020a32b9a - removed no longer used tprocdef.fpu_used field for i386/i8086 (the one
place where it was used, we now handle the consequence directly)

git-svn-id: trunk@27435 -
2014-04-01 21:41:18 +00:00
Jonas Maebe
806bf0b88e - removed storing/loading unused byte for tprocdef.fpu_used
git-svn-id: trunk@27434 -
2014-04-01 21:41:14 +00:00
florian
0a7b795744 * fix for the regressions caused by r27417
git-svn-id: trunk@27433 -
2014-04-01 19:34:21 +00:00
nickysn
5f57274b74 + proper i8086 Seg() implementation (i.e. support segments other than DS)
git-svn-id: trunk@27432 -
2014-04-01 19:11:39 +00:00
sergei
8c693a3300 * Win64 apparently expects records with single field of floating-point type to be passed the same way as that only field, i.e. in xmm register. Fixes tests/cg/tcalext6.pp.
git-svn-id: trunk@27431 -
2014-04-01 17:04:47 +00:00
sergei
db621780d5 * x86_64-win64: fixed handling of RELOC_RELATIVE_1..RELOC_RELATIVE_5 COFF relocations, they were off by 4 bytes, causing failure in tests/test/tcalext.pp.
git-svn-id: trunk@27430 -
2014-04-01 16:26:56 +00:00
florian
73cf0b62f2 * relaxed conditions for floats in int registers, this improved softfloat code significantly
git-svn-id: trunk@27417 -
2014-03-31 21:14:16 +00:00
sergei
68b97bee5a * ARM: Implemented floating-point negation and abs() for softfloat using integer instructions. Fixes webtbs/tw4534.pp, and also yields much faster code than existing implementation.
Background: these operations are defined as flipping or clearing the upper bit of number, respectively, and never result in precision loss or raise floating-point exceptions.

git-svn-id: trunk@27411 -
2014-03-31 15:03:15 +00:00
nickysn
d6cb55297c + symx86.pas added to ppc8086.lpi
git-svn-id: trunk@27405 -
2014-03-31 09:24:55 +00:00
Jonas Maebe
8364232049 + symx86 unit, forgot to commit (part of r27397)
git-svn-id: trunk@27399 -
2014-03-30 22:03:55 +00:00
nickysn
e86e108dc5 + added the newly added source files from r27379 to ppc8086.lpi
git-svn-id: trunk@27398 -
2014-03-30 21:25:33 +00:00
Jonas Maebe
338c064beb * moved x86-specific tpointerdef functionality to architecture-specific
descendants

git-svn-id: trunk@27397 -
2014-03-30 21:04:36 +00:00
Jonas Maebe
dae5d1ff62 + added class reference types of the architecture-specific t*def/t*sym
classes

git-svn-id: trunk@27396 -
2014-03-30 21:04:32 +00:00
Jonas Maebe
43992495cb * moved jvm tprocdef name mangling to jvm-specific descendant class
git-svn-id: trunk@27395 -
2014-03-30 21:04:29 +00:00
Jonas Maebe
f4c0daddb4 * moved jvm-specific exprasm field from tprocdef to jvm-specific descendant
git-svn-id: trunk@27394 -
2014-03-30 21:04:25 +00:00
nickysn
0a9f738167 + tcg8086.g_copyvaluepara_openarray: support source to be in a different segment
git-svn-id: trunk@27393 -
2014-03-30 19:55:11 +00:00
nickysn
4763723c75 + support compact, large and huge memory models in x86/cpubase.segment_regs_equal()
git-svn-id: trunk@27392 -
2014-03-30 19:36:21 +00:00
nickysn
1f8280e8f1 * load the destination segment in tcg8086.g_copyvaluepara_openarray from SS
instead of DS, because the destination is on the stack, but in some memory
  models DS may be different than SS

git-svn-id: trunk@27391 -
2014-03-30 19:10:21 +00:00
nickysn
096bba90da * fixed Tcgx86.g_concatcopy not using the correct push instruction size when
pushing the source segment

git-svn-id: trunk@27389 -
2014-03-30 18:09:15 +00:00
nickysn
f4a0c08736 * fixed nested access to parent local variables in i8086 far data memory models
git-svn-id: trunk@27388 -
2014-03-30 17:50:35 +00:00
florian
8dfcc2b399 * do not reuse tmp. registers in tbasecgarm.handle_load_store
git-svn-id: trunk@27387 -
2014-03-30 17:28:45 +00:00
Jonas Maebe
11c7d5223c * moved ifdef'd jvm code from tprocvardef to jvm-specific descendant
git-svn-id: trunk@27386 -
2014-03-30 17:15:57 +00:00
Jonas Maebe
a05b078fa0 * made ppuload_platform() virtual (should have been part of r27378)
git-svn-id: trunk@27385 -
2014-03-30 17:15:53 +00:00
Jonas Maebe
721fd887c3 * moved all jvm-specific code from symsym to jvm/symcpu
git-svn-id: trunk@27384 -
2014-03-30 16:55:09 +00:00
Jonas Maebe
4a7e6b8b8f * instantiate the cpu-specific version of all defs/syms when loading them
from ppu (was only done for absolutevarsym until now)

git-svn-id: trunk@27383 -
2014-03-30 16:55:06 +00:00
nickysn
9ae26316e8 * fixed the handling of const resourcestrings in the i8086 far data memory models
git-svn-id: trunk@27380 -
2014-03-30 16:30:51 +00:00
Jonas Maebe
4a79481c51 * isolated segment-related functionality of tabsolutevarsym into i386/i8086-
specific descendent classes and moved the code that deals with this in the
    code generator also to target-specific classes -> only ifdefs left in
    pdecvar

git-svn-id: trunk@27379 -
2014-03-30 15:42:53 +00:00
Jonas Maebe
2474369dde * made all ppuwrite methods in leaf classes "final", because you cannot
override them safely in subclasses to add more data (they finalise
    writing their ibentry)
  * removed "virtual" from all ppuload constructors for similar reason
    as above
  + added virtual (empty) ppuwrite_plaform() method that is called from
    tstoreddef/tstoredsym.ppuwrite(), which can be safely overridden in
    child classes to add extra data (called centrally from a new
    tstoreddef/sym.writeentry() method)
  + added virtual (empty) ppuload_platform() method that is called from
    tstoreddef/tstoredsym.ppuload(), which can be safely overridden in
    child classes to read the extra data (unfortunately cannot be called
    from one single location, and these calls had to be added for each
    generic subclass separately)

git-svn-id: trunk@27378 -
2014-03-30 15:42:49 +00:00
marco
70088d12a8 * eliminate classes unit from the compiler by copying an array of string based
extractstrings to cclasses.

git-svn-id: trunk@27372 -
2014-03-30 12:03:10 +00:00
nickysn
66d7beb7fe * i8086 far data memory model fix for except_buf_size
git-svn-id: trunk@27371 -
2014-03-30 12:00:20 +00:00
marco
56277b18db * move fpcsubst to utils/ because it uses classes
git-svn-id: trunk@27370 -
2014-03-30 11:45:51 +00:00
nickysn
5ae9443d66 * moved the EXCEPT_BUF_SIZE const to be local to ncgutils.get_exception_temps,
because that's the only place where it's used

git-svn-id: trunk@27369 -
2014-03-30 11:27:07 +00:00
sergei
1744988962 * Modified behavior of CExtended type in overload selection: it is made more compatible to Extended than to Double and Single. Also an Extended parameter selects a CExtended overload (if available) instead of Double.
+ Test.

git-svn-id: trunk@27366 -
2014-03-30 07:31:58 +00:00
Jonas Maebe
b57c95043f + support overriding tdef/tsym methods with target-specific functionality:
o made all (non-abstract) tdef and tsym constructors virtual
   o added c*def/c*sym classref types for every (non-abstract) t*def/t*sym
     class
   o added cpusym unit for every architecture that derives a tcpu*def/tcpu*sym
     class from the base classes, and initialises the c*def/c*sym classes with
     them. This is done so that the llvm target will be able to derive from
     the tcpu*def/sym classes without umpteen ifdefs, and it also means that
     the WPO can devirtualise everything because the c* variables are only
     initialised with one class type
   o replaced all t*def/t*sym constructor calls with c*def/c*sym constructor
     calls

git-svn-id: trunk@27361 -
2014-03-29 22:31:55 +00:00
Jonas Maebe
b5fd71c3b9 * removed {$ifndef i8086} in tx86vecnode, instead reset cvecnode to
tcgvecnode in the n8086mem initcode

git-svn-id: trunk@27360 -
2014-03-29 22:31:49 +00:00
Jonas Maebe
57859963d6 - removed {$ifdef compress} code (it hasn't been activated/maintained since
a very long time)

git-svn-id: trunk@27359 -
2014-03-29 22:31:46 +00:00
Jonas Maebe
6b16c05a98 * fixed compilation for i8086 with 2.6.x (it gave an unreachable code
warning)

git-svn-id: trunk@27358 -
2014-03-29 22:31:43 +00:00
Jonas Maebe
0edb7b2288 * fixed r27320 for darwin, as its mangled names get prefixed with '_'
and hence the generated mangled name did not start with a '$' as
    expected

git-svn-id: trunk@27357 -
2014-03-29 22:31:36 +00:00
nickysn
17a8c03e41 * declare the group dgroup even in i8086 far data memory models
git-svn-id: trunk@27348 -
2014-03-29 19:35:54 +00:00
florian
c38e52bb27 * create shorter code for -<single/double> when generating avx code
git-svn-id: trunk@27347 -
2014-03-29 19:35:41 +00:00
nickysn
0082db46ea * i8086 far data memory model fix in tcgloadnode.generate_nested_access.
The system unit now compiles in the compact and large memory models again.

git-svn-id: trunk@27341 -
2014-03-29 18:32:01 +00:00