Commit Graph

963 Commits

Author SHA1 Message Date
Jonas Maebe
af36d177d9 * if we find a constant already loaded in a register and we use that
register, mark the register as read by the current instruction
    (fixes compilation of tcalfun8 with optimizations)

git-svn-id: trunk@3003 -
2006-03-21 15:44:55 +00:00
Jonas Maebe
01cf70d354 * don't change "mov const,ref; mov ref,reg" into "mov const,reg; mov reg,ref"
if ref depends on reg

git-svn-id: trunk@3002 -
2006-03-21 15:25:16 +00:00
peter
37c81492ad Merged revisions 2827,2831,2837,2932-2980 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

r2827 (peter)
  * smartlinking of resourcestrings


r2831 (peter)
  * process_ea 64bit fixes


r2837 (peter)
  * linker script

git-svn-id: trunk@2981 -
2006-03-19 22:12:52 +00:00
Jonas Maebe
8a6ebdf274 - disabled loop unrolling for level 3 optimizations since it only causes
crashes (and even if it didn't, on its own it mainly causes code
    bloat)

git-svn-id: trunk@2941 -
2006-03-17 17:42:39 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
peter
eb725d4e44 Merged revisions 2908,2911,2913-2917 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2908 | peter | 2006-03-13 13:35:48 +0100 (Mon, 13 Mar 2006) | 2 lines

  * merge trunk upto r2907

........
r2911 | peter | 2006-03-13 18:08:00 +0100 (Mon, 13 Mar 2006) | 2 lines

  * rename values to make room for operand size codes

........
........
........
r2915 | peter | 2006-03-14 13:51:35 +0100 (Tue, 14 Mar 2006) | 2 lines

  * check aktcputype

........
r2916 | peter | 2006-03-14 15:06:32 +0100 (Tue, 14 Mar 2006) | 3 lines

  * merge 300 opcodes
  * more 64bit versions of opcodes

........
r2917 | peter | 2006-03-14 17:34:03 +0100 (Tue, 14 Mar 2006) | 3 lines

  * x86_64 tables
  * convert movq with normal registers to mov

........

git-svn-id: trunk@2931 -
2006-03-16 08:09:28 +00:00
Jonas Maebe
5155de6d61 * fixed webtbs/tw2514 for darwin/i386 (and a similar bug for win32):
you get an internalerror if you try to keep a 0-byte record in
    a register (because the paramgr then tries to allocate a register
    of size OS_NO)

git-svn-id: trunk@2929 -
2006-03-15 21:48:32 +00:00
peter
588cccb3ca * remove some obsolete i386 specific code
* use a_optimize_const to remove useless opcodes

git-svn-id: trunk@2910 -
2006-03-13 16:37:08 +00:00
peter
d8dc5679e3 * aktcputype and aktoptimizecputype was missing in the previous optimization commits
git-svn-id: trunk@2907 -
2006-03-13 12:29:56 +00:00
peter
2888a21593 * list supported optimization options in -i
* support $OPTIMIZATION and $O+

git-svn-id: trunk@2904 -
2006-03-13 11:17:56 +00:00
peter
17bc033747 Merged revisions 2791-2793,2798-2800,2806-2825,2829-2830,2833,2839,2898 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2791 | peter | 2006-03-06 14:57:20 +0100 (Mon, 06 Mar 2006) | 3 lines

  * disable internal linker if -s is used
  * enable section smartlink by default for internal linker

........
r2792 | peter | 2006-03-06 14:58:23 +0100 (Mon, 06 Mar 2006) | 2 lines

  * support long sectionnames

........
r2793 | peter | 2006-03-06 15:04:12 +0100 (Mon, 06 Mar 2006) | 2 lines

  * register symbols in section also when reading .o files

........
r2798 | peter | 2006-03-07 10:08:07 +0100 (Tue, 07 Mar 2006) | 2 lines

  * symbolrefs need to be loaded from relocations when loading a .o

........
r2799 | peter | 2006-03-07 16:17:52 +0100 (Tue, 07 Mar 2006) | 3 lines

  * remove unreferenced sections
  * set stacksize in peopthaeder

........
r2800 | peter | 2006-03-07 17:02:46 +0100 (Tue, 07 Mar 2006) | 2 lines

  * objsection.fullname added

........
........
r2807 | peter | 2006-03-08 08:18:04 +0100 (Wed, 08 Mar 2006) | 2 lines

  * powerpc64 fixes

........
r2808 | peter | 2006-03-08 08:35:53 +0100 (Wed, 08 Mar 2006) | 2 lines

  * register x86_64_pecoff

........
r2809 | peter | 2006-03-08 11:26:38 +0100 (Wed, 08 Mar 2006) | 2 lines

  * optimize and cleanup matches()

........
r2810 | peter | 2006-03-08 12:25:28 +0100 (Wed, 08 Mar 2006) | 2 lines

  * small tweak to readdata to copy values direct without calling move()

........
r2811 | peter | 2006-03-08 15:55:21 +0100 (Wed, 08 Mar 2006) | 2 lines

  * compile fix

........
........
........
........
........
........
r2817 | peter | 2006-03-09 14:20:52 +0100 (Thu, 09 Mar 2006) | 2 lines

  * more readable with long secnames

