Commit Graph

6039 Commits

Author SHA1 Message Date
florian
b52cee6639 * fixed ppc inlining stuff
* fixed wrong unit writing
  + added some sse stuff
2003-12-21 19:42:42 +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
florian
9fd5217032 * some x86-64 compilation fixe 2003-12-20 12:38:51 +00:00
daniel
d84b7d0743 * Some work to restore the MMX capabilities 2003-12-19 22:08:44 +00:00
mazen
e0303f16a7 * new TRegister definition applied 2003-12-19 14:38:03 +00:00
florian
78aeec22ca * arm compiler compilation fixed 2003-12-18 17:06:21 +00:00
florian
7bd24b32c3 + register allocators are set to nil now after they are freed 2003-12-18 01:03:52 +00:00
Tomas Hajny
73bd91bfc3 * fixed incorrect error message 2003-12-17 22:50:42 +00:00
peter
a529392b93 * register call fix 2003-12-17 21:59:59 +00:00
peter
bc4f29e15c * don't insert dealloc before alloc of the same register 2003-12-17 21:59:05 +00:00
florian
87b24ee42c * forgot a commit 2003-12-16 22:36:19 +00:00
florian
77f0eff7db * better inheritence of procinfo flags of inlined procedures 2003-12-16 22:09:31 +00:00
florian
2aeea741ed * fixed ppc compilation 2003-12-16 21:49:47 +00:00
florian
2258e941af + inlined procedures inherit procinfo flags 2003-12-16 21:29:24 +00:00
daniel
23aa8e1cda * Automatic conversion from integer constants to pointer constants is no
longer done except in Delphi mode
2003-12-16 09:41:44 +00:00
florian
f041463abf * improved register allocation of generic a_param_const and a_param_ref 2003-12-15 21:39:39 +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
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
e60da116b0 * More microoptimizations 2003-12-15 16:37:47 +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
cb201089ea * fixed range check error 2003-12-14 22:42:54 +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
378f8aab70 * USEOPT to override NOOPT for 1.0.x 2003-12-14 22:41:46 +00:00
daniel
f8e49e98be * Register calling disabled again 2003-12-14 20:51:17 +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
f61ae5bf62 * disable optimizer again for 1.0.x 2003-12-14 20:20:14 +00:00
peter
b052265ecb * also check currnet dir when searching source files 2003-12-14 18:13:18 +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
83abfdc39d * check unit name when expected unitname > 8 chars 2003-12-12 19:42:21 +00:00
peter
bce5a1e252 * rg[tregistertype] added in tcg 2003-12-12 17:16:17 +00:00
peter
6091cd2824 * don't give warnings for shortstring vecnodes 2003-12-12 15:42:53 +00:00
marco
9b3b94883b * always generate RTTI patch from peter 2003-12-12 12:09:40 +00:00
florian
69dbf59679 * staticlib extension for powerpc fixed 2003-12-11 19:06:21 +00:00
florian
6793170b72 * HASGLOBALPROPERTY define introduce 2003-12-11 18:15:06 +00:00
florian
f7418d3286 * fixed external smartlinking 2003-12-11 17:53:03 +00:00
florian
2d6847e5cd + short gas register names for smartlinking added 2003-12-10 22:19:27 +00:00
Jonas Maebe
8da316cf21 * override tblocknode.destroy so all statements are freed sequentially
instead of recusively.
2003-12-10 20:31:40 +00:00
peter
41bf3e473c * int64 shl/shr > 63 returns 0 2003-12-10 17:28:41 +00:00
peter
7685cf9c78 * fix range error with tai_const 2003-12-10 17:13:22 +00:00
peter
5090185909 * global property support for fpc modes 2003-12-10 16:37:01 +00:00
mazen
23f1b2c49e * improve hadlign %hi and %lo operators 2003-12-10 13:16:35 +00:00
Károly Balogh
eec59028e3 * m68k register tables 2003-12-10 02:39:33 +00:00
Károly Balogh
4050f10698 * initial revision 2003-12-10 02:30:58 +00:00
Károly Balogh
a6ab5f0207 * fixed logs 2003-12-10 02:22:59 +00:00
Károly Balogh
913e0aaef6 * initial revision 2003-12-10 02:07:35 +00:00
florian
96000de6d9 * variants and interfaces on powerpc released 2003-12-10 01:54:44 +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
e9eff10134 + support for evaluating qword constant expressions (both arguments have
to be a qword, constants have to be explicitly typecasted to qword)
2003-12-09 21:17:04 +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
marco
89a84c4d9d * base-file instead of base_file 2003-12-09 19:54:59 +00:00
Jonas Maebe
da6811ed58 * fixed and optimized in-node with constant smallset
* some register usage optimisations.
2003-12-09 19:14:50 +00:00
Jonas Maebe
d59197ec26 * fixed case bugs 2003-12-09 19:13:32 +00:00
mazen
247effd0cc + added uses_registers overloaded method for sparc 2003-12-09 09:44:22 +00:00
peter
57b4d5a0b9 * paralength is private again 2003-12-08 22:37:28 +00:00
peter
b3bc562249 * base_file instead of b 2003-12-08 22:37:04 +00:00
peter
1260eed8fd * again procvar fixes 2003-12-08 22:35:28 +00:00
peter
fb2a8b2b12 * don't check varstate for left of vecnode for normal arrays 2003-12-08 22:35:06 +00:00
peter
84b1451a34 * tai_const.create_32bit changed to cardinal 2003-12-08 22:34:24 +00:00
peter
fa52c0e3a0 * don't allow duplicate uses
* fix wrong circular dependency
2003-12-08 22:33:43 +00:00
Jonas Maebe
e4312930d1 * fixed usigned overflow checking 2003-12-08 21:18:44 +00:00
Jonas Maebe
fd8625f3eb * if there are assertions, include pi_do_call in procinfo.flags 2003-12-08 21:17:12 +00:00
peter
1d11c6d651 * line break in uses unit 2003-12-08 21:04:08 +00:00
peter
aa67951cf4 * copy loopflags 2003-12-08 19:29:21 +00:00
florian
dd8f11e8e1 * fixed ldm/stm arm assembler reading
* fixed a_load_reg_reg with OS_8 on ARM
  * non supported calling conventions cause only a warning now
