Jonas Maebe
174cea8023
* changed calling of external procedures to be the same as under gcc
...
(don't worry about all the generated stubs, they're optimized away
by the linker)
-> side effect: no need anymore to use special declarations for
external C functions under Darwin compared to other platforms
(it's still necessary for variables though)
2004-05-31 18:08:41 +00:00
Jonas Maebe
69382ab923
* fixed second_sqr_real (mainly for regvars)
2004-05-31 11:57:48 +00:00
Jonas Maebe
7f889b8529
* fixed web bug #3103 : the fpu conversion code couldn't deal with offsets
...
outside the smallint range
2004-05-19 22:26:46 +00:00
florian
e8098f6b71
+ added lib support for Amiga/MorphOS syscalls
2004-05-01 22:05:01 +00:00
Károly Balogh
5345dccb1b
* removed some unneeded parts of do_syscall
2004-04-29 22:18:37 +00:00
Károly Balogh
94c6cdb21a
* little cleanup of the previous commit
2004-04-29 14:36:42 +00:00
Károly Balogh
3c785c3405
+ first implementation of PowerPC/MorphOS do_syscall
2004-04-29 14:01:23 +00:00
florian
c68ea95074
+ syscall directive support for MorphOS added
2004-04-28 15:19:03 +00:00
Károly Balogh
6dbbdea44c
* added correct offsets for PowerPC/MorphOS location support
2004-04-18 23:19:48 +00:00
florian
a7478ee97f
+ location support for arguments, currently PowerPC/MorphOS only
2004-04-18 15:22:24 +00:00
olle
6be3ad0f87
* macos: fixed large offsets in references
2004-04-04 17:50:36 +00:00
peter
6b96b70118
* fixed operator overload allowing for pointer-string
...
* replaced some type_e_mismatch with more informational messages
2004-03-18 16:19:03 +00:00
Jonas Maebe
034725dfff
* fixed missing restoring of true/falselabels in case of explicit
...
integer to same-sized boolean conversions
2004-03-17 20:06:56 +00:00
olle
ea51b18d9b
* bugfix for multiline string constants
2004-03-17 12:03:00 +00:00
florian
8cdd1af070
* fixed ppc compilation
2004-03-06 21:37:45 +00:00
Jonas Maebe
e823822f49
* fixed importing of variables from shared libraries, but disabled
...
PIC support for now. You have to save/restore r31 when you us it! :)
Also, it's not necessary to support the imported variables
2004-03-05 22:17:11 +00:00
florian
5b32162bde
* got entry code fixed
2004-03-02 17:48: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
c5cdc57f1f
+ adding missing log msg: misc fixes
2004-03-02 00:57:01 +00:00
olle
4fecc1a56f
* big transformation of Tai_[const_]Symbol.Create[data]name*
2004-03-02 00:36:32 +00:00
florian
55439e77a2
* fixed make cycle
2004-02-28 16:00:45 +00:00
florian
2e78263814
* fixed syntax error in previous commit
2004-02-28 14:14:44 +00:00
florian
cb904e6cfa
* jmps in inline assembler fixed
2004-02-28 13:24:36 +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
Károly Balogh
81f5f1a45b
+ morphos target added
2004-02-24 16:06:08 +00:00
florian
06a33abebd
* fixed arg. area calculation
2004-02-19 17:07:42 +00:00
florian
be7067445a
* fixed to compile the rtl again
2004-02-11 23:18:59 +00:00
florian
302d2d1442
* compilation fixed
2004-02-09 22:45:49 +00:00
olle
d173a77b9f
* macos: a_load_store fixed to only allocat temp reg if needed, side effect is compiler work for macos again.
2004-02-09 20:44:40 +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
Jonas Maebe
3056a64bf0
* fixed regvars support. Needs -doldregvars to activate. Only tested with
...
ppc, other processors should however only require maxregvars and
maxfpuregvars constants in cpubase.pas. Remember to take scratch-
registers into account when defining that value.
2004-02-08 18:08:59 +00:00
Jonas Maebe
a23c7932cf
* fixed previous commit
2004-02-08 14:50:13 +00:00
Jonas Maebe
169c8f5a3b
* changed an explicit mr to a_load_reg_reg so it's registered with the
...
register allocator as move
2004-02-07 15:01:05 +00:00
peter
8c5b0f7d82
* first try to get cpupara working for x86_64
2004-02-04 22:01:13 +00:00
olle
035c98cad2
* made more in phase with agppcgas.pas
2004-02-04 15:28:24 +00:00
olle
7e373764ba
* uodated header comment
2004-02-04 15:23:28 +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
Jonas Maebe
5a98f00e7f
- removed mov "reg, reg" optimizations, as they are removed by the
...
register allocator and may be necessary to indicate a register may not
be reused before some point
2004-02-03 19:49:24 +00:00
Jonas Maebe
4f957bebff
+ implemented second_prefetch
2004-02-02 21:22:19 +00:00
florian
35b8e93073
* fixed more alignment issues
2004-01-30 13:42:03 +00:00
Jonas Maebe
c006ab8326
- removed double construction of fpu register allocator
2004-01-25 16:36:34 +00:00
Jonas Maebe
df428f7a5d
* fixed allocation of parameters passed by reference for powerpc in
...
callee
2004-01-17 15:55:10 +00:00
florian
541955ad91
+ x86 instruction tables for x86-64 extended
2004-01-15 14:01:18 +00:00
peter
47f08937e4
* use localalign info for alignment for locals and temps
...
* sparc fpu flags branching added
* moved powerpc copy_valye_openarray to generic
2004-01-12 22:11:38 +00:00
olle
6ab944bfcf
* gen of conditional instr updated according to agppcgas
...
* gen of PPCAsm command fixed
2004-01-12 00:08:03 +00:00
Jonas Maebe
4c7c8b9c3a
* fixed mtfsb0 instruction for assembler reader/writer
...
* fixed initialisation of fpscr register to avoid spurious SIGPFE's
(uses mtfsb0 instruction, so added extra define in options.pas to avoid
requiring to start with a cross compiler)
2004-01-10 00:16:20 +00:00
peter
b4159755d2
* fixed too long ie number
2004-01-06 21:37:41 +00:00
Jonas Maebe
bee5b615cf
+ as_darwin assembler type (labels start with L)
...
* never generate register->number mappings for Darwin
* always use real register names for Darwin
2004-01-04 21:18:10 +00:00
Jonas Maebe
9e781b8c7b
+ added log message for last commit
2004-01-04 21:17:51 +00:00
Jonas Maebe
744d6d85b2
*** empty log message ***
2004-01-04 21:12:47 +00:00
Jonas Maebe
c2efd86268
+ integer division-by-zero detection support for ppc
...
+ compilerproc FPC_DIVBYZERO
2004-01-01 17:58:16 +00:00
Jonas Maebe
be0397b1d1
* fixed currency bugs. Int64 currency handling still needs to be
...
rewritten so that it doesn't include conversions to real anymore
though
2003-12-31 22:30:39 +00:00
Jonas Maebe
8be1033511
* (64 bit int) shl/shr (value > 63) := 0
2003-12-31 18:12:23 +00:00
Jonas Maebe
92f038ebec
* fixed saving/restoring of volatile fpu registers under sysv
...
+ better provisions for abi differences regarding fpu registers that have
to be saved
2003-12-29 14:17:50 +00:00
Jonas Maebe
da6a3d28c8
* hopefully fixed tb0454
2003-12-29 11:35:19 +00:00
Jonas Maebe
83323b4955
* fixed tb0350 (support loading address of reference containing the
...
address 0)
2003-12-29 11:13:53 +00:00
Jonas Maebe
8953ed5494
* fixed tnotnode for < 32 bit quantities
2003-12-28 23:49:30 +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
218beb5b32
* handling of open array value parameters fixed
2003-12-28 19:22:27 +00:00
Jonas Maebe
6bab64590e
* hopefully fixed varargs (both Pascal- and C-style)
2003-12-28 15:33:06 +00:00
Jonas Maebe
ffa51d27c3
* hopefully fixed interfaces (untested)
2003-12-28 15:14:14 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +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
florian
7bd24b32c3
+ register allocators are set to nil now after they are freed
2003-12-18 01:03:52 +00:00
florian
2aeea741ed
* fixed ppc compilation
2003-12-16 21:49:47 +00:00
Jonas Maebe
03d03d7ce4
* fixed compilation and simplified fixref, so it never has to reallocate
...
already freed registers anymore
2003-12-15 21:37:09 +00:00
peter
bce5a1e252
* rg[tregistertype] added in tcg
2003-12-12 17:16:17 +00:00
florian
2d6847e5cd
+ short gas register names for smartlinking added
2003-12-10 22:19:27 +00:00
florian
d43895d744
+ initial interface support added
2003-12-10 01:10:25 +00:00
Károly Balogh
c5afdadecb
* fixed compilation with -dppc603
2003-12-10 00:09:57 +00:00
Jonas Maebe
8c11916462
* forgot call to cg.g_overflowcheck() in nppcadd
...
* fixed overflow flag definition
* fixed cg.g_overflowcheck() for signed numbers (jump over call to
FPC_OVERFLOW if *no* overflow instead of if overflow :)
2003-12-09 20:39:43 +00:00
Jonas Maebe
ccc9c93fc7
* support writing of symbols with length 255
2003-12-09 20:09:09 +00:00
Jonas Maebe
d59197ec26
* fixed case bugs
2003-12-09 19:13:32 +00:00
Jonas Maebe
e4312930d1
* fixed usigned overflow checking
2003-12-08 21:18:44 +00:00
florian
2e5c899b81
+ dummy tppcparamanager.create_varargs_paraloc_info added
2003-12-07 22:35:05 +00:00
florian
e63ae3ffee
* a_load_ref_ref isn't allowed to be used in g_stackframe_entry
2003-12-07 21:59:21 +00:00
Jonas Maebe
62394e45d7
* moved count_locals from pstatmnt to symutils
...
* use count_locals in powerpc/cpupi to check whether we should set the
first temp offset (and as such generate a stackframe)
2003-12-07 16:40:45 +00:00
Jonas Maebe
5f2356f45d
* finally fixed int->bool conversion properly
2003-12-07 11:21:05 +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
Jonas Maebe
30cf6be249
* another fix to a_load_ref_reg()
...
+ implemented uses_registers() method
2003-12-06 22:13:53 +00:00
Jonas Maebe
8cb716ca56
* fixed load_ref_reg for source > dest size
2003-12-05 22:53:28 +00:00
Jonas Maebe
255589e12e
* fixed some int<->boolean type conversion issues
2003-12-04 20:37:02 +00:00
Jonas Maebe
4ac4d2cadb
* fixded fixref() regarding the reallocation of already freed registers
...
used in references
2003-11-30 11:32:12 +00:00
Jonas Maebe
08a966d88a
* fixed fpu regallocator initialisation
2003-11-30 10:16:05 +00:00
Jonas Maebe
8ad6133ea3
* more ppc fixes, hello world works again under linuxppc
2003-11-29 22:54:32 +00:00
Jonas Maebe
8cb7f46d9c
* fixed writing of conditional branches which only depend on the value
...
of ctr
2003-11-29 18:17:26 +00:00
Jonas Maebe
d5373d5971
* fixed several ppc assembler reader related problems
...
* local vars in assembler procedures now start at offset 4
* fixed second_int_to_bool (apparently an integer can be in LOC_JUMP??)
2003-11-29 16:27:19 +00:00
Jonas Maebe
6623aaf098
* fixed is_condreg
...
* fixed branch condition parsing in assembler reader
2003-11-23 20:00:39 +00:00
florian
3f1b80bfaa
+ skeleton for bXX crX,<label>
2003-11-23 18:32:42 +00:00
Jonas Maebe
9b38228c7e
* fixed uninitialised var
2003-11-23 17:33:24 +00:00
florian
256299c274
* fixed reading of reg. sets in the arm assembler reader
2003-11-21 16:29:26 +00:00
florian
3b743d766b
* fixed ppc assembler reader
2003-11-15 19:00:10 +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
florian
78e93cec32
* initial revision
2003-11-06 20:48:02 +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
florian
f72431af31
+ copying of open array value parameters to the heap implemented
2003-11-02 17:19:33 +00:00
Jonas Maebe
a624d954f4
* fixed releasing of references (ppc also has a base and an index, not
...
just a base)
2003-11-02 15:20:06 +00:00
mazen
ba59054e84
* rgHelper renamed to rgBase
...
* using findreg_by_<name|number>_table directly to decrease heap overheading
2003-10-31 08:40:51 +00:00
mazen
75f88a5b90
* now uses standard routines in rgHelper unit to search registers by number and by name
2003-10-30 15:02:04 +00:00
florian
1e72dd2d78
* fixed compilation of ppc compiler
2003-10-25 10:37:26 +00:00
florian
05fcae577a
* some ppc stuff fixed
...
* memory leak fixed
2003-10-19 01:34:30 +00:00
florian
5b33ab3643
* fixed more ppc stuff
2003-10-17 15:25:18 +00:00
peter
0939085ab1
* commented out more obsolete constants
2003-10-17 15:08:34 +00:00
peter
ec2e200e42
* fixed ppc build
2003-10-17 14:52:07 +00:00
florian
6a01a7b4a6
* compilation of the powerpc compiler fixed
2003-10-17 01:22:08 +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
olle
3febb20061
* changed to symbolic const for alignment
2003-10-08 21:15:27 +00:00
mazen
7668192be0
+ Alignement field added to TParaLocation (=4 as 32 bits archs)
2003-10-08 14:11:36 +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
99bb20747e
* parent framepointer changed to hidden parameter
...
* tloadparentfpnode added
2003-09-28 17:55:03 +00:00
Jonas Maebe
0bc32cbcd1
+ implemented volatile register queries
2003-09-14 21:56:41 +00:00
Jonas Maebe
5a5b42e927
- removed initialization code
2003-09-14 17:27:56 +00:00
Jonas Maebe
c8863b920b
* fixed some ppc problems
2003-09-14 16:37:20 +00:00
olle
e313062d0b
* max lenght of symbols increased to 255
...
* emitted strings can now contain backslashes
2003-09-12 12:30:27 +00:00
florian
024d08e05a
* ARM compiler compiles again
2003-09-04 21:07:03 +00:00
florian
0d3832776f
* first bunch of adaptions of arm compiler for new register type
2003-09-04 00:15:28 +00:00
peter
98d153815c
* some fixes for ppc
2003-09-03 21:04:14 +00:00
peter
c05cf49b35
* removed empty cga unit
2003-09-03 19:39:16 +00:00
peter
601160a0e3
* powerpc compiles again
2003-09-03 19:35:24 +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
olle
0458038ee5
* minor adjustment
2003-08-24 21:40:12 +00:00
olle
399fac564f
+ added xxx_regname stuff
...
* made the mpw asm writer work again
2003-08-22 12:30:43 +00:00
daniel
7203890d79
* Fixed PowerPC compilation
2003-08-20 14:28:52 +00:00
daniel
8cb289e65f
* Fixed PowerPC compilation
2003-08-19 11:53:03 +00:00
Jonas Maebe
11e98e7d73
* some newra optimizations (eliminate lots of moves between registers)
2003-08-18 21:27:00 +00:00
daniel
86fde70d18
* Improved -sr on PowerPC ATT asm writer
2003-08-18 11:58:14 +00:00
olle
c6f4df63e6
+ cleaning up in proc entry and exit, now calc_stack_frame always is used.
2003-08-18 11:50:55 +00:00
olle
4c5827fbee
+ added asm directive ALIGNING OFF to avoid unexpected aligning by the assembler
2003-08-18 11:47:15 +00:00
daniel
0263254289
* Now -sr works...
2003-08-17 21:11:00 +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
Jonas Maebe
48bc5d09e0
* fixed compilation of ppc compiler with -dnewra
2003-08-17 16:53:19 +00:00
Jonas Maebe
ddcab79323
* set correct localsymtable fixup already in handle_body_start instead
...
of in after_pass1, as it's necessary to get the correct offsets for
the calleeside paralocs (and those are now setup in the generic
handle_body_start)
2003-08-16 14:26:44 +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
Jonas Maebe
2a3c6e0de5
* fixed conversion from signed value to floats if the compiler is
...
compiled with a 1.0.x compiler
2003-08-09 15:28:29 +00:00
Jonas Maebe
b1a903fd4d
* fixed bug in load_fpu_location found by Olle
2003-08-08 19:01:02 +00:00
olle
c2fe8dbd99
* merged macos entry/exit code generation into the general one.
2003-08-08 15:49:24 +00:00
Jonas Maebe
a3cb0d2002
* don't use rg.getregisterint() anymore in g_stackframe_entry_*, because
...
the register colouring has already occurred then, use a hard-coded
register instead
2003-07-23 11:02:23 +00:00
Jonas Maebe
356ee447ba
* "lastsaveintreg" is RS_R31 instead of RS_R27 with -dnewra, because
...
there are no scratch regs anymore
2003-07-23 11:00:09 +00:00
Jonas Maebe
5ab3ea0af5
- disabled some debugging code
2003-07-23 10:58:06 +00:00
Jonas Maebe
d73acd12f6
* fixed newra bug due to the fact that we sometimes need a temp reg
...
when loading/storing to memory (base+index+offset is not possible)
and because a reference is often freed before it is last used, this
temp register was soemtimes the same as one of the reference regs
2003-07-20 20:39:20 +00:00
Jonas Maebe
af61f830d0
* fixed bug in g_concatcopy with -dnewra
2003-07-20 16:15:58 +00:00
peter
1b633246b9
* sparc fixes
2003-07-08 21:23:24 +00:00
Jonas Maebe
d514f33ce4
* committed wrong file previously :(
2003-07-06 21:26:06 +00:00
Jonas Maebe
1846337739
* fixed ppc compiler
2003-07-06 20:25:03 +00:00
Jonas Maebe
117d6934a1
+ first spill_registers implementation, most likely still very buggy
2003-07-06 15:29:06 +00:00
Jonas Maebe
2763f461ce
* VOLATILE_REGISTERS was wrong (it was more or less the inverted set
...
of what it had to be :/ )
2003-07-06 15:28:24 +00:00
Jonas Maebe
cc6a8fbe91
* make sure all registers except r0 are handled by the register
...
allocator for -dnewra
2003-07-06 15:27:44 +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
olle
280c8655e5
* macos: fixes of loading-code
2003-06-18 10:12:36 +00:00
Jonas Maebe
9b645eef82
- removed allocparaloc/freeparaloc, generic ones are ok now
2003-06-17 17:27:08 +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
Jonas Maebe
642d0f923b
* ppc compiles with -dnewra, haven't tried to compile anything with it
...
yet though
2003-06-14 22:32:43 +00:00
Jonas Maebe
d29c96896f
* fixed newra cycle for x86
...
* added constants for indicating source and destination operands of the
"move reg,reg" instruction to aasmcpu (and use those in rgobj)
2003-06-14 14:53:50 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
Jonas Maebe
a5a186799a
+ added supreg_name function
2003-06-13 17:44:44 +00:00
Jonas Maebe
c0a35f3cab
* fixed bugs in case the left node was a LOC_(C)REFERENCE
2003-06-13 17:03:38 +00:00
Jonas Maebe
7ca760912b
* tcginnode.pass_2 doesn't call a helper anymore in any case
...
* fixed ungetregisterfpu compilation problems
2003-06-12 22:09:54 +00:00
Jonas Maebe
709e6da4fa
- removed ALL_INTREGISTERS (only the one in rgobj is valid)
2003-06-12 19:11:34 +00:00
Jonas Maebe
55509b199b
* (de)allocation of registers for parameters is now performed properly
...
(and checked on the ppc)
- removed obsolete allocation of all parameter registers at the start
of a procedure (and deallocation at the end)
2003-06-09 14:54:26 +00:00
Jonas Maebe
68b629fd16
* fixed small bug where a location was set to LOC_CREGISTER instead of
...
LOC_REGISTER
2003-06-08 18:20:02 +00:00
Jonas Maebe
d32d1a711e
- removed duplicate identifier
2003-06-08 18:19:27 +00:00
Jonas Maebe
98c3c2489e
* zero paraloc tregisters, so that the alignment bytes are 0 (otherwise
...
the crc of the ppu files can change between interface and
implementation)
2003-06-08 10:52:01 +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
Jonas Maebe
eb066d3b32
* calculate localsize also in g_return_from_proc since it's now called
...
before g_stackframe_entry (still have to fix macos)
* compilation fixes (cycle doesn't work yet though)
2003-06-04 11:58:58 +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
Jonas Maebe
abc1c5bf2f
* fix for bug in fixref that Peter found during the Sparc conversion
2003-06-01 13:42:18 +00:00
peter
1e7ecac976
* FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results
2003-05-31 15:05:28 +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
marco
1daf2ca476
* register skipping (aligning) for int64 parameters, sys V abi only.
2003-05-30 23:45:49 +00:00
marco
a73b98ea9f
* getfuncretparaloc now uses r3 for highdword and r4 for lo. Doesn't work tho
2003-05-30 22:54:19 +00:00
marco
152b525419
* committed fix that swaps int64 parameters hi and lo.
2003-05-30 22:35:03 +00:00
Jonas Maebe
fefdcc6331
* fixed bug with intregvars
...
* locapara.loc can also be LOC_CFPUREGISTER -> also fixed
rcgppc.a_param_ref, which previously got bogus size values
2003-05-30 18:52:10 +00:00
Jonas Maebe
d321606bc5
* changed scratchregs from r28-r30 to r29-r31
...
* made sure the regvar registers don't overlap with the scratchregs
anymore
2003-05-30 18:49:59 +00:00
Jonas Maebe
413030a90d
* fixed problem where sometimes no register was allocated for the result
...
of an addnode when using regvars
2003-05-30 18:49:14 +00:00
Jonas Maebe
c70f75f1b7
* compile with -dppc603 to not use unaligned float loads in move() and
...
g_concatcopy, because the 603 and 604 take an exception for those
(and netbsd doesn't even handle those in the kernel). There are
still some of those left that could cause problems though (e.g.
in the set helpers)
2003-05-29 21:17:27 +00:00
Jonas Maebe
05a3d71c88
* also free temps in g_concatcopy if delsource is true
2003-05-29 10:06:09 +00:00
Jonas Maebe
ead9de924c
* added missing initialization of rg.usedint{in,by}proc
...
* ppc now also saves/restores used fpu registers
* ncgcal doesn't add used registers to usedby/inproc anymore, except for
i386
2003-05-28 23:58:18 +00:00
florian
a8eb2ab740
* started to fix and clean up the sparc port
2003-05-28 23:18:31 +00:00
Jonas Maebe
1bb8852335
* fixed register numbering bug
2003-05-25 14:32:42 +00:00
Jonas Maebe
4ca3d9a2e9
* fixed shr of 64 bit values by non-immediate value
2003-05-24 19:15:29 +00:00
Jonas Maebe
517e16dae7
* fixed endian problem with tlocation.value/valueqword fields
2003-05-24 16:02:01 +00:00
Jonas Maebe
df5e0bbfc6
* fsqrt is an optional instruction in the ppc architecture and isn't
...
implemented by any current ppc afaik, so use the generic sqrt routine
instead (adapted so it works with compilerproc)
2003-05-24 13:39:32 +00:00
Jonas Maebe
ee71991a7f
* don't save callee-save registers in the caller as well (the ppc code
...
that we generate is slow enough as it is without resorting to doing
double work :)
2003-05-24 13:38:04 +00:00
Jonas Maebe
54cacc63a5
* fixed integer typeconversion problems
2003-05-24 11:59:42 +00:00
Jonas Maebe
5cfedffb9e
* added some missing paralocation size settings
2003-05-24 11:48:40 +00:00
Jonas Maebe
d321a5aa3d
* fixed framepointer storage: it's now always stored at r1+12, which is
...
a place in the link area reserved for compiler use.
2003-05-24 11:47:27 +00:00
Jonas Maebe
74301b9544
* fixed support for nested procedures and more parameters than those
...
which fit in registers (untested/probably not working: calling a
nested procedure from a deeper nested procedure)
2003-05-23 18:51:26 +00:00
peter
5f6de7eb1f
* inherite from tcgprocinfo
2003-05-22 21:34:11 +00:00
florian
9de6468186
+ basic darwin support added
2003-05-20 23:54:00 +00:00
florian
999b859bc8
* fixed calling sequence for subroutines using the aix abi
2003-05-19 12:15:28 +00:00
florian
b1b16c8f09
+ added abi field to tsysteminfo
2003-05-18 15:15:59 +00:00
Jonas Maebe
624819ccb8
* fixed para/localst calculations (note to self: don't commit at
...
extremely late/early hours :)
2003-05-17 14:05:30 +00:00
Jonas Maebe
9055529171
* workaround for nested procedures until Peter fixes it properly :)
2003-05-16 23:15:51 +00:00
Jonas Maebe
d816c6a8c6
* powerpc nested procedure fixes, should work completely now if all
...
local variables of the parent procedure are declared before the
nested procedures are declared
2003-05-16 20:00:39 +00:00
Jonas Maebe
66792ee44e
* adapted for Peter's regvar fixes
2003-05-16 16:26:05 +00:00
florian
137395876d
* fixed last commit, changing lastsaveintreg to r31 caused some strange problems
2003-05-15 22:14:42 +00:00
florian
5f6578729b
* sysv entry code saves r13 now as well
2003-05-15 21:37:00 +00:00
florian
9c507c2da0
* fixed ppc compiler which was broken by Peter's changes
2003-05-15 19:39:09 +00:00
florian
d73c88ce9f
* fixed parameter passing by value of large sets, strings and method pointers
2003-05-12 20:14:47 +00:00
Jonas Maebe
0a392ebf5e
* fixed g_concatcopy
2003-05-12 18:43:50 +00:00
florian
65eba18e20
* fixed passing of small const arrays and const records, they are always passed by reference
2003-05-11 23:19:32 +00:00
Jonas Maebe
7d5a2715f6
* fixed bug with large offsets in entrycode
2003-05-11 20:59:23 +00:00
Jonas Maebe
7fc5c04a14
* fixed bug in second_int_to_bool I introduced previous time
...
(secondpass was being called twice!)
2003-05-11 20:42:08 +00:00
Jonas Maebe
f616bfd3e2
* fixed second_int_to_bool() (but still problem with typecasts used for
...
var parameters, not sure about solution)
2003-05-11 13:06:44 +00:00
Jonas Maebe
b993c4e2db
* fixed shifts
2003-05-11 11:45:08 +00:00
Jonas Maebe
1ff5307e5d
+ op_reg_reg_reg_const_const (for rlwnm)
2003-05-11 11:08:25 +00:00
Jonas Maebe
2c81208d56
* fixed optimizations in a_op_const_reg_reg()
2003-05-11 11:07:33 +00:00
florian
77d8f335aa
* vmtpointer_offset must be adjusted in after_pass1 as well
2003-05-10 23:57:23 +00:00
Jonas Maebe
f64d66fa48
* call inherited after_header as well
2003-05-09 19:00:30 +00:00
Jonas Maebe
5f71d48015
* yet another final fix for second_int_to_real() :) (tested this time)
2003-05-02 15:13:38 +00:00
Jonas Maebe
cfe94be378
* fixed overflow checking form of 64bit add instruction
2003-04-27 11:55:34 +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
Jonas Maebe
92ac35cc37
* fixed 64bit "const - reg/ref" bugs
2003-04-27 11:06:06 +00:00
florian
d4ca538a40
* fixed nested procedures to get them working as before
2003-04-27 10:41:47 +00:00
peter
a5e7f02527
* updated for removed lexlevel
2003-04-27 07:48:05 +00:00
Jonas Maebe
38d7ec6670
* fix to a_op64_const_reg_reg
2003-04-26 22:56:11 +00:00
florian
19946413fe
* fixed setjmp record size
2003-04-26 20:15:22 +00:00
Jonas Maebe
31d94f4f4c
* fixed g_flags2reg
2003-04-26 16:08:41 +00:00
florian
dda473894c
* fixed cmp_reg_reg_reg, cmp operands were emitted in the wrong order
2003-04-26 15:25:29 +00:00
florian
15c0b633ab
* fixed the powerpc to work with the new function result handling
2003-04-26 11:30:59 +00:00
florian
574d50e86b
* fixed tfuncretsym stuff in powerpc specific part
2003-04-25 21:05:22 +00:00
florian
b9c76fcf5e
* stack frame calculations are now completly done using the code generator
...
routines instead of generating directly assembler so also large stack frames
are handle properly
2003-04-25 20:55:34 +00:00
florian
41da381f1a
* fixed a lot of PowerPC related stuff
2003-04-24 22:29:57 +00:00
florian
cca5ca2ab9
* fixed not node
2003-04-24 12:57:32 +00:00
florian
90561d5e71
* symbols which are register identifiers aren't resolved anymore
2003-04-24 12:05:53 +00:00
florian
7ec9711f9a
* fixed several issues with nested procedures
2003-04-24 11:24:00 +00:00
peter
c092e24817
* fixes to get rtl compiled
2003-04-23 22:18:01 +00:00
peter
72ad478f97
* fix compile for ppc,sparc,m68k
2003-04-23 21:10:54 +00:00
florian
0284016ee9
* fixed several issues with powerpc
...
+ applied a patch from Jonas for nested function calls (PowerPC only)
* ...
2003-04-23 12:35:34 +00:00
florian
253df05727
+ added first_ and last_imreg
2003-04-22 11:27:48 +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
Jonas Maebe
44f26523e6
* process para's from first to last instead of the other way round
2003-04-17 18:52:35 +00:00
Jonas Maebe
56132c1a9c
* assembler procedures now again get a stackframe if they have local
...
variables. No space is reserved for a function result however.
Also, the register parameters aren't automatically saved on the stack
anymore in assembler procedures.
2003-04-16 09:26:55 +00:00
Jonas Maebe
fd1056c621
* fixed paralocation for integer var/out parameters
2003-04-16 07:55:07 +00:00
olle
1372a617cb
+ line numbers are now emitted in the assembler code
...
* bug in export and import directive fixed
* made code more in sync with aggas.pas
2003-04-06 21:01:40 +00:00
Jonas Maebe
f51a189be0
* don't generate entry/exit code for assembler procedures
2003-04-06 16:39:11 +00:00
Jonas Maebe
ec71805aa8
* several ppc/generic result offset related fixes. The "normal" result
...
offset seems now to be calculated correctly and a lot of duplicate
calculations have been removed. Nested functions accessing the parent's
function result don't work at all though :(
2003-04-05 21:09:31 +00:00
peter
6a16389f67
* moved generic code from n386cal to ncgcal, i386 now also
...
uses the generic ncgcal
2003-04-04 15:38:56 +00:00
Jonas Maebe
e02ecef001
* fixed linux entry/exit code generation
2003-03-22 18:01:13 +00:00
Jonas Maebe
45b9d59df5
* fixes for new regallocator
2003-03-22 18:00:27 +00:00
Jonas Maebe
5893b9bb19
* fixed R_TOC bugs introduced by new register allocator conversion
2003-03-19 14:26:26 +00:00