........
........
........
........
........
........
........
........
r2825 | peter | 2006-03-10 09:52:05 +0100 (Fri, 10 Mar 2006) | 2 lines

  * don't initialize/finalize external variables

........
r2829 | peter | 2006-03-10 10:58:08 +0100 (Fri, 10 Mar 2006) | 2 lines

  * merge 64bit assembler

........
r2830 | peter | 2006-03-10 12:25:08 +0100 (Fri, 10 Mar 2006) | 2 lines

  * TElfAssembler rename

........
r2833 | peter | 2006-03-10 15:22:27 +0100 (Fri, 10 Mar 2006) | 3 lines

  * support & prefix to force identifier parsing, used to access fields that
    have the names of a register

........
r2839 | peter | 2006-03-10 19:37:11 +0100 (Fri, 10 Mar 2006) | 2 lines

  * merge stabs section flags

........
r2898 | peter | 2006-03-12 23:18:18 +0100 (Sun, 12 Mar 2006) | 2 lines

  * reorder instructions for better first match

........

git-svn-id: trunk@2902 -
2006-03-13 09:29:57 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
9125d0c189 * also align esp for all procedures/functions declared "assembler",
since they may do a call. If you don't want that to happen, use
    the nostackframe directive (i386-darwin only)

git-svn-id: trunk@2896 -
2006-03-12 21:20:29 +00:00
Jonas Maebe
435aee2398 * fixed g_copyvaluepara_openarray/g_releasevaluepara_openarray for
use_fixed_stack (use generic code)

git-svn-id: trunk@2895 -
2006-03-12 21:04:59 +00:00
Jonas Maebe
09a3bbfc07 * fixed previous commit
git-svn-id: trunk@2877 -
2006-03-11 22:53:41 +00:00
Jonas Maebe
7b5ee7342a * fixed wrong generation of teardown of stackframe on i386-darwin
in case no stackframe was generated (in case no pi_do_call in
    current_procinfo.flags)

git-svn-id: trunk@2876 -
2006-03-11 22:38:28 +00:00
Jonas Maebe
5f0f08dd18 * fixed calling cdecl functions which return a large record with
use_fixed_stack on i386

git-svn-id: trunk@2872 -
2006-03-11 22:12:20 +00:00
Jonas Maebe
3765a9bbb8 * fixed set_first_temp_offset for use_fixed_stack
git-svn-id: trunk@2866 -
2006-03-11 21:08:04 +00:00
Jonas Maebe
431cead7a2 * more disabling of interrupt code for i386-darwin
git-svn-id: trunk@2862 -
2006-03-11 15:10:20 +00:00
Jonas Maebe
e7112c6636 * ignore po_interrupt for i386-darwin since it messes up stack alignment
git-svn-id: trunk@2857 -
2006-03-11 14:30:02 +00:00
Jonas Maebe
6e58ad4a12 * set firsttempoffset properly for use_fixed_stack
git-svn-id: trunk@2853 -
2006-03-11 13:54:03 +00:00
Jonas Maebe
fad5d59bd9 * turned {$ifdef cputargethasfixedstack} into "if use_fixed_stack"
* fixed i386 parameter passing of function calls nested in parameters
    of functions which also need the stack to pass poarameters

git-svn-id: trunk@2847 -
2006-03-10 23:44:04 +00:00
Jonas Maebe
41eba7dffe * properly calculate the value to add to esp at the end of a function
without framepointer
  * use generic save/restore exception reason code for use_fixed_stack

git-svn-id: trunk@2846 -
2006-03-10 22:34:11 +00:00
Jonas Maebe
9de2847865 + support for passing parameters via pre-allocated stack space on i386
(override/adjust cgutils.use_fixed_stack to change conditions where
     this is done, currently only activated for darwin-i386)
  * make sure the stack is always aligned to 16 bytes on darwin-i386

git-svn-id: trunk@2840 -
2006-03-10 19:59:44 +00:00
florian
5ece7cbc2f * first part of x86-64 assembler
git-svn-id: trunk@2824 -
2006-03-09 22:05:16 +00:00
peter
785550d7e3 Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines

  * add compiler dir

........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines

  * enabled more code

........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines

  * pe stub and headers

........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines

  * section options cleanup

........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines

  * fixed typecasts

........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines

  * simple linking works

........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines

  * internal linker script

........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines

  * make elf working again

........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines

  * disable dwarf for smartlinking with .a
  * fix section start in new .a file

........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines

  * stab section fixes

........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines

  * basic work to merge stabs sections

........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload tmodules before linking

........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines

  * fixed stabs linking

........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines

  * show code and data size

........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload .stabs from objdata after it is merged

........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines

  * memsize/datasize cleanup
  * check for exports/resources when adding module to linker

........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines

  * new TObjSymbol splitted from TAsmSymbol

........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines

  * coff fixes after recent objsymbol changes

........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines

  * fixed coff writer

........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines

  * fix read-only opening

........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines

  * Read edata from DLLs, basic work

........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines

  * deletedef added
  * don't remove defs from index when we are already clearing everything

........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines

  * moved TObj classes to ogbase
  * ObjSection.SymbolRefs and SymbolDefines list
  * DLL importing

........

