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
a75ef67bfd
* properly fixed assigned() mess (by handling it separately in ncginl)
...
-> all assigned()-related tests in the test suite work again
2003-12-31 20:47:02 +00:00
Jonas Maebe
8be1033511
* (64 bit int) shl/shr (value > 63) := 0
2003-12-31 18:12:23 +00:00
Jonas Maebe
4aba5c80f1
* fixed C record max alignment
2003-12-31 17:28:19 +00:00
Jonas Maebe
3ff00d31b3
* fixed previous commit for tp and delphi modes
2003-12-30 16:30:50 +00:00
Jonas Maebe
f587f35457
* fixed methodpointer comparing in a generic way (typecast both left and
...
right explicitly to voidpointer), instead of relying on strange
behvaiour or n386addnode.pass_2 (if size of def = 8, only use the first
4 bytes instead of internalerror-ing or so)
2003-12-29 22:33:08 +00:00
florian
a3cd612259
* fixed error message, if a resource file can't be written
2003-12-29 19:31:20 +00:00
Jonas Maebe
b46b7ff792
* integrated hack from 1.0.x so we can parse low(int64) as int64 instead
...
of as double (in 1.0.x, it was necessary for low(longint))
2003-12-29 17:19:35 +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
980efd582d
+ support for currency typed constants if currency=int64. Warning: does
...
not work properly for extreme values if bestreal <= double
2003-12-29 12:48:39 +00:00
Jonas Maebe
7de6463c43
* hopefully fixed bug tb0454 (merged from nppcadd)
2003-12-29 11:37:52 +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
2028eb6b96
+ except handling related nodes now include pi_do_call if necessary
2003-12-28 22:51:18 +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
Jonas Maebe
85e84512fb
* fixed procedures declared as "interrupt" for non-x86
2003-12-28 21:57:43 +00:00
florian
218beb5b32
* handling of open array value parameters fixed
2003-12-28 19:22:27 +00:00
Jonas Maebe
da74a9fea6
- removed unused methods from old generic spilling code
2003-12-28 16:20:09 +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
ae6be6bc0e
* support type convs for write typed
2003-12-27 22:27:55 +00:00
peter
3677577d9f
* check with fileexists() before opening a file
2003-12-27 22:27:24 +00:00
florian
c72e3a8eea
* updated instruction includes from new instruction table
2003-12-26 20:24:03 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +00:00
florian
466744d413
* rtl and compiler compile with -Cfsse2
2003-12-26 13:47:41 +00:00
florian
ace2d682b0
* rtl and compiler compile with -Cfsse2
2003-12-26 13:19:16 +00:00
florian
3d8e1ab1fb
+ fpu<->mm register conversion
2003-12-26 00:32:21 +00:00
florian
dd2bb53aa5
+ possible sse2 unit usage for double calculations
...
* some sse2 assembler issues fixed
2003-12-25 12:01:35 +00:00
peter
e380119e8c
* sparc assembler reader updates
2003-12-25 01:25:43 +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
peter
6b3c925f64
* don't lowercase enumnames
2003-12-24 20:51:11 +00:00
florian
6d3d97e845
* first fixes to compile the x86-64 system unit
2003-12-24 01:47:22 +00:00
florian
f84979f02d
* x86-64 compilation fixed
2003-12-24 00:33:10 +00:00
florian
7887af7c75
* rg unified for i386/x86-64
2003-12-24 00:12:57 +00:00
florian
9c476ba5f1
- delete parameter in cg64 methods removed
2003-12-24 00:10:02 +00:00
peter
12aade4e16
* register calling is now default for i386
2003-12-23 23:22:35 +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
46769ccfcb
* don't generate rtti for errordef
2003-12-23 22:13:26 +00:00
peter
ed708a0650
* more byte->word
2003-12-23 19:52:55 +00:00
florian
d1116fb7f1
+ second_floataddsse implemented
2003-12-23 14:38:07 +00:00
peter
e6d9331341
* overflow for instruction counters
2003-12-22 23:11:41 +00:00
peter
f2d2c4c496
* fix rangecheck error
2003-12-22 23:11:15 +00:00
peter
2fb059e289
* use low(longint) instead of $8000000
2003-12-22 23:10:21 +00:00
peter
0734904796
* only report unreleased imaginary registers
2003-12-22 23:09:34 +00:00
peter
8fe15f4c99
* removed unused checkobject method
2003-12-22 23:08:59 +00:00
peter
8ef3b3b9c0
* extcycle
2003-12-22 22:34:35 +00:00
peter
a0c611cbb5
* deref implementation after implementation units are loaded and
...
numbered
2003-12-22 22:15:43 +00:00
peter
545c1b82d5
* fix write pointerconst
2003-12-22 22:15:13 +00:00
peter
cc8d2226ae
* made decrease_degree working, but not really fixed
2003-12-22 22:13:46 +00:00
florian
6170faf334
* fixed some x86-64 issues
2003-12-22 19:00:17 +00:00
florian
b5e4c01ef2
* sysv calling conventions enabled for powerpc-linux
2003-12-21 21:20:58 +00:00
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