florian
57a2fe6ddb
+ some code for PIC support added
2003-10-14 00:30:48 +00:00
florian
b04af27efc
* fixed forgotten commit
2003-10-13 09:38:22 +00:00
florian
c70c620d9b
* some ideas for mm support implemented
2003-10-13 01:58:03 +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
daniel
b2343f4b16
* Register allocator splitted, ans abstract now
2003-10-09 21:31:37 +00:00
florian
b3064de6c0
* fixed full bool evalution and bool xor, if the left or right side have LOC_JUMP
2003-10-08 09:13:16 +00:00
peter
3e6f799919
* fix crash
...
* allow parameter subscription for register parameters
2003-10-07 18:21:18 +00:00
peter
e27d6f67da
* inline supported again, LOC_REFERENCEs are used to pass the
...
parameters
* inlineparasymtable,inlinelocalsymtable removed
* exitlabel inserting fixed
2003-10-07 15:17:07 +00:00
peter
da9f5e2319
* c style array of const generates callparanodes
...
* varargs paraloc fixes
2003-10-05 21:21:52 +00:00
peter
3a92a2a25a
* parameter alignment fixes
2003-10-03 22:00:33 +00:00
peter
6093a37d1b
* fix operand order when a prefix opcode is supplied
2003-10-02 21:17:38 +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
22158bfb99
* updates for inlining
2003-09-30 21:02:37 +00:00
michael
953269fcff
+ Patch from Wiktor Sywula for watcom support
2003-09-30 08:39:50 +00:00
peter
540691bf02
* optimized releasing of registers
2003-09-29 20:58:55 +00:00
peter
47d211aa2e
* fix register leaks
2003-09-28 21:48:20 +00:00
peter
99bb20747e
* parent framepointer changed to hidden parameter
...
* tloadparentfpnode added
2003-09-28 17:55:03 +00:00
peter
eb5429425a
* shortstr compare updated for different calling conventions
2003-09-28 13:35:40 +00:00
peter
116153cf24
* register calling updates
2003-09-28 13:35:24 +00:00
peter
2392f28675
* parameter fixes
2003-09-25 21:28:00 +00:00
peter
e487793919
* %st is st0 in nasm
2003-09-25 14:59:16 +00:00
peter
7c6560ab7f
* fix intf wrapper code
2003-09-25 14:59:06 +00:00
florian
0493cd3d2e
* more x86-64 fixes
2003-09-25 13:13:32 +00:00
peter
72761249f1
* fix global var+offset
2003-09-23 20:37:53 +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
76a53a375d
* varspez in calls to push_addr_param
2003-09-16 16:17:01 +00:00
florian
8f66389b46
* improved arm code generation
...
* move some protected and private field around
* the temp. register for register parameters/arguments are now released
before the move to the parameter register is done. This improves
the code in a lot of cases.
2003-09-11 11:54:59 +00:00
marco
cd5ae5fcc3
* Patch from Peter for paraloc
2003-09-10 08:31:47 +00:00
peter
3a3d710c47
* basics for x86 register calling
2003-09-09 21:03:17 +00:00
daniel
49e539ac8d
* Adding register allocation order
2003-09-09 20:59:27 +00:00
peter
6b06f9e985
* winapi doesn't like pushing 8 byte record
2003-09-09 15:55:05 +00:00
florian
f495796796
* x86 instruction table updated to nasm 0.98.37:
...
- sse3 aka prescott support
- small fixes
2003-09-09 12:54:45 +00:00
peter
64bc322e0e
* fix compilerproc for default=oldfpccall
2003-09-08 18:28:51 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
florian
eb9a587759
+ support of NaN and Inf in the compiler as values of real constants
2003-09-06 16:47:24 +00:00
florian
22f1ff8da4
* merged Wiktor's Watcom patches in 1.1
2003-09-05 17:41:12 +00:00
marco
f34e9e5adf
* applied Peter's patch. Now cycles.
2003-09-05 11:21:39 +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
daniel
ebb1f3a361
* New register coding now mandatory, some more convert_registers calls
...
removed.
2003-08-20 09:07:00 +00:00
marco
4c571efdda
* fix for 2592, pushw imm
2003-08-18 11:52:57 +00:00
daniel
45f9851e87
* Another register allocator bug fixed.
...
* cpu_registers set to 6 for i386
2003-08-17 08:48:02 +00:00
peter
52c73e80d1
* start of sparc support for newra
2003-08-11 21:18:20 +00:00
daniel
42c320cb29
* cs_regalloc renamed to cs_regvars to avoid confusion with register
...
allocator
* Some preventive changes to i386 spillinh code
2003-08-09 18:56:54 +00:00
daniel
a4495e3867
* Made code generator reverse or/add/and/xor/imul instructions when
...
possible to reduce the slowdown of spills.
2003-08-03 20:38:00 +00:00
daniel
4984afb8f0
- Removed cmpop from Ti386addnode.second_addstring
2003-08-03 20:19:43 +00:00
Jonas Maebe
3c5d94dc64
* fixed nil pointer access
2003-07-24 10:45:40 +00:00
peter
32d076480b
* framepointer fixes for sparc
...
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
daniel
268bfcf784
* Fixed register allocator. *Lots* of fixes.
2003-07-06 15:31:20 +00:00
Jonas Maebe
70a5d1e4c2
* create_paraloc_info() is now called separately for the caller and
...
callee info
* fixed ppc cycle
2003-07-05 20:11:41 +00:00
peter
b7d99ec934
* paraloc splitted in callerparaloc,calleeparaloc
...
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
peter
b8ad3514c0
* cycle fixes
2003-06-17 16:51:30 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
peter
e6e43724c3
* freeintparaloc added
2003-06-17 16:34:19 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
Jonas Maebe
67e0cc3ad6
* t386innode.pass_2 already doesn't call a helper anymore since a long
...
time
2003-06-12 22:10:44 +00:00
peter
c036dbe71a
* size para for ungetregisterfpu
2003-06-12 21:12:20 +00:00
peter
a71427cf2c
* fix newra cycle for i386
2003-06-12 18:31:18 +00:00
Jonas Maebe
2b312f6e8c
* fixed compilation problems
2003-06-12 18:12:49 +00:00
peter
a0b9306652
* newra compiles for sparc
2003-06-12 16:43:07 +00:00
Jonas Maebe
db7d93495b
* first small steps towards an oop optimizer
2003-06-08 18:48:03 +00:00
Jonas Maebe
edb2179730
+ added freeintparaloc
...
* ppc get/freeintparaloc now check whether the parameter regs are
properly allocated/deallocated (and get an extra list para)
* ppc a_call_* now internalerrors if pi_do_call is not yet set
* fixed lot of missing pi_do_call's
2003-06-07 18:57:04 +00:00
peter
5b62f5052c
* use setsize for size specifier
2003-06-06 14:41:59 +00:00
peter
5e3532dd01
* needs cpuinfo
2003-06-06 14:41:22 +00:00
michael
03b57479b0
+ Forgot a line in patch from peter
2003-06-06 07:36:06 +00:00
michael
732c769f30
+ Patch to Patch from peter
2003-06-06 07:35:14 +00:00
michael
a762ddbdc2
+ Patch from peter
2003-06-06 07:34:11 +00:00
peter
cd66717210
* updated
2003-06-05 20:58:05 +00:00
peter
d91c880148
* cg.a_load_* get a from and to size specifier
...
* makeregsize only accepts newregister
* i386 uses generic tcgnotnode,tcgunaryminus
2003-06-03 21:11:09 +00:00
peter
4c66ac6cab
* internal changeregsize for optimizer
...
* fix with a hack to not remove the first instruction of a block
which will leave blockstart pointing to invalid memory
2003-06-03 21:09:05 +00:00
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +00:00
Jonas Maebe
6f3e16298a
* function results can now also be regvars
...
- removed tprocinfo.return_offset, never use it again since it's invalid
if the result is a regvar
2003-06-02 21:42:05 +00:00
peter
230a14ff68
* getregisterfpu size parameter added
...
* op_const_reg size parameter added
* sparc updates
2003-06-01 21:38:06 +00:00
peter
1e7ecac976
* FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results
2003-05-31 15:05:28 +00:00
peter
0e11419a26
* load_loc_reg update
2003-05-31 15:04:31 +00:00
peter
414bd5fa22
* more sparc cleanup
...
* accumulator removed, splitted in function_return_reg (called) and
function_result_reg (caller)
2003-05-30 23:57:08 +00:00
Jonas Maebe
e7e2cfe9a4
* a_load_loc_reg now has an extra size parameter for the destination
...
register (properly fixes what I worked around in revision 1.106 of
ncgutil.pas)
2003-05-30 23:49:18 +00:00
peter
047a066711
* procinlinenode removed
...
* aktexit2label removed, fast exit removed
+ tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
0799b0663d
* generic fpc_shorstr_concat
...
+ fpc_shortstr_append_shortstr optimization
2003-05-26 19:38:28 +00:00
peter
c48956fd16
* don't generate align in .bss
2003-05-26 19:37:57 +00:00
peter
c0995a3db1
* fix interrupt stack allocation
2003-05-25 10:26:15 +00:00
peter
437ce7f8a2
* removed some unit dependencies
2003-05-22 21:32:28 +00:00
florian
9de6468186
+ basic darwin support added
2003-05-20 23:54:00 +00:00
peter
abca40f041
* regvar fixes
2003-05-16 14:33:31 +00:00
peter
92ee1804b6
* removed selfpointer_offset, vmtpointer_offset
...
* tvarsym.adjusted_address
* address in localsymtable is now in the real direction
* removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
c577c78366
* removed ret_in_acc, it's the reverse of ret_in_param
...
* fixed ret_in_param for win32 cdecl array
2003-05-13 15:16:13 +00:00
florian
91bbc7bea3
* error when address of an abstract method is taken
...
* fixed some x86-64 problems
* merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
de6916276a
* merged more x86-64/i386 code
2003-04-30 15:45:35 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
a5e7f02527
* updated for removed lexlevel
2003-04-27 07:48:05 +00:00
peter
7f14891d66
* aktprocdef cleanup, aktprocdef is now always nil when parsing
...
a new procdef declaration
* aktprocsym removed
* lexlevel removed, use symtable.symtablelevel instead
* implicit init/final code uses the normal genentry/genexit
* funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
peter
a23e3f0a2f
* add string returns in LOC_REFERENCE
2003-04-26 09:12:55 +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
florian
754a34200a
* merged i386/aasmcpu and x86_64/aasmcpu to x86/aasmcpu
2003-04-25 12:43:40 +00:00
florian
ad2f6d6dab
* merged agx64att and ag386att to x86/agx86att
2003-04-25 12:04:31 +00:00
florian
98d09473e4
* merged i386/cpubase and x86_64/cpubase to x86/cpubase;
...
different stuff went to cpubase.inc
2003-04-25 11:12:09 +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
7f04bb7272
* ncgopt replaces n386opt
2003-04-24 11:19:13 +00:00
florian
2d2b85bacb
- replaced by ncgopt
2003-04-24 11:18:46 +00:00