git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
peter
5ac78d1ec3 * fix range error
git-svn-id: trunk@2640 -
2006-02-20 06:59:14 +00:00
daniel
e138c9c081 + Add nice little peephole trick
+ Add a comment to another

git-svn-id: trunk@2602 -
2006-02-15 22:03:07 +00:00
Jonas Maebe
a68ca7eb2a * fixed web bug #4768 + test
git-svn-id: trunk@2479 -
2006-02-08 19:22:26 +00:00
peter
4bee83c736 * range check errors
git-svn-id: trunk@2402 -
2006-02-02 09:03:02 +00:00
florian
8cd8e4ba8d + basic dwarf support for variables and types
git-svn-id: trunk@2353 -
2006-01-28 16:06:08 +00:00
florian
b06643a1eb * tai_const refactored
git-svn-id: trunk@2323 -
2006-01-22 12:58:38 +00:00
florian
aa176601fb + added more dwarf sections
git-svn-id: trunk@2318 -
2006-01-21 21:22:47 +00:00
Jonas Maebe
ef4ece3674 * fixed allocregbetween in case the first removed tai_regalloc is an
allocation

git-svn-id: trunk@2241 -
2006-01-09 10:07:14 +00:00
tom_at_work
c887507adf * generic compiler patches for ppc64/linux PIC code
git-svn-id: trunk@2222 -
2006-01-08 13:27:31 +00:00
florian
e43a1223ff * fixed refs book keeping
git-svn-id: trunk@2211 -
2006-01-07 21:10:39 +00:00
Jonas Maebe
1521a33979 * fixed allocregdebug code
git-svn-id: trunk@2204 -
2006-01-07 15:01:46 +00:00
Jonas Maebe
5692b93a52 * fixed bug in regalloc info in case a sequence is swapped with
a storeback at the end (i.e., "mov x,y" ... "mov y,x")

git-svn-id: trunk@2197 -
2006-01-06 15:29:25 +00:00
Jonas Maebe
a885e9da0e * fixed replaceregdebug code
git-svn-id: trunk@2196 -
2006-01-06 14:55:42 +00:00
florian
f7d2c47f73 + no stackframe is generated for i386 if possible
git-svn-id: trunk@2162 -
2006-01-04 19:19:06 +00:00
florian
61e3b70cfa * cleaned up segmented thread variables
git-svn-id: trunk@2135 -
2006-01-03 12:49:29 +00:00
florian
fb4557d71e * first implementation of pic for i386
git-svn-id: trunk@2107 -
2006-01-01 20:14:48 +00:00
florian
008da5b11c + new cpus/fpus added
git-svn-id: trunk@2101 -
2006-01-01 12:41:39 +00:00
peter
717c2172eb * support db $01 db $02
git-svn-id: trunk@1996 -
2005-12-20 07:59:11 +00:00
florian
bec0daebfa + optimized <dword> div <const dword>
git-svn-id: trunk@1993 -
2005-12-19 22:19:43 +00:00
peter
5942d23b1b * fix range error
git-svn-id: trunk@1974 -
2005-12-16 17:24:00 +00:00
florian
3582108be1 * signed divisions with constants are always done without idiv
git-svn-id: trunk@1965 -
2005-12-15 22:36:48 +00:00
florian
5ea49bedd0 * fixed handling of imul with one parameter
git-svn-id: trunk@1964 -
2005-12-15 22:36:16 +00:00
Jonas Maebe
b507ddae51 * fixed crash when an optimized sequence extends till the start of an
assembler block

git-svn-id: trunk@1869 -
2005-12-02 11:09:13 +00:00
florian
a3ed7cbd12 + check validity of -Oa parameter
git-svn-id: trunk@1559 -
2005-10-22 15:09:39 +00:00
peter
19eaf660c2 * more flexibel support for typecasting to different sizes
fixes tw4450
      

git-svn-id: trunk@1544 -
2005-10-20 11:13:49 +00:00
Jonas Maebe
867aaef744 * fixed restoring of register contents one instruction too far when removing
a previous unused load

git-svn-id: trunk@1465 -
2005-10-18 09:31:54 +00:00
florian
8b01dce70a * cmov ref,reg disabled because ref might be never nil
git-svn-id: trunk@1407 -
2005-10-16 12:25:58 +00:00
Jonas Maebe
8b82f90b27 * fixed overflows in counters used for operands in case opcode without
operands

git-svn-id: trunk@1323 -
2005-10-08 12:02:39 +00:00
Jonas Maebe
8471e10137 * fixed tw4266
git-svn-id: trunk@1317 -
2005-10-07 16:48:51 +00:00
peter
affb69dd7f * fixed const and reg parameter passing with alignment of 2 (go32v2/os2)
git-svn-id: trunk@1307 -
2005-10-06 07:29:41 +00:00
Jonas Maebe
c3a5f88a7b * fixed webtbs/tw4388: properly process regalloc info coming right after
a tai_marker of type asmblockend, and fixed removal of too many
    tai_regallocs in some cases (daopt386.pas)
  * some preventive fixes to make sure the optimizer doesn't start optimizing
    inside inline assembler blocks (csopt386.pas)

