Commit Graph

706 Commits

Author SHA1 Message Date
florian
9279c6955e * support for SSSE3, SSE4,1, SSE4.2, AES instructions set by Emelyanov Roman, resolves #18527
+ test for aes support

git-svn-id: trunk@17256 -
2011-04-05 20:22:57 +00:00
florian
f328b6d635 + user section type
+ parsing of section directive for variables
  + section test
  + write section names in the assembler/binary writers correctly
  * allow section only after ; and for embedded targets

git-svn-id: branches/usersections@17154 -
2011-03-20 15:42:28 +00:00
florian
e7fa076b70 * handle variables without explicit size prefix better in inline assembler, resolves #18009
git-svn-id: trunk@16859 -
2011-01-30 21:57:30 +00:00
florian
af020e8ebc * fix assembling of ljmp mem, resolves #18556
git-svn-id: trunk@16802 -
2011-01-23 12:18:14 +00:00
Jonas Maebe
b49b3ecc61 * one more fix that should have been part of r16717: also generate
addr_pic_no_got references for linux in a_loadaddr_ref_reg()

git-svn-id: trunk@16728 -
2011-01-07 19:17:47 +00:00
Jonas Maebe
0da9d36116 * fixed internal assembler for x86-64 so that it correctly handles
relocations for addr_pic_no_got references (do not go via the GOT)
  * fixed code generator so that it generates addr_pic_no_got references
    also for platforms that use the internal assembler (this will break linking
    of some tests that check static data > 2GB on Linux/x86-64, but they were
    already broken before as well because we don't use the "huge" x86-64
    execution model)
  * fixed x86-64 Linux syscall code to not expect GOT-based relocations for
    the system unit's errno variable (it's an implementation-only variable)