2003-12-08 17:43:57 +00:00
peter
52ffda0bc4 * varargspara is left-right, so adding paraitems needs insert
instead of concat
2003-12-08 16:34:23 +00:00
peter
cea1da4a1e * fix loading of word/byte to real 2003-12-08 15:35:00 +00:00
mazen
3884537785 + support for native sparc assembler reader 2003-12-08 13:02:21 +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
f3d82160b1 * fixed some more bugs which only showed up in a ppc cross compiler 2003-12-07 19:19:56 +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
24fe6134a0 * fixed typo found by Charlie 2003-12-07 16:28:30 +00:00
Jonas Maebe
5c7dba9167 * fixed g_rangecheck64 so it works again for big endian 2003-12-07 15:00:45 +00:00
Jonas Maebe
d564bd6027 * go to the next character after consuming a "%" 2003-12-07 14:03:37 +00:00
Jonas Maebe
eb803d4ad1 * fixed ansistring/widestring results: deallocate result reg only after
it has been stored to memory, as the storing itself may require extra
    results (e.g. on ppc)
2003-12-07 12:41:32 +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
062e03528e + allocate volatile registers around calls to procedures declared with
"saveregisters" on non-x86 processors
2003-12-06 22:11:47 +00:00
florian
bfe452936f * reverted Peter's alloctemp patch; hopefully properly 2003-12-06 01:15:22 +00:00
Jonas Maebe
8cb716ca56 * fixed load_ref_reg for source > dest size 2003-12-05 22:53:28 +00:00
peter
d2cca3fe56 * missing handle_calling_convention() 2003-12-04 23:27:49 +00:00
peter
1407a03ff1 * remove redundant calls to add_edge_used 2003-12-04 23:27:32 +00:00
Jonas Maebe
255589e12e * fixed some int<->boolean type conversion issues 2003-12-04 20:37:02 +00:00
mazen
82f816233d + added support for spac assembler reader 2003-12-04 10:46:19 +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
bd07b65cfd * don't turn off debuginfo when line info is requested 2003-12-03 17:45:36 +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
e3beb78184 * exitlabel for inline procs 2003-12-02 21:23:34 +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
a567970402 * fixed several arm related problems 2003-11-30 19:35:29 +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