git-svn-id: trunk@1284 -
2005-10-04 13:30:13 +00:00
peter
89297d2c39 * move all stabs ($ifdef gdb) code to dbgstabs
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
peter
e5ca17b598 * fix compilation for r1224
git-svn-id: trunk@1235 -
2005-09-30 05:59:34 +00:00
Jonas Maebe
f3384bab09 + some initial darwin/x86 stuff:
* align stack to 16 bytes
    * extended takes 16 bytes
    * <= 8 byte records are passed in registers

git-svn-id: trunk@1224 -
2005-09-29 11:31:26 +00:00
peter
82faa95118 * lineinfo fixed for binary writer
* add tai_directive to replace old tai_direct calls
    in powerpc

git-svn-id: trunk@1139 -
2005-09-19 11:47:30 +00:00
peter
a3ab2053c9 * support multiple asmlabel types, renamed getlabel to
getjumplabel and added type para to getlabel for specific types
  * moved lineinfo generation from assemble and aggas to dbgstabs

git-svn-id: trunk@1120 -
2005-09-18 21:16:10 +00:00
florian
23d1caba7e * allow type postfix like: [esi].currency
git-svn-id: trunk@1098 -
2005-09-17 18:09:47 +00:00
florian
d56e29b9dd * fixed previous commit
git-svn-id: trunk@1097 -
2005-09-17 17:54:26 +00:00
florian
8c6316ce2a * allow byte, word, dword, qword as size qualifier
git-svn-id: trunk@1096 -
2005-09-17 17:12:27 +00:00
peter
ca66b9f7c1 * force writing of new section before generating the jumptable
git-svn-id: trunk@1085 -
2005-09-15 14:08:02 +00:00
peter
fdc4925fcd * basic framework for debuginfo class added
git-svn-id: trunk@1084 -
2005-09-15 08:34:51 +00:00
peter
c3727c29b2 * rename al_code to al_procedures, al_bss/al_data to al_globals
* more work for section smartlinking

git-svn-id: trunk@1083 -
2005-09-15 06:51:12 +00:00
michael
3392189fb0 + Implemented resources for ELF
git-svn-id: trunk@956 -
2005-08-28 09:35:35 +00:00
peter
05a628447f * put typedconsts in own asmlist to prevent mixing
array and string data
  * added al_rodata
  * renamed tasmlist enum names to include al_ prefix

git-svn-id: trunk@899 -
2005-08-17 08:42:52 +00:00
florian
db68fb68b4 * updated to nasm 0.98.39 and insns.dat Rev. 1.46
git-svn-id: trunk@836 -
2005-08-09 20:15:58 +00:00
florian
9be5247db5 * dyn. arrays are always passed by value, fixes 4240
git-svn-id: trunk@800 -
2005-08-05 21:52:58 +00:00
florian
804207239d *c <int64>:=-<longint> fixed (bug 4253)
git-svn-id: trunk@796 -
2005-08-05 19:00:30 +00:00
florian
a2fd319a20 * nx86cnv.pas must set ctypeconv node properly
* nx86cnv must be used

git-svn-id: trunk@787 -
2005-08-03 20:29:38 +00:00
florian
b222cc7519 - n386cnv.pas removed, was empty
git-svn-id: trunk@786 -
2005-08-03 20:21:55 +00:00
peter
2e00bd1480 * support local labels in references
git-svn-id: trunk@764 -
2005-07-29 07:06:12 +00:00
florian
5df84f7222 * cvtxx2yy has now proper modification information
git-svn-id: trunk@757 -
2005-07-26 21:06:02 +00:00
daniel
22e89e1a42 * Proof of concept: Support threadvars using segment registers.
git-svn-id: trunk@740 -
2005-07-24 21:06:23 +00:00
daniel
d05f58b604 * Group asmlists into array to be able to add
some of them more comfortably.
  * x86_64 compilation was broken, fixed.
  * Sparc compilation was broken, fixed.

git-svn-id: trunk@731 -
2005-07-23 13:44:32 +00:00
peter
03c02cdb42 * support Type[index] typecasting
git-svn-id: trunk@711 -
2005-07-20 11:30:00 +00:00
Jonas Maebe
8bc4e0a32f * inline and compilerproc are now procoptions instead of proccall types
(so both can be combined with each other, as well as with other calling
     conventions)
  * defined COMPPROCINLINEFIXED so SYSTEMINLINE is again activated

git-svn-id: trunk@658 -
2005-07-18 15:27:14 +00:00
daniel
9989bb0d3c * Add operator size to "ret immidiate" instruction
git-svn-id: trunk@607 -
2005-07-10 09:34:51 +00:00
daniel
45bcc5b07a * Add support for jmp $0011:$22334455 to Intel asm reader, request from
a user that is writing an operating system.
  * Fix mkx86ins bug to interpret imm16:imm32 as a single operand

git-svn-id: trunk@606 -
2005-07-10 07:42:14 +00:00
florian
dac1050c11 + mmx support revived, fixes bug #4106
git-svn-id: trunk@555 -
2005-07-02 11:53:51 +00:00
peter
c1b2e1aac5 * check function/procedure type when adding a proc definition
git-svn-id: trunk@546 -
2005-06-30 14:56:05 +00:00
florian
07442c5693 * fixed passing of variant parameters for windows api
* widestrings need to be allocated by a special OS call on windows

git-svn-id: trunk@458 -
2005-06-20 19:56:36 +00:00
florian
21ae782854 * fixed more xmm stuff
+ some win64 stuff added

