Jonas Maebe
559e284bd0
* merged r13762-14047 from trunk
...
git-svn-id: branches/objc@14048 -
2009-11-04 15:50:26 +00:00
florian
515774b864
* merged armthum branch
...
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
U rtl/arm/setjump.inc
A rtl/arm/thumb2.inc
U rtl/arm/divide.inc
A rtl/embedded/arm/stm32f103.pp
U rtl/inc/system.inc
U compiler/alpha/cgcpu.pas
U compiler/sparc/cgcpu.pas
U compiler/i386/cgcpu.pas
U compiler/ncgld.pas
U compiler/powerpc/cgcpu.pas
U compiler/avr/cgcpu.pas
U compiler/aggas.pas
U compiler/powerpc64/cgcpu.pas
U compiler/x86_64/cgcpu.pas
U compiler/cgobj.pas
U compiler/psystem.pas
U compiler/aasmtai.pas
U compiler/m68k/cgcpu.pas
U compiler/ncgutil.pas
U compiler/rautils.pas
U compiler/arm/raarmgas.pas
U compiler/arm/armatts.inc
U compiler/arm/cgcpu.pas
U compiler/arm/armins.dat
U compiler/arm/rgcpu.pas
U compiler/arm/cpubase.pas
U compiler/arm/agarmgas.pas
U compiler/arm/cpuinfo.pas
U compiler/arm/armop.inc
U compiler/arm/narmadd.pas
U compiler/arm/aoptcpu.pas
U compiler/arm/armatt.inc
U compiler/arm/aasmcpu.pas
U compiler/systems/t_embed.pas
U compiler/psub.pas
U compiler/options.pas
git-svn-id: trunk@13801 -
2009-10-04 09:03:44 +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
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
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
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
f36e5411af
* split cpu64bit compiler define into
...
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
Jonas Maebe
db6e60789b
* only use ".set" directive when creating dwarf relsyms on darwin and
...
not for other relsyms, as older versions of the darwin assembler
don't understand the ".set" directive (mantis #10541 )
git-svn-id: trunk@9621 -
2008-01-03 12:47:31 +00:00
Jonas Maebe
5a7809394e
* fixed addr_pic check (symbol-relsymbol is also always
...
position-independent)
git-svn-id: trunk@9352 -
2007-11-29 21:50:01 +00:00
peter
95772c5cd3
* remove $ifdef extedbug for pic address check
...
git-svn-id: trunk@9348 -
2007-11-29 21:14:47 +00:00
peter
9f0ca44c94
* new tf_smartlink_library flag
...
* use create_smartlink[_sections|_library] to check what to
do for smartlinking
git-svn-id: trunk@8715 -
2007-10-01 16:55:08 +00:00
peter
b5fb7120b8
* fixed length calculation of leb128 constants
...
git-svn-id: trunk@8666 -
2007-09-27 22:40:38 +00:00
Jonas Maebe
7e5e13223e
* also count references to relsymbols
...
git-svn-id: trunk@8654 -
2007-09-26 20:31:41 +00:00
peter
582fa79494
* don't overwrite cai_align with tai_align_abstract
...
* check that tai_align is used and not tai_align_abstract
git-svn-id: trunk@8563 -
2007-09-19 15:41:47 +00:00
peter
67e16340be
* revert r8118
...
git-svn-id: trunk@8139 -
2007-07-22 19:59:00 +00:00
daniel
21293f5818
+ Add common type integer promotion.
...
- {$intpromotion common_type} or -CIcommon_type switches to common type promotion.
- {$intpromotion native_integer} or -CIcommon_type switches to current behaviour.
- Default in tp mode is common_type, native_integer in other modes
- Compiler can cycle with -CIcommon_type
- Still needs checking on other architectures than i386
git-svn-id: trunk@8118 -
2007-07-21 19:16:24 +00:00
florian
499cbcbbe1
* make cycle OPT=-gwl -Co -Cr on x86-64 fixed
...
git-svn-id: trunk@7976 -
2007-07-07 19:16:49 +00:00
Jonas Maebe
0d1ff3a0f1
- removed tai_file/tai_loc, no longer needed
...
git-svn-id: trunk@7945 -
2007-07-04 08:14:48 +00:00
daniel
9adb202a92
* Rework the constexprint to allow operations from low(int64) to high(qword).
...
+ Some initial work on a formaldef which also carries the typinfo of a parameter.
git-svn-id: trunk@7639 -
2007-06-13 07:41:18 +00:00
florian
a3d906f1ca
- removed several ;;
...
git-svn-id: trunk@7498 -
2007-05-28 15:59:17 +00:00
peter
b09df37cef
* size of secrel32 added
...
git-svn-id: trunk@7421 -
2007-05-22 20:36:39 +00:00
peter
29ffdefacb
* secrel32 relocation support required by dwarf2 under windows
...
git-svn-id: trunk@7172 -
2007-04-25 09:06:36 +00:00
tom_at_work
635117218e
* fix incorrect generation of huge static arrays on 64 bit systems; however, GAS only supports 2^31-1 sized ones
...
git-svn-id: trunk@6382 -
2007-02-08 22:11:27 +00:00
Jonas Maebe
cf508ece4f
* fixed previous commit for -gv
...
git-svn-id: trunk@6267 -
2007-01-29 15:35:12 +00:00
Jonas Maebe
246f75c43a
- removed inlining_procedure global var (artefact from pass_2 inlining)
...
git-svn-id: trunk@6266 -
2007-01-29 15:33:56 +00:00
Jonas Maebe
d85573da18
* dummy assignment to tai_cpu_abstract.Pass1 result to avoid warning
...
git-svn-id: trunk@5789 -
2007-01-02 18:33:57 +00:00
Jonas Maebe
a23fa2e81e
* moved (unfinished) routines related to writing taicpu's to ppu files
...
from x86/aasmcpu to aasmtai and (new) aasmsym, so that when they're
finished they're available for all targets
* added dummy implementation of tai_cpu_abstract.pass1 and pass2 so there
are no more hundreds of warnings on non-x86 about constructing taicpu
instances with abstract methods
git-svn-id: trunk@5787 -
2007-01-02 18:28:05 +00:00
Jonas Maebe
32e06e7a7a
* fixed memory leaks in ppc peephole optimizer
...
git-svn-id: trunk@5569 -
2006-12-11 15:53:30 +00:00
peter
cb246eb781
* Remove dos,strings units, use SysUtils instead
...
* replace split* functions with Extract* functions
* Add Directory caching
git-svn-id: trunk@5102 -
2006-10-30 23:29:35 +00:00
florian
ef7bd58c54
* germanism removed (aktfilepos -> current_filepos)
...
git-svn-id: trunk@5099 -
2006-10-30 22:37:31 +00:00
peter
070b86a512
* order of named sections added
...
* fix debugstart and debugend labels
git-svn-id: trunk@5098 -
2006-10-30 22:34:22 +00:00
florian
85d63d9fa9
* settings refactored
...
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
peter
3078a1927f
* remove ttype
...
* rename old ttype variables *type to *def
* rename resulttypepass to pass_typecheck
* rename pass_2 to pass_generate_code
git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
Jonas Maebe
32390af0f6
+ support for ".reference" and ".no_dead_strip" darwin assembler directivs
...
* use ".reference" to prevent parts of resource string ansistrings from
being dead stripped under Darwin
git-svn-id: trunk@4614 -
2006-09-12 12:07:32 +00:00
Jonas Maebe
670393533b
* tai_symbol no longer derives from tailineinfo, so line number stabs come after
...
symbols instead of before them
git-svn-id: trunk@3675 -
2006-05-25 20:24:07 +00:00
florian
5e51aa7968
* fixed pe flags x86_64
...
* fixed idata for x86_64
git-svn-id: trunk@3112 -
2006-04-01 20:09:13 +00:00
peter
0ec2921bbe
* split newasmsymbol to refasmsymbol and defineasmsymbol
...
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
peter
e7a419cbff
* leb128 support for binary writers
...
git-svn-id: trunk@3049 -
2006-03-26 21:12:33 +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
Jonas Maebe
ab5f5ca15e
* fixed ppc compilation
...
git-svn-id: trunk@2778 -
2006-03-05 22:06:44 +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
florian
e363da694b
+ allow symbols with defined size
...
git-svn-id: trunk@2573 -
2006-02-14 18:32:31 +00:00
Jonas Maebe
2435a7a93c
* finalization sections in shared libraries under Darwin are now run
...
* cleaned up the way the initialisation sections of shared libraries
under Darwin are run
git-svn-id: trunk@2470 -
2006-02-07 14:29:58 +00:00
florian
2ff2918016
* fixed open arrays with dwarf
...
* fixed line info writting for smart linked files
git-svn-id: trunk@2446 -
2006-02-05 20:41:13 +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
6af88cec0f
+ first implementation of dwarf line info generation using .file and .loc, little use with binary writers though ...
...
git-svn-id: trunk@2327 -
2006-01-22 15:59:26 +00:00
florian
b06643a1eb
* tai_const refactored
...
git-svn-id: trunk@2323 -
2006-01-22 12:58:38 +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
tom_at_work
8c8e25353b
* reverted changes from 2214, needs to be split into several commits
...
git-svn-id: trunk@2215 -
2006-01-08 01:03:15 +00:00
tom_at_work
6313a9be7b
* basic code generation for dynamic linking code for ppc64
...
git-svn-id: trunk@2214 -
2006-01-07 22:16:33 +00:00
peter
51b8a4a132
* move stabs generation to a single procedure call from pmodules
...
git-svn-id: trunk@1358 -
2005-10-12 10:35:46 +00:00
peter
edf553a223
* string constants are now array of char until
...
they are converted to a specific string type
git-svn-id: trunk@1254 -
2005-10-02 11:08:58 +00:00
peter
c7f720aa09
* remove wrong check for empty section name. An empty section name is
...
still required to get the start and end debuginfo always included
git-svn-id: trunk@1145 -
2005-09-20 06:33:14 +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
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
florian
6ad3930a5d
* fixed broken powerpc compilation
...
* fixed imm24 constant matching on the arm
git-svn-id: trunk@1074 -
2005-09-11 16:13:55 +00:00
florian
caecabf7ba
+ more arm assembler stuff
...
git-svn-id: trunk@1070 -
2005-09-10 09:30:39 +00:00
peter
375a5add80
* rename al_debug to al_typestabs
...
* first write al_typestabs before other sections
git-svn-id: trunk@1054 -
2005-09-06 06:32:26 +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
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
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
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
6c38093871
* fixed spilling for several ppc instructions which only read registers
...
+ added support for registers in references that get changed (load/store
with update)
2005-02-18 23:37:51 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
b1c8bfc478
+ x86_64 pic draft
2005-02-06 00:05:56 +00:00
peter
79eac1c0b3
* fix [regpara] in intel assembler
2005-01-31 17:07:50 +00:00
peter
1cf3aef0f0
* regalloc bind to instructions need to get real ait_instruction
2004-11-01 10:34:08 +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
f5471aef6e
* more spilling rewrites
2004-10-05 20:41:01 +00:00
peter
8fb3536f6e
* simple regvar support, not yet finished
2004-09-26 17:45:29 +00:00
florian
cf25a973f8
* fixed alignment of variant records
...
* more alignment problems fixed
2004-08-15 13:30:18 +00:00
florian
6368652be2
* fixed several sparc alignment issues
...
+ Jonas' inline node patch; non functional yet
2004-08-14 14:50:42 +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
d2bed9e608
* ignore marker block when checking for empty list
2004-05-23 14:31:05 +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
e678705648
* small x86_64 fixes
2004-04-12 18:59:32 +00:00
florian
74501ae73f
* some alignment issues resolved
...
* compiler doesn't generate anymore instructions not supported by the linux fpe
2004-03-16 22:12:10 +00:00
peter
d4d90841d4
* fix lineinfo broken by valgrind patch
2004-03-15 16:09:03 +00:00
michael
2f26f9ebb4
+ Fix from peter: fixes crash when inlining assembler code referencing local vars
2004-03-15 08:44:51 +00:00
peter
a627c15298
* fix memleak with top_local
2004-03-14 22:47:56 +00:00
peter
55daf96ba7
* disable some debuginfo info when valgrind support is used
2004-03-14 20:10:56 +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
daniel
52dc65fe47
- Removed troublesome writeln statement
2004-02-27 12:13:15 +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
peter
356b3378e8
* tai_const.create_ptr added
2004-02-26 16:16:38 +00:00
Jonas Maebe
71202a141d
* taicpu.is_same_reg_move() now gets a regtype parameter so it only
...
removes moves of that particular register type. This is necessary so
we don't remove the live_start instruction of a register before it
has been processed
2004-02-08 23:10:21 +00:00
Jonas Maebe
9495f77117
- removed taicpu.is_reg_move because it's not used anymore
...
+ support tracking fpu register moves by rgobj for the ppc
2004-02-08 20:15:42 +00:00
peter
1422985ca0
* Change several $ifdef i386 to x86
...
* Change several OS_32 to OS_INT/OS_ADDR
2004-01-31 17:45:16 +00:00
florian
35b8e93073
* fixed more alignment issues
2004-01-30 13:42:03 +00:00
daniel
97e87aaebc
* reginfo now also only allocated during register allocation
...
* third round of gdb cleanups: kick out most of concatstabto
2004-01-26 16:12:27 +00:00
florian
37454274bc
* fixed several arm floating point issues
2004-01-24 18:12:40 +00:00
florian
d7786f6246
* fixed generic shl/shr operations
...
+ added register allocation hook calls for arm specific operand types:
register set and shifter op
2004-01-23 15:12:49 +00:00
peter
c34c9af5ce
* moved spilling code from taicpu to rg
2004-01-12 16:37:59 +00:00
Jonas Maebe
da74a9fea6
- removed unused methods from old generic spilling code
2003-12-28 16:20:09 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +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
daniel
7061f04355
* Register allocator speed optimizations
...
- Worklist no longer a ringbuffer
- No find operations are left
- Simplify now done in constant time
- unusedregs is now a Tsuperregisterworklist
- Microoptimizations
2003-12-14 20:24:28 +00:00
peter
84b1451a34
* tai_const.create_32bit changed to cardinal
2003-12-08 22:34:24 +00:00
Jonas Maebe
2aba43c797
* completely overhauled and fixed generic spilling code. New method:
...
spilling_get_operation_type(operand_number): returns the operation
performed by the instruction on the operand: read/write/read+write.
See powerpc/aasmcpu.pas for an example
2003-12-06 22:16:12 +00:00
florian
1a87a5ed45
* fixed several arm calling conventions issues
...
* fixed reference reading in the assembler reader
* fixed a_loadaddr_ref_reg
2003-12-03 17:39:04 +00:00
peter
1b0d0ca3c4
* s128real type is not compatible with s80real
2003-12-01 18:43:31 +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
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
peter
48ef24605a
* support scalefactor for opr_local
...
* support reference with opr_local set, fixes tw2631
2003-10-30 19:59:00 +00:00
Jonas Maebe
c1279ba62b
* allow more than 3 args in the spilling routine
2003-10-29 21:06:39 +00:00
peter
5925d38ac7
* support indexing and offset retrieval for locals
2003-10-29 15:40:20 +00:00
mazen
81123566d3
* code reformatted
2003-10-29 14:42:14 +00:00
mazen
2d061f8108
* Splling function devided to sub functions to make it easy to understand.
...
This commit is just to allow easy diffs to validate the migration (hint use -w)
2003-10-29 14:05:45 +00:00
peter
96afb56699
* asmnode.get_position now inserts a marker
2003-10-24 17:39:41 +00:00
peter
4a1ecb07d1
* splitted buildderef and buildderefimpl to fix interface crc
...
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80
* write derefdata in a separate ppu entry
2003-10-22 20:39:59 +00:00
peter
96f9973b46
* taicpu_abstract.oper[] changed to pointers
2003-10-21 15:15:35 +00:00
peter
d0de3b3ea8
* 64k registers supported
...
* fixed some memory leaks
2003-10-17 14:38:32 +00:00
florian
1df13c788c
* fixed some MMX<->SSE
...
* started to fix ppc, needs an overhaul
+ stabs info improve for spilling, not sure if it works correctly/completly
- MMX_SUPPORT removed from Makefile.fpc
2003-10-11 16:06:42 +00:00
peter
fb81b7ebbb
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
...
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
2003-10-10 17:48:13 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
florian
0d3832776f
* first bunch of adaptions of arm compiler for new register type
2003-09-04 00:15:28 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
florian
220e05dd5e
* fixed arm concatcopy
...
+ arm support in the common compiler sources added
* moved some generic cg code around
+ tfputype added
* ...
2003-09-03 11:18:36 +00:00
peter
8cf0c122f4
* remove convert_registers
2003-08-21 14:47:41 +00:00
daniel
cdb8a15f4a
* Some more R_NO changes
...
* Preventive code to loadref added
2003-08-20 20:29:06 +00:00
daniel
63e1b70931
* Notranslation changed into -sr functionality
2003-08-17 20:47:47 +00:00
Jonas Maebe
4f8c390198
* fixed regvars so they work with newra (at least for ppc)
...
* fixed some volatile register bugs
+ -dnotranslation option for -dnewra, which causes the registers not to
be translated from virtual to normal registers. Requires support in
the assembler writer as well, which is only implemented in aggas/
agppcgas currently
2003-08-17 16:59:20 +00:00
peter
52c73e80d1
* start of sparc support for newra
2003-08-11 21:18:20 +00:00
Jonas Maebe
b2cdd72e5c
* always add dummy marker object at the start of an assembler list, so
...
the optimizer can't remove the first object
2003-07-02 16:43:48 +00:00
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +00:00
peter
b42efec29d
* create rtti label using newasmsymboldata and update binding
...
only when calling tai_symbol.create
* tai_symbol.create_global added
2003-05-12 18:13:57 +00:00
peter
f4b818fc1d
* removed funcretn,funcretsym, function result is now in varsym
...
and aliases for result and function name are added using absolutesym
* vs_hidden parameter for funcret passed in parameter
* vs_hidden fixes
* writenode changed to printnode and released from extdebug
* -vp option added to generate a tree.log with the nodetree
* nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
daniel
6aa01a99a9
* Ifdefs around a lot of calls to cleartempgen
...
* Fixed registers that are allocated but not freed in several nodes
* Tweak to register allocator to cause less spills
* 8-bit registers now interfere with esi,edi and ebp
Compiler can now compile rtl successfully when using new register
allocator
2003-04-25 08:25:26 +00:00
florian
47a3437dba
* comp is now written with its bit pattern to the ppu instead as an extended
2003-04-24 13:03:01 +00:00
peter
9ed2ce8c12
* removed some notes/hints
2003-04-22 14:33:38 +00:00
daniel
25059e21b6
+ Implemented the actual register allocator
...
+ Scratch registers unavailable when new register allocator used
+ maybe_save/maybe_restore unavailable when new register allocator used
2003-04-22 10:09:34 +00:00
daniel
86bcea6ef5
* Code generator converted to new register notation
...
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
peter
2b0e576cbe
* tai_const_symbol.createdataname added
2003-01-30 21:46:20 +00:00
daniel
a86b31c4f0
* Another 200301081 fixed
2003-01-21 08:48:08 +00:00
daniel
7b2fd10fb4
* Converted some code in cgx86.pas to new register numbering
2003-01-09 20:40:59 +00:00
daniel
6e507ba483
* Added register conversion
2003-01-09 15:49:56 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
florian
b59b436130
* x86-64 compiles
...
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
peter
8a5d95d911
* symbol count fix merged
2002-12-06 17:50:21 +00:00
carl
64655be168
* memory optimization (3-4%) : cleanup of tai fields,
...
cleanup of tdef and tsym fields.
* make it work for m68k
2002-11-17 16:31:55 +00:00
peter
edbd98176b
* made tasmsymbol.refs private (merged)
2002-11-15 16:29:30 +00:00
peter
bfd72ad5d5
* merged changes from 1.0.7 up to 04-11
...
- -V option for generating bug report tracing
- more tracing for option parsing
- errors for cdecl and high()
- win32 import stabs
- win32 records<=8 are returned in eax:edx (turned off by default)
- heaptrc update
- more info for temp management in .s file with EXTDEBUG
2002-11-15 01:58:45 +00:00
carl
c3bfb968a4
+ NOOPT removed the optinfo field
2002-11-09 15:38:03 +00:00
carl
67486c96c3
* fixes for Delphi 6 compilation
...
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
peter
91b49914f6
* More fixes for cross unit inlining, all tnodes are now implemented
...
* Moved pocall_internconst to po_internconst because it is not a
calling type at all and it conflicted when inlining of these small
functions was requested
2002-08-19 19:36:42 +00:00
peter
98dd65b0f3
* inlining is now also allowed in interface
...
* renamed write/load to ppuwrite/ppuload
* tnode storing in ppu
* nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
florian
2de332fa28
* powerpc compilation fix
2002-08-16 05:21:09 +00:00
peter
8082f79ea6
* first things tai,tnode storing in ppu
2002-08-15 19:10:35 +00:00
peter
425bb45ddc
* renamed current_library to objectlibrary
2002-08-11 14:32:25 +00:00
peter
ac71268ce6
* saving of asmsymbols in ppu supported
...
* asmsymbollist global is removed and moved into a new class
tasmlibrarydata that will hold the info of a .a file which
corresponds with a single module. Added librarydata to tmodule
to keep the library info stored for the module. In the future the
objectfiles will also be stored to the tasmlibrarydata class
* all getlabel/newasmsymbol and friends are moved to the new class
2002-08-11 13:24:10 +00:00
carl
eff31e8524
+ more more more documentation
...
+ first version include/exclude (can't test though, not enough scratch for i386 :()...
2002-08-05 18:27:48 +00:00
peter
4285e99853
* internal linker
...
* reorganized aasm layer
2002-07-01 18:46:20 +00:00
florian
37194d2f61
* fixed more problems with cpubase and x86-64
2002-04-25 16:12:09 +00:00