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