git-svn-id: trunk@330 -
2005-06-09 20:50:17 +00:00
peter
757ed4e8d3 * standard assembler reader for i386
git-svn-id: trunk@235 -
2005-06-07 13:20:14 +00:00
peter
4ace790492 * remove $Log
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
florian
c97714de9f * renamed windows related units from win32 to win so it can contain ce and 64 bit stuff
git-svn-id: trunk@213 -
2005-06-05 13:42:35 +00:00
florian
a7446e4a7b * changed operand information for multimedia xor operations
git-svn-id: trunk@204 -
2005-06-05 09:50:38 +00:00
florian
36dd45fbc3 * allocation strings fixed allocated<->released where exchanged
git-svn-id: trunk@200 -
2005-06-05 07:47:28 +00:00
florian
ebcb69478f * fixed a lot of stuff for fpu/mm register variables
git-svn-id: trunk@199 -
2005-06-04 21:23:15 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
Jonas Maebe
66755db8b4 * fixed web bug #3905 2005-04-22 15:55:08 +00:00
florian
33ec5d49c5 * USECMOV fixed 2005-03-20 21:41:10 +00:00
Jonas Maebe
ec959955bd * fixed generic jumps optimizer and enabled it for ppc (the label table
was not being initialised -> getfinaldestination always failed, which
    caused wrong optimizations in some cases)
  * changed the inverse_cond into a function, because tasmcond is a record
    on ppc
  + added a compare_conditions() function for the same reason
2005-02-26 01:26:59 +00:00
Jonas Maebe
126f3fa6cf * fixed loop which could go into neverneverland in case of embedded
assembler blocks
2005-02-26 01:23:29 +00:00
Jonas Maebe
04b1263e7f * fixed uninitialised function result in getfinaldestination() when
maximum recursion reached
2005-02-25 20:50:53 +00:00
peter
dd0664156d * fix passing of 64bit values when using -Or 2005-02-15 19:16:04 +00:00
peter
482d781af3 win32 stdcall fixes needed for tw3650 2005-02-14 19:42:02 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
22d9294ab3 + overflow checking for the arm 2005-02-13 18:55:19 +00:00
peter
18ebd28692 * push_addr_param must be defined per target 2005-02-03 20:04:49 +00:00
peter
8f2a768124 * fix win32 small array parameters 2005-02-03 17:10:21 +00:00
peter
79eac1c0b3 * fix [regpara] in intel assembler 2005-01-31 17:07:50 +00:00
peter
46dbff9c93 * revert last commit 2005-01-30 11:03:22 +00:00
peter
cd01e600b9 * update x86_64 with new cpupara 2005-01-29 11:36:52 +00:00
peter
6ee925dec8 * spaces in register names 2005-01-25 18:48:34 +00:00
peter
e820bc93f2 * interface wrapper generation moved to cgobj
* generate interface wrappers after the module is parsed
2005-01-24 22:08:32 +00:00
florian
c08ec5fbf3 * wrong prefix output for masm fixed 2005-01-24 20:44:29 +00:00
peter
79c20ebf7d * use val() for decoding integers 2005-01-20 17:05:53 +00:00
peter
04c97cc129 * load jmp_buf_size from system unit 2005-01-20 16:38:45 +00:00
peter
8d251e8506 * unit mapping rewrite
* new derefmap added
2005-01-19 22:19:41 +00:00
peter
c9f22afb8d * support labels in references 2005-01-19 20:21:51 +00:00
peter
b9ca478f50 * multiple location support for i386 a_param_ref
* remove a_param_copy_ref for i386
2005-01-18 22:19:20 +00:00
peter
ba4228d281 * fix section names 2005-01-18 17:49:45 +00:00
Jonas Maebe
9c22d594b0 + support for passing records in registers under darwin
* tcgpara now also has an intsize field, which contains the size in
    bytes of the whole parameter
2005-01-10 21:50:05 +00:00
Jonas Maebe
f9b99ad965 * remove "release subregA; allocate other_subreg_of_A" sequences so the
register renaming doesn't stop early
2005-01-03 14:59:28 +00:00
Jonas Maebe
d898b8dfb7 * no more moving the loading of regvars past conditional jumps 2004-12-30 14:51:22 +00:00
Jonas Maebe
f041b36ce7 * fixed checking of overlapping references 2004-12-30 13:49:42 +00:00
Jonas Maebe
53c04512cc * fixed several regvar related bugs, cycle with -OZp3r doesn't work
yet though
2004-12-28 18:01:40 +00:00
Jonas Maebe
b2869b3c75 * fixed internalerror when cycling with -O3p3u 2004-12-27 15:20:03 +00:00
peter
1da9e24cee * support sizeof()
* fix typecasting a constant like dword(4)
2004-12-22 17:09:55 +00:00
florian
c279c13d17 * the optimization fstp f;fld f to fst f disabled; leads to rounding problems 2004-12-18 15:21:56 +00:00
Jonas Maebe
84aa52942f * fixed tracking of usage of flags register
* fixed destroying of "memwrite"'s
  * fixed checking of entire sequences in all cases (previously this was
    only guaranteed if the new sequence was longer than the old one, and
    not if vice versa)
  * fixed wrong removal of sequences if a register load was already
    completely removed in the previous sequence (because in that case,
    that register has to be removed and renamed in the new sequence as
    well before removing the new sequence)