git-svn-id: trunk@16717 -
2011-01-06 09:28:25 +00:00
sergei
34ffb184a8 * MASM and NASM assembler writers, added check for InlineLevel>0 so it suppresses entire source file processing, not just output of source lines. Without this, auto-generated instructions cause output of bogus line information. GAS writer already has similar check.
git-svn-id: trunk@16581 -
2010-12-17 18:03:56 +00:00
Jonas Maebe
709f1e8344 * also recognise non-GOT based RIP-relative address expressions as PIC
git-svn-id: trunk@16565 -
2010-12-15 13:39:27 +00:00
sergei
ae028b1e1d * Intel assembler writer, don't truncate written values to 32 bits, as this code is also used for x86_64. Fixes Mantis #18020.
git-svn-id: trunk@16528 -
2010-12-10 01:51:57 +00:00
Jonas Maebe
44178f41b6 * don't overwrite register variables when evaluating <=/>= expressions with
smallsets (left is overwritten by an "and", so it cannot be const; mantis
    #18013)

git-svn-id: trunk@16400 -
2010-11-22 12:58:08 +00:00
florian
d6d3791939 * fix compilation of cmpxchg16b
git-svn-id: trunk@16283 -
2010-11-01 08:13:27 +00:00
Jonas Maebe
3aea9b134a * make sure that all references used in the inline int->real conversion code
are properly PICified (mantis #17714)

git-svn-id: trunk@16255 -
2010-10-29 16:57:54 +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
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
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
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
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
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
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
florian
3041bbab27 * fixes overflowing internalerror number
git-svn-id: trunk@15998 -
2010-09-16 20:46:11 +00:00
pierre
973c23e12c * Fix for win64 GNU AS bug
git-svn-id: trunk@15939 -
2010-09-02 23:41:02 +00:00
pierre
c03fa8e79d + Add warning if @GOTPCREL will not be honored
git-svn-id: trunk@15911 -
2010-08-26 15:51:36 +00:00
Jonas Maebe
99a75c56fc * fixed copy-paste error in r15600
* fixed spilling error after r15600 the same register appears twice in an
    instruction (it was spilled once in that case)

git-svn-id: trunk@15601 -
2010-07-18 21:24:52 +00:00
Jonas Maebe
a75016e67b * make sure that registers are of the right type before calling get_alias
on them (could cause crashes or, in very rare instances, wrong spilling
    code)

git-svn-id: trunk@15600 -
2010-07-18 21:01:06 +00:00
florian
9affb070b8 * don't force OT_BITS32 on x86-64, resolves #16622
git-svn-id: trunk@15595 -
2010-07-17 20:57:06 +00:00
Jonas Maebe
9273856e84 * disallow pusha*/popa* for x86_64 (mantis #14862)
* 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 -
2010-07-10 16:22:46 +00:00
Jonas Maebe
a3a559cecc * part of r15538, forgot to commit
git-svn-id: trunk@15544 -
2010-07-10 15:05:30 +00:00
Jonas Maebe
c6d00a2b1f * correct the register size holding a smallset < 4 bytes when using "bt"
on it (mantis #16861)
  * fixed some indentation

git-svn-id: trunk@15531 -
2010-07-07 18:45:57 +00:00
Jonas Maebe
fff903a00b * fixed some unnecessary moving of values from cregister to register
after r7831

git-svn-id: trunk@15502 -
2010-06-30 19:53:15 +00:00
Jonas Maebe
356026f849 * use new_section() instead of tai_section.create() everywhere
- sort of reverted r14134, which is no longer required after the above
    change (new_section() inserts the alignment itself)
  * made the tai_section.create() constructor private so it cannot be
    called directly anymore

git-svn-id: trunk@15482 -
2010-06-26 10:50:14 +00:00
Jonas Maebe
6d6892bec6 * fixed "byte/word/... ptr []" and "byte/word/..([])" typecasted expressions
in case the memory expression contains a record subscription (mantis
    #16700)

git-svn-id: trunk@15408 -
2010-06-11 14:51:58 +00:00
Jonas Maebe
3c8b23cda4 * fixed cg.a_loadmm_reg_ref() and cg.a_loadfpu_reg_ref() in case they are
used to store a record function result in an MM/FPUREGISTER to memory
    (the register size will be OS_F32/OS_F64, while the memory size will
     be OS_32/OS_64 -> convert the latter to the former)
  * extended tcalext6 to also test this scenario

git-svn-id: trunk@15385 -
2010-06-04 22:31:35 +00:00
Jonas Maebe
9e785ea553 + several internalerrors in case things go wrong
+ support for OS_M64 in several places

git-svn-id: trunk@15366 -
2010-06-03 19:09:27 +00:00
Jonas Maebe
8542632ebe * fixed evaluating constant expressions consisting of more than one term and
that start with a minus in the intel assembler reader (mantis #15843)

git-svn-id: trunk@15041 -
2010-03-24 20:52:31 +00:00
pierre
7c08e5cb57 * Fix solaris problem after commit rev 14971
git-svn-id: trunk@14974 -
2010-03-05 13:46:36 +00:00
Jonas Maebe
a7dca09535 * only refer to local symbols without GOT redirection on darwin/x86_64,
because on linux/x86_64
     a) the resulting code crashes when using the internal assembler
     b) refuses to link when using the external assembler
   (and hence I don't know whether it's safe to do on other non-darwin
    platforms either) -- fixes mantis #15889

git-svn-id: trunk@14971 -
2010-03-04 20:23:45 +00:00
Jonas Maebe
89110baab8 * don't modify the flags while simplifying PIC memory references
(mantis #15694)

git-svn-id: trunk@14871 -
2010-02-06 20:18:36 +00:00
Jonas Maebe
f90768ed6a * small optimisation for r14449: check whether the routine is a pure
assembler routine before checking whether an identifier may represent a
    register parameter, instead of afterwards

git-svn-id: trunk@14843 -
2010-02-02 10:40:25 +00:00
Jonas Maebe
28cd8271c9 * initial version of internal Mach-O/i386 assembler by Dmitry Boyarintsev
(mantis #15163)

git-svn-id: trunk@14628 -
2010-01-12 19:52:55 +00:00
florian
c1f3d8dcaa * unified names of system_*/systems_* sets
git-svn-id: trunk@14566 -
2010-01-07 18:16:20 +00:00
florian
34227e811d + patch by Sven Barth to add native NT rtl support to the compiler, resolves #14886
git-svn-id: trunk@14565 -
2010-01-07 17:42:11 +00:00
Jonas Maebe
d3f9e6290b * fixed error in r14402 for functions/procedures that are not declared as
"assembler" (mantis #15370)

git-svn-id: trunk@14449 -
2009-12-17 16:04:09 +00:00
Jonas Maebe
f660e7cc6c * fisttp must get an "fpuint" suffix in the assembler output
git-svn-id: trunk@14418 -
2009-12-11 23:20:21 +00:00
Jonas Maebe
f2c0190aa3 * treat parameters that are passed in registers as register operands in the
x86 intel assembler reader (patch by Sergei Gorelkin, mantis #6851)

git-svn-id: trunk@14402 -
2009-12-11 13:33:05 +00:00
pierre
e67307aa66 * New constant system_needs_16_byte_stack_alignment
defined in system.pas
    used in x86/cgx86.pas
    and x86_64/cgcpu.pas
   

git-svn-id: trunk@14401 -
2009-12-11 09:50:27 +00:00
pierre
dbf2be812a * for rip_relative if cs_create_pic is selected
git-svn-id: trunk@14392 -
2009-12-10 13:38:34 +00:00
pierre
21bc57d4c1 * accept @PLT for pic functions
git-svn-id: trunk@14389 -
2009-12-10 13:07:44 +00:00
Jonas Maebe
b4c8c73e70 * changed tf_use_function_relative_addresses into an assembler flag (with
the opposite meaning, af_stabs_use_function_absolute_addresses), because it
    is different on Darwin for the internal and external assembler)

git-svn-id: trunk@14342 -
2009-12-06 13:21:28 +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
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
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
pierre
ff25f1797c + Add gas for x86_64 solaris
git-svn-id: trunk@14239 -
2009-11-21 16:21:10 +00:00
Jonas Maebe
f7360d47c5 - removed aitconst_indirect_symbol, replaced with tai_directive
(patch by Dmitry Boyarintsev, mantis #15050)

git-svn-id: trunk@14157 -
2009-11-12 19:39:41 +00:00
Jonas Maebe
edacea82be * changed assembler directives for darwin lazy/non-lazy symbol pointers
and init/fini routines into their section equivalents (based on patch
    by Dmitry Boyarintsev, mantis #15037)

git-svn-id: trunk@14128 -
2009-11-09 22:20:01 +00:00
Jonas Maebe
559e284bd0 * merged r13762-14047 from trunk
git-svn-id: branches/objc@14048 -
2009-11-04 15:50:26 +00:00
Jonas Maebe
762a0c7059 * try to prevent addresses from being PICified multiple times (should fix
regressions after r13760)

git-svn-id: trunk@13795 -
2009-10-02 14:13:10 +00:00
Jonas Maebe
0c675a4039 * the objc1 unit has been renamed to objc
* the objc unit links against the Foundation instead of against the Cocoa
    framework, and inludes an interface to either the fragile or non-fragile
    obj-c run time depending on the target platform
  + support for the non-fragile Objective-C runtime/ABI, as used on Mac OS X
    for ARM (iPhone) 64 bit (PowerPC/64, x86_64) -- all these targets now
    are now also supported for the objectivec1 modeswitch
  + support for private_extern symbol bindings, required for the above
  * mark objcclasses that are declared in the implementation section of a
    unit as "hidden" (not sure what the effect is, since the Objective-C
    runtime does not seem to do anything with this flag)
  * enabled all obj-c tests for the newly supported platforms

git-svn-id: branches/objc@13763 -
2009-09-27 15:24:50 +00:00
Jonas Maebe
d34276c575 --- Merging r13696 through r13760 into '.':
U    ide/fpusrscr.pas
U    rtl/unix/video.pp
U    rtl/i386/i386.inc
U    rtl/win/wininc/defines.inc
U    rtl/win/systhrd.inc
U    rtl/linux/m68k/dllprt0.as
U    rtl/linux/i386/syscall.inc
U    rtl/linux/i386/dllprt0.as
U    rtl/linux/i386/si_c.inc
U    rtl/linux/i386/si_prc.inc
U    rtl/linux/i386/si_c21.inc
U    rtl/linux/i386/si_g.inc
U    rtl/linux/i386/si_c21g.inc
U    rtl/linux/i386/si_uc.inc
U    rtl/linux/i386/si_dll.inc
U    rtl/linux/x86_64/dllprt0.as
A    tests/test/packages/hash/sha1test.pp
U    tests/webtbs/tw12038.pp
U    compiler/cclasses.pas
U    compiler/symdef.pas
U    compiler/ncon.pas
U    compiler/ncgrtti.pas
U    compiler/cgbase.pas
U    compiler/pstatmnt.pas
U    compiler/systems/t_linux.pas
U    compiler/pass_1.pas
U    compiler/x86/cgx86.pas
U    compiler/x86/agx86att.pas
U    compiler/x86/aasmcpu.pas
U    compiler/aasmbase.pas
A    packages/fcl-xml/tests/extras.pp
A    packages/fcl-xml/tests/extras2.pp
--- Merging r13696 through r13760 into 'packages/fcl-xml/tests/README_DOM.txt':
U    packages/fcl-xml/tests/README_DOM.txt
--- Merging r13696 through r13760 into '.':
U    packages/fcl-xml/tests/domunit.pp
U    packages/fcl-xml/src/xpath.pp
U    packages/Makefile
U    packages/gmp/src/gmp.pas
U    packages/gmp/readme
U    packages/fcl-db/src/base/db.pas
U    packages/fcl-db/src/base/database.inc
U    packages/sqlite/src/sqlite3.inc
U    packages/fcl-web/src/custweb.pp
U    packages/hash/fpmake.pp
U    packages/hash/Makefile.fpc
A    packages/hash/src/sha1.pp
U    packages/hash/Makefile
U    packages/hash/examples/Makefile.fpc
A    packages/hash/examples/sha1test.pp
U    packages/hash/examples/Makefile
U    packages/Makefile.fpc
U    packages/fcl-base/src/ascii85.pp
U    packages/fcl-base/src/custapp.pp
U    packages/chm/src/chmwriter.pas
U    packages/chm/src/paslzx.pas
U    packages/chm/src/chmreader.pas
--- Merging r13761 into '.':
U    compiler/powerpc/agppcvasm.pas
U    compiler/ppcgen/agppcgas.pas

git-svn-id: branches/objc@13762 -
2009-09-27 14:13:44 +00:00
Jonas Maebe
ec8fee45fe * do not access local data via the GOT on x86_64, because
a) it's unnecessary
   b) it's slower than "direct" RIP-relative accessing
   c) it's not supported on darwin/x86_64 in certain cases
  * never use absolute addressing on darwin/x86_64 (like on win64)
  * when not generating PIC, make sure that a_loadaddr_ref_reg on x86_64
    also uses RIP-relative addressing for darwin/x86_64 and win64

git-svn-id: trunk@13760 -
2009-09-27 13:43:56 +00:00
Jonas Maebe
e393446769 * fixed several omissions that could cause the dynamic linker not to
register required classes:
    + add lazy references to classes referred to in the current unit
    + define reference symbols for classes defined in the current unit
    + add lazy references to parent classes of classes defined in the current
      unit

git-svn-id: branches/objc@13679 -
2009-09-08 16:05:41 +00:00
Jonas Maebe
146a819615 * fixed spilling of and operations on spilled 32 bit values for x86_64
(mantis #14403)

git-svn-id: trunk@13573 -
2009-08-21 16:20:16 +00:00
Jonas Maebe
baf1ac22b7 * fixed r13469 (PLT entries are not GOT-relative). Not reverting all the
changes from that commit, because not hardcoding the use of
    current_procinfo in all cases when obtaining the GOT register is
    cleaner

git-svn-id: trunk@13470 -
2009-07-28 17:43:17 +00:00
Jonas Maebe
f265fbe343 * fixed GOT loading for i386 in stubs for external procedures whose external
name is (re)defined in the implementation (mantis #14221)

git-svn-id: trunk@13469 -
2009-07-28 17:28:17 +00:00
Jonas Maebe
34c985cfa6 * added register type parameter to cgsize2subreg(), as the subreg can
depend on that (and correct a number of cases where this was wrong)
  * set the correct subreg type for xmm x86_64 parameter registers
    (resolved mantis #14067)

git-svn-id: trunk@13410 -
2009-07-19 13:57:23 +00:00
florian
b9fddff9c4 * avoid IE in case of unknown assembler reference syntax
git-svn-id: trunk@13364 -
2009-07-05 19:16:46 +00:00
yury
41d50e4723 * Fixed dead code warning.
git-svn-id: trunk@13140 -
2009-05-13 11:27:48 +00:00
yury
f726e1691b * Fixed warnings and notes.
git-svn-id: trunk@13139 -
2009-05-13 11:26:01 +00:00
yury
92ad06f1e8 * Always use RIP relative symbol addressing for x86_64 Windows targets. Bug #13657.
* Support for simple form of RIP relative addressing by x86_64 assembler writer. Example: movl rax,SomeSymbol(%rip)

git-svn-id: trunk@13135 -
2009-05-13 10:07:44 +00:00
Jonas Maebe
dd55947b4b - disabled jump tables for x86_64, because they cause various kinds of
crashes with dynamic libraries (mantis #13628 and related bugs)

git-svn-id: trunk@13073 -
2009-05-01 14:54:38 +00:00
Jonas Maebe
ca132e203f * treat typecast(register) the same as typecast([register]) in assembler
expressions (for Delphi compatibility, mantis #9327)

git-svn-id: trunk@13040 -
2009-04-25 15:37:38 +00:00
Jonas Maebe
dbeb3e060f * fixed internalerror(2007120903) when using -Cfsse2 in case an unsigned
32 bit subrange type with high(subrange_type) <= high(longint) is
    converted to a float

git-svn-id: trunk@13037 -
2009-04-25 11:40:02 +00:00
Jonas Maebe
6165536b5e + added {$modeswitch objectivec1}/-Mobjectivec1 mode switch to enable
the use of Objective-C 1.0 constructs. Because it is a mode switch, it
    can be used cumulatively with every syntax mode. Note that a {$mode xxx}
    statement resets all mode switches as well, so you cannot use the
    -Mobjectivec1 variant if you have such a statement in a unit. This
    modeswitch is currently only enabled for Darwin/PowerPC and Darwin/i386,
    as the backend support is not yet implemented for other platforms.
  + implemented selector() statement that can be used to create an Objective-C
    selector for the message with the specified *constant* name (in the future,
    it will also work for Objective-C method identifiers)
  + added SEL type to the system unit (the selector() statement returns it)
  + added all Objective-C segments to the assembler writers
  + (currently mostly dummy) objc1 unit that is automatically included if the
    {$modeswitch objectivec1} statement is used
  + some tests for the selector() statement

git-svn-id: trunk@12870 -
2009-03-08 18:40:32 +00:00
florian
694f563079 * fixed assembler tables for sse4 instructions, resolves #13186
git-svn-id: trunk@12787 -
2009-02-24 20:07:11 +00:00
Jonas Maebe
7d459cf12a * the compiler now explicitly keeps track of the minimally guaranteed
alignment for each memory reference (mantis #12137, and
    test/packages/fcl-registry/tregistry1.pp on sparc). This also
    enables better code generation for packed records in many cases.
  o several changes were made to the compiler to minimise the chances
    of accidentally forgetting to set the alignment of memory references
    in the future:
    - reference_reset*() now has an extra alignment parameter
    - location_reset() can now only be used for non LOC_(C)REFERENCE,
      use location_reset_ref() for those (split the tloc enum so the
      compiler can catch errors using range checking)

git-svn-id: trunk@12719 -
2009-02-08 13:00:24 +00:00
Jonas Maebe
4e1859e108 * fixed spilling of "mov $64bitconst,%reg" on x86_64
git-svn-id: trunk@12711 -
2009-02-07 22:57:59 +00:00
Jonas Maebe
b1c3f76ff9 * changed the supported targets for assembler writers to a set, and
(hopefully correctly) limited all assembler writers to only the
    OSes they support (mantis #11801)

git-svn-id: trunk@12622 -
2009-01-28 15:12:43 +00:00
florian
80ff09c6f4 * correct handling of constant operands of aad/aam
git-svn-id: trunk@12158 -
2008-11-18 16:21:58 +00:00
florian
145dc4d8d6 * write assembler error at the correct position, first fix for #12595
git-svn-id: trunk@12157 -
2008-11-18 16:08:22 +00:00
florian
53ffda14f3 * fixes taking the address of an assembler block defined label
* create short jumps also for asm blocks, thanks to Sergej Gorelkin for the patch, resolves #11638

git-svn-id: trunk@12043 -
2008-11-09 21:14:45 +00:00
florian
49195b0ac0 * fixes assembling of mov ax,<mem16>
* fixes assembling of test <mem8>,reg8; resolves #11786

git-svn-id: trunk@12040 -
2008-11-09 10:24:59 +00:00
Jonas Maebe
718694d1d6 * always specify an explicit alignment for tgobj.gettemp (so e.g.
shortstring temps don't get maximum alignment)
  * changed some gettemptyed() calls into gettemp() calls (gettemptyped
    means that this temp can only be used for temps of that type,
    which is necessary for refcounted types but not for floats)

git-svn-id: trunk@12036 -
2008-11-08 22:20:47 +00:00
Jonas Maebe
53e52ac6a9 * implementation of 32x32->64 multiplication for i386 based on patch
by Sergei Gorelkin

git-svn-id: trunk@12028 -
2008-11-06 21:03:10 +00:00
Jonas Maebe
a23630260b + "weakexternal" support for imported procedures and variables.
the syntax is exactly the same as for "external", except for
    the keyword. It is currently only active for Darwin targets.
    It should also work at least for Linux targets, but only with
    the GNU assembler (which is why it is not activated there)
  + test for this functionality

git-svn-id: trunk@12009 -
2008-11-01 18:38:32 +00:00
Jonas Maebe
0197192441 * disabled jump tables for darwin/x86_64 for now since they don't work
there yet

git-svn-id: trunk@11502 -
2008-08-02 12:23:34 +00:00
yury
5e11e697b4 * Use unsigned integers for sizes and positions to break 2GB limit in tdynamicarray, object writer, internal linker, coff and PE headers.
git-svn-id: trunk@11480 -
2008-07-28 20:29:25 +00:00
florian
d05d315aa5 * jump table is written to the data segment so create a proper label for it, resolves #11735
git-svn-id: trunk@11477 -
2008-07-28 18:09:34 +00:00
florian
1afb1aa9cc + ror/rol functions
+ internal compiler support for ror/rol on i386

git-svn-id: trunk@11466 -
2008-07-27 17:12:32 +00:00
yury
0bcaf8845f * Fixed 'mixed signed/unsigned' warnings.
* Suppressed 2 unreachable code warnings.
* Now x86 compiler compiles without warnings and notes! It will be great to keep such state in future...

git-svn-id: trunk@11455 -
2008-07-23 13:16:46 +00:00
yury
491f0fa1d8 * Replaced all user defined warnings by TODO comments to reduce compiler noise.
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
yury
cf7390ea81 * Fixed 'mixed signed/unsigned' and pointer conversion warnings.
git-svn-id: trunk@11439 -
2008-07-23 09:36:07 +00:00
yury
5548824859 * Removed/ifdefed/commented unused local variables.
git-svn-id: trunk@11438 -
2008-07-23 09:22:47 +00:00
florian
a15d8778d6 + create jump tables for case statements on x86-64
git-svn-id: trunk@11377 -
2008-07-13 10:26:25 +00:00
florian
58757d0630 * support of dq in Intel assembler on 64 bit CPUs, resolves #11425
git-svn-id: trunk@11211 -
2008-06-07 15:08:48 +00:00
florian
35c0f78642 + Haiku support by Olivier Coursière based on old BeOS support
git-svn-id: trunk@11014 -
2008-05-19 17:33:35 +00:00
Jonas Maebe
3d2630c661 * fixed wrong location.size (sign) for x86's in_abs_long + test
git-svn-id: trunk@10850 -
2008-05-01 11:47:32 +00:00
yury
b70bf05ad5 * I hope it's proper fix for r10688.
git-svn-id: trunk@10690 -
2008-04-18 10:51:56 +00:00