2004-12-18 15:16:10 +00:00
Jonas Maebe
a3627d9345 * fixed compilation with -dcsdebug -dallocregdebug 2004-12-18 14:07:35 +00:00
florian
0037f4a199 * fixed operand size calculation for sse operands
+ all nasm assembler targets to help page output added
2004-12-12 10:50:34 +00:00
Jonas Maebe
bd04491f50 * patch from Peter to fix inlining of case statements 2004-11-30 18:13:39 +00:00
peter
06cfe01791 * os2 fixes for import
* asmsymtype support for intel reader
2004-11-29 18:50:15 +00:00
peter
8cf8c54609 * fixed varargs
* replaced dynarray with tlist
2004-11-22 22:01:19 +00:00
peter
2ad2e252a3 * allow spaces before : of a label 2004-11-21 21:36:13 +00:00
peter
89b1b583c9 * ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
  * funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +00:00
florian
18f7aa97dd * changed funcret location back to tlocation 2004-11-21 17:17:03 +00:00
peter
e740a66636 * tparaitem removed, use tparavarsym instead
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
6c9c4c686c * small m68k updates to bring it up2date
* give better error for external local variable
2004-11-09 22:32:59 +00:00
peter
6458bd0ce1 * tvarsym splitted 2004-11-08 22:09:58 +00:00
peter
f80f3fc0fa * shortstr compare with empty string fixed
* removed special i386 code
2004-11-01 12:43:28 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
Jonas Maebe
c9eba4e861 * fixed web bug #3378 2004-10-31 15:17:08 +00:00
peter
705868e816 * remove saveregister calling convention 2004-10-24 20:01:08 +00:00
peter
adb6f59eef * small regvar fixes
* loadref parameter removed from concatcopy,incrrefcount,etc
2004-10-24 11:44:28 +00:00
mazen
581b52422c - remove $IFDEF DELPHI and related code
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
60c73cc0e5 * -Or fixes for open array 2004-10-13 21:12:51 +00:00
peter
8b3e00244f * length parameter for copyvaluearray changed to tlocation 2004-10-11 15:46:45 +00:00
Jonas Maebe
cf085fb9d0 * several fixes to allocregbetween() 2004-10-10 15:01:19 +00:00
Jonas Maebe
0cf348b3df * take into account the size of a write to determine whether a write to
one reference influences the contents of another reference
2004-10-06 19:24:38 +00:00
peter
f5471aef6e * more spilling rewrites 2004-10-05 20:41:01 +00:00
peter
fa3f491546 * range check errors fixed 2004-10-05 17:31:41 +00:00
peter
ee3585f56f * spilling code rewritten for x86. It now used the generic
spilling routines. Special x86 optimization still needs
    to be added.
  * Spilling fixed when both operands needed to be spilled
  * Cleanup of spilling routine, do_spill_readwritten removed
2004-10-04 20:46:22 +00:00
peter
8fb3536f6e * simple regvar support, not yet finished 2004-09-26 17:45:29 +00:00
peter
65c3ba277c * ungetregister is now only used for cpuregisters, renamed to
ungetcpuregister
  * renamed (get|unget)explicitregister(s) to ..cpuregister
  * removed location-release/reference_release
2004-09-25 14:23:54 +00:00
peter
33a834821f * paraloc branch merged 2004-09-21 17:25:12 +00:00
peter
9b0243bccc * support byte() typecast
* support array index
2004-09-13 20:25:52 +00:00
armin
354004d803 * target netwlibc added (libc is preferred for newer netware versions) 2004-09-04 21:18:47 +00:00
Jonas Maebe
3a1e8981f4 * do not rename registers across conditional jumps 2004-08-17 16:34:58 +00:00
Jonas Maebe
d1b9c24cb1 * fixed some more potential regvar bugs 2004-07-23 13:30:19 +00:00
Jonas Maebe
1dd5fc2b47 * changed first_sse_imreg to first_mm_imreg 2004-07-09 23:30:13 +00:00
peter
b6ed8c482b * varargs calculation fixed, it's now the same as the other
targets
2004-07-09 23:09:02 +00:00
peter
4445ae854d * fixed parsing of strings in db 2004-07-06 19:47:19 +00:00
peter
b55648ad7d * align directive added 2004-06-23 14:54:46 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00
peter
7dd6b85e01 * fix shl/shr with value > 63 2004-05-23 14:10:17 +00:00
peter
5358278ca1 tai_regalloc.allocation changed to ratype to notify rgobj of register size changes 2004-05-22 23:34:27 +00:00
florian
b5bf8cefad + <pointer> - <pointer> result is divided by the pointer element size now
this is delphi compatible as well as resulting in the expected result for p1+(p2-p1)
2004-05-20 21:54:33 +00:00
peter
6fc2ea345d * extra typecast to prevent range check 2004-05-19 23:30:18 +00:00
florian
c68ea95074 + syscall directive support for MorphOS added 2004-04-28 15:19:03 +00:00
peter
ffb2785d2b * A_MOVSL renamed to A_MOVSD 2004-04-09 14:36:05 +00:00
peter
406eb57a59 * MOVSL fixed 2004-04-08 16:49:42 +00:00
olle
ea51b18d9b * bugfix for multiline string constants 2004-03-17 12:03:00 +00:00
Jonas Maebe
74836e0d0d * fixed refaddr bug that caused go32v2 cycle failure 2004-03-14 18:42:32 +00:00
florian
61f15e4ec4 * make cycle fixed
+ pic support for darwin
  + support of importing vars from shared libs on darwin implemented
2004-03-02 17:32:12 +00:00
olle
4fecc1a56f * big transformation of Tai_[const_]Symbol.Create[data]name* 2004-03-02 00:36:32 +00:00
Jonas Maebe
401d1891ae * fixed bug in ref_addr changes 2004-02-28 16:59:02 +00:00
Jonas Maebe
756dd463ff * fixed optimizer for new treference fields 2004-02-27 19:55:23 +00:00
olle
d6382f17f2 + added Tai_symbol_end 2004-02-27 13:42:52 +00:00
florian
fabb9c33ac * top_symbol killed
+ refaddr to treference added
  + refsymbol to treference added
  * top_local stuff moved to an extra record to save memory
  + aint introduced
  * tppufile.get/putint64/aint implemented
2004-02-27 10:21:04 +00:00
Jonas Maebe
5332b623ad * fixed bugs that caused pasjpeg crashes 2004-02-25 20:39:58 +00:00
florian
0c35b6f3c4 * x86_64 uses generic concatcopy_valueopenarray for now 2004-02-22 16:48:09 +00:00
florian
00dbe6655d + nx86set added
* some more x86-64 fixes
2004-02-22 12:04:04 +00:00
peter
e6929a1a32 * more x86_64 parameter fixes
* tparalocation.lochigh is now used to indicate if registerhigh
    is used and what the type is
2004-02-09 22:14:17 +00:00
peter
221090453c * x86_64 fixes for opsize 2004-02-05 18:28:37 +00:00
florian
465aa5851b * several fixes to compile x86-64 system 2004-02-05 01:24:08 +00:00
peter
8c5b0f7d82 * first try to get cpupara working for x86_64 2004-02-04 22:01:13 +00:00
peter
8012731ede *** empty log message *** 2004-02-04 19:22:27 +00:00
peter
ecfbbeffc3 * renamed xNNbittype to xNNinttype
* renamed registers32 to registersint
  * replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
peter
8a86aad56d * remove previous commit 2004-02-03 21:19:40 +00:00
peter
7ca069476f *** empty log message *** 2004-02-03 16:53:37 +00:00
florian
e35b683e4d + added prefetch(const mem) support 2004-02-02 20:41:59 +00:00
peter
64d60391bd * fixed crashes when procdef.funcretsym is not valid 2004-01-22 16:14:17 +00:00
florian
c37035a450 * common addnode code for x86-64 and i386 2004-01-20 12:59:36 +00:00
florian
85bed883ce * another bunch of x86-64 fixes mainly calling convention and
assembler reader related
2004-01-14 23:39:05 +00:00
peter
60814ccb16 * disable addmmxset 2004-01-14 17:19:04 +00:00
peter
42c6e9323b * sparc updates, mostly float related 2004-01-12 16:39:40 +00:00
florian
d38abc3a3f + setting of bit 6 of cr for c var args on ppc implemented 2003-12-28 22:09:12 +00:00
florian
ace2d682b0 * rtl and compiler compile with -Cfsse2 2003-12-26 13:19:16 +00:00
florian
dd2bb53aa5 + possible sse2 unit usage for double calculations
* some sse2 assembler issues fixed
2003-12-25 12:01:35 +00:00
florian
06442fa677 + $fputype directive support
+ single data type operations with sse unit
  * fixed more x86-64 stuff
2003-12-25 01:07:09 +00:00
florian
9c476ba5f1 - delete parameter in cg64 methods removed 2003-12-24 00:10:02 +00:00
peter
3afcfd7f86 * extnumber failure is $ffff instead of -1
* fix non-vmt call for register calling on i386
2003-12-23 23:12:44 +00:00
peter
29cae38f12 * overlfow support in second_mul 2003-12-23 22:13:41 +00:00
peter
ed708a0650 * more byte->word 2003-12-23 19:52:55 +00:00
peter
e6d9331341 * overflow for instruction counters 2003-12-22 23:11:41 +00:00
peter
8fe15f4c99 * removed unused checkobject method 2003-12-22 23:08:59 +00:00
daniel
448e336682 * Some work to allow mmx instructions to be used for 32 byte sets 2003-12-21 11:28:41 +00:00
Jonas Maebe
bade472032 * fixed some more optimizer bugs, make cycle now works with -O2p3,
-O2p3u, -O3p3 and -O3p3u
2003-12-20 22:53:33 +00:00
daniel
d84b7d0743 * Some work to restore the MMX capabilities 2003-12-19 22:08:44 +00:00
peter
a529392b93 * register call fix 2003-12-17 21:59:59 +00:00
peter
1367e342db * reg allocations for imaginary register are now inserted just
before reg allocation
  * tregister changed to enum to allow compile time check
  * fixed several tregister-tsuperregister errors
2003-12-15 21:25:48 +00:00
Jonas Maebe
6abc491796 - disable removal of dead loads before a call, because register
parameters are released before a call
  * fix storeback of registers in case of different sizes (e.g., first
    a "movl %eax,%edx" and later a "movb %dl,%al")
2003-12-15 16:08:15 +00:00
peter
2057dbd01a * fix statedebug compile 2003-12-15 15:58:58 +00:00
peter
9cc9068dc9 * wasm args fix from wiktor 2003-12-15 15:58:17 +00:00
peter
c98d2211bc * fixed range check errors 2003-12-14 22:42:39 +00:00
peter
39b4e0398a * fixed csdebug 2003-12-14 22:42:14 +00:00
peter
19b2170ee4 * optimizer works again with 1.0.x
* fixed wrong loop in FindRegWithConst
2003-12-14 14:18:59 +00:00
Jonas Maebe
942cfc9aac * isgp32reg was being called with both tsuperregister and tregister
parameters, so changed type to tsuperregister (fixes bug reported by
    Bas Steendijk)
  * improved regsizesok() checking so it gives no false positives anymore
2003-12-13 15:48:47 +00:00
peter
41bf3e473c * int64 shl/shr > 63 returns 0 2003-12-10 17:28:41 +00:00
peter
cea1da4a1e * fix loading of word/byte to real 2003-12-08 15:35:00 +00:00
Jonas Maebe
f3d82160b1 * fixed some more bugs which only showed up in a ppc cross compiler 2003-12-07 19:19:56 +00:00
florian
bfe452936f * reverted Peter's alloctemp patch; hopefully properly 2003-12-06 01:15:22 +00:00
peter
64b0a0eadf * delayed paraloc allocation, a_param_*() gets extra parameter
if it needs to allocate temp or real paralocation
  * optimized/simplified int-real loading
2003-12-03 23:13:19 +00:00
peter
9aba5c8c7a * fixed some crashes
* fixed varargs and register calling probs
2003-12-01 18:44:15 +00:00
peter
1b0d0ca3c4 * s128real type is not compatible with s80real 2003-12-01 18:43:31 +00:00
florian
ea754b9a49 * fixed several pi_do_call problems 2003-11-29 20:13:25 +00:00
florian
11c5331fbf + nasmelf mode for BeOS
+ DQWORD directive in intel assembler mode
2003-11-29 15:53:06 +00:00
peter
bc762e9af4 * support type() 2003-11-29 14:41:02 +00:00
Jonas Maebe
7f4a3bf1a9 * fixed bug which only showed up in the ppc crosscompiler :) 2003-11-28 18:49:05 +00:00
peter
b26e3c444a * reversed offset calculation for caller side so it works
correctly for interfaces
2003-11-28 17:24:22 +00:00
peter
51384ca53c * register calling is left-right
* parameter ordering
  * left-right calling inserts result parameter last
2003-11-23 17:05:15 +00:00
Jonas Maebe
7128b3fdd2 * fixed double unit usage 2003-11-22 13:10:32 +00:00
Jonas Maebe
aad37ce53c * fixed optimiser so it compiles again
* fixed several bugs which were in there already for a long time, but
    which only popped up now :) -O2/-O3 will now optimise less than in
    the past (and correctly so), but -O2u/-O3u will optimise a bit more
  * some more small improvements for -O3 are still possible
2003-11-22 00:40:19 +00:00
Jonas Maebe
52980d5488 * fixed properties for MOVSB 2003-11-22 00:35:42 +00:00
Jonas Maebe
16834b1854 * fixed XSTORE instruction info 2003-11-13 18:54:22 +00:00
florian
1af574ceca * assembler readers OOPed
+ typed currency constants
  + typed 128 bit float constants if the CPU supports it
2003-11-12 16:05:39 +00:00
peter
50f8604526 * check for push_addr 2003-11-11 21:11:23 +00:00
peter
517c5de6aa * line numbering is now only done when #10, #10#13 is really parsed
instead of when it is the next character
2003-11-10 19:08:32 +00:00
florian
bbf7300a0c * Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
    - arm softfloat calling conventions
    - -Sp for cpu dependend code generation
    - several arm fixes
    - remaining code for value open array paras on heap
2003-11-07 15:58:32 +00:00
florian
8b337fb5ef + type cast variant<->enum
* cnv. node second pass uses now as well helper wrappers
2003-11-04 22:30:15 +00:00
peter
48ef24605a * support scalefactor for opr_local
* support reference with opr_local set, fixes tw2631
2003-10-30 19:59:00 +00:00
peter
bef3bb7b22 * fix field offset in reference 2003-10-29 16:47:18 +00:00
peter
5925d38ac7 * support indexing and offset retrieval for locals 2003-10-29 15:40:20 +00:00
peter
d28f3dfdae * fixed trec.field to return constant 2003-10-27 15:29:43 +00:00
florian
4d070e2a71 * fixed web bug #2128 2003-10-26 13:37:22 +00:00
peter
53e8350307 * more intel parser updates 2003-10-24 17:39:03 +00:00
peter
9342178c7d * typecasting fixes
* reference building more delphi compatible
2003-10-23 17:19:44 +00:00
peter
86782a9b08 * ignore @ in Unit.@Proc 2003-10-21 18:17:40 +00:00
peter
96f9973b46 * taicpu_abstract.oper[] changed to pointers 2003-10-21 15:15:35 +00:00
peter
77c5f6485d * fix vecnode code that caused to much register conflicts 2003-10-21 15:13:27 +00:00