Commit Graph

19654 Commits

Author SHA1 Message Date
florian
82e6e1eb34 + tempinfo flag ti_no_final_regsync which prevents that the final reg. sync. is emitted
git-svn-id: trunk@34787 -
2016-11-05 23:05:41 +00:00
florian
8c701eaa7b * reset c in dir_include if it will be re-read
git-svn-id: trunk@34786 -
2016-11-05 23:05:39 +00:00
Károly Balogh
37f43d3604 m68k: cleanup of the BuildRefExpression method in the assembler reader
git-svn-id: trunk@34784 -
2016-11-05 19:58:06 +00:00
Károly Balogh
64650261d1 m68k: refactor of the reglist and the regpair support in the assembler reader. also added support for float register lists for FMOVEM
git-svn-id: trunk@34783 -
2016-11-05 18:53:20 +00:00
Károly Balogh
5237a4d5e2 m68k: support register pair operands in assembler reader and writer, as used by some instructions (mainly DIVS/DIVU and friends) so we don't have to hack them as three operand instructions
git-svn-id: trunk@34782 -
2016-11-05 17:07:18 +00:00
Károly Balogh
e0e90fffc4 make rgobj.uses_registers also return true, when the rg never allocated an imreg, but there were direct cpu register allocations. this at least fixes some address regvar trashing on 68k in relation to syscalls' explicit paralocs
git-svn-id: trunk@34777 -
2016-11-03 01:45:34 +00:00
Károly Balogh
57e6cef18b m68k: enabled the mul to shift+sub/add optimizations for 68000
git-svn-id: trunk@34762 -
2016-10-23 23:46:32 +00:00
Károly Balogh
4620d9b22c m68k: when loading from a reference with zero extend, clear the register first, then load, instead of clearing with AND later, because this is faster on slow 68ks and also shorter
git-svn-id: trunk@34761 -
2016-10-23 23:16:03 +00:00
Károly Balogh
41776e9608 m68k: on a '000, optimize CLR.L Dx to MOVEQ #0,Dx which is slightly faster
git-svn-id: trunk@34760 -
2016-10-23 23:10:39 +00:00
Károly Balogh
660432685a m68k: review and some cleanup of the shlshrnode, also add a special case for shifting 64bit values by 1
git-svn-id: trunk@34757 -
2016-10-23 16:46:34 +00:00
florian
781d6f31a8 * more getsupreg(...)<>/=getsupreg(...) replaced by SuperRegisterEqual which is more safe, the former could break as the register could have different register types
git-svn-id: trunk@34746 -
2016-10-20 18:32:23 +00:00
pierre
abaea9959f Fix parameter loading of FPC_CHECKPOINTER to handle correctly references with offsets
git-svn-id: trunk@34743 -
2016-10-18 21:48:59 +00:00
nickysn
e1792e712a * changed the 'size' parameter of fpc_zeromem and fpc_fillmem from ptruint to sizeuint
git-svn-id: trunk@34741 -
2016-10-18 15:42:29 +00:00
florian
502e48541c * properly copy flags of tempinfo
+ write flags of tempinfo in ttemprefnode.printnodedata

git-svn-id: trunk@34738 -
2016-10-16 19:53:14 +00:00
florian
cfd38388ca * formatting so lazarus can handle it
git-svn-id: trunk@34737 -
2016-10-16 19:53:12 +00:00
joost
bf8e3c9264 * Added example to samplecfg, to make clear which path is meant
git-svn-id: trunk@34733 -
2016-10-16 16:50:05 +00:00
florian
cf2a3d8160 + new debug message
* turn off accidently turned on DEBUG_AOPTCPU

git-svn-id: trunk@34731 -
2016-10-16 16:37:51 +00:00
florian
bc73d0914e * TAOptBase.RegInRef compares using SuperRegistersEqual as TAOptBase.RegInOp does for top_reg already
git-svn-id: trunk@34730 -
2016-10-16 16:35:36 +00:00
joost
d08a747c29 * Create fppkg-config files in the new format (v5)
git-svn-id: trunk@34729 -
2016-10-16 15:43:27 +00:00
florian
9c81e90e08 + extension to iso mode: reset/rewrite can take a file name as a second parameter
git-svn-id: trunk@34726 -
2016-10-16 07:55:08 +00:00
florian
fe0ce2f456 * TX86AsmOptimizer.OptPass1MOV should be left, after an optimization has been carried out, instead the outer loop should call it again, resolves issue #30277
git-svn-id: trunk@34724 -
2016-10-15 19:36:18 +00:00
florian
ec54cb2a7a - unit not used anymore
git-svn-id: trunk@34723 -
2016-10-15 17:58:38 +00:00
florian
239c6639d7 + additional debug message
git-svn-id: trunk@34722 -
2016-10-15 17:51:09 +00:00
florian
76961dbc70 * fixes MovOpMov2Op
git-svn-id: trunk@34721 -
2016-10-15 15:03:27 +00:00
florian
e6cea6622e * when checking if a register is used by an operand, compare the super registers
git-svn-id: trunk@34720 -
2016-10-15 15:03:26 +00:00
florian
8e9f4af801 * fixed checking of operands of MovOpMov2Op
* MovOpMov2Op optimization got proper naming

git-svn-id: trunk@34719 -
2016-10-15 15:03:24 +00:00
florian
4109f88e08 * AllocRegBetween always extends the processed register to the whole super register and takes care of this while removing (de)/allocs
git-svn-id: trunk@34718 -
2016-10-15 15:03:23 +00:00
nickysn
ac186eb85d * use sizeuinttype instead of ptruinttype for the array range type in the
structure, created by TVMTWriter.gettabledef

git-svn-id: trunk@34715 -
2016-10-14 13:22:05 +00:00
svenbarth
d4e573c1e3 * fix for Mantis #27349: nested classes might also reside inside records
+ added test

git-svn-id: trunk@34714 -
2016-10-13 20:40:47 +00:00
svenbarth
254be82c43 * revert r34712: the behavior with the class constructors is indeed Delphi compatible. However only one class constructor/destructor per class is allowed no matter how it's named.
git-svn-id: trunk@34713 -
2016-10-13 20:11:35 +00:00
svenbarth
4e5ed5b0e2 Fix for Mantis #30729: don't allow other names for class constructors or destructors than Create and Destroy respectively.
+ added tests

git-svn-id: trunk@34712 -
2016-10-13 19:24:07 +00:00
nickysn
7ee133162c * use OMF section names, starting with dot for the dwarf debug info for
compatibility with the Watcom linker and debugger

git-svn-id: trunk@34708 -
2016-10-12 13:05:12 +00:00
nickysn
501b9481c5 * use .create_nil_codeptr instead of .create_pint(0) for writing the placeholder
address of implementation field in tobjcrttiwriter.gen_objc_cat_methods

git-svn-id: trunk@34705 -
2016-10-10 15:40:10 +00:00
nickysn
9669e5aa00 * use .create_nil_dataptr instead of .create_pint(0) for writing the 'next'
field in tobjcrttiwriter.gen_objc_protocol_list

git-svn-id: trunk@34704 -
2016-10-10 14:03:52 +00:00
Károly Balogh
b8e1151eed atari: add tf_requires_proper_alignment to the atari target
git-svn-id: trunk@34703 -
2016-10-09 22:56:23 +00:00
florian
57ca8647b3 * better peephole optimization tracing
git-svn-id: trunk@34698 -
2016-10-09 13:41:38 +00:00
Jonas Maebe
5efb32285a * fixed alignment for interface RTTI (patch by Alfred, mantis #30182)
git-svn-id: trunk@34695 -
2016-10-09 12:34:01 +00:00
Károly Balogh
51cb5aefbe m68k: use target_info.stackalign to align the stack instead of expecting a hardwired longword alignment. this is required for atari, and beneficial on all '000 targets
git-svn-id: trunk@34666 -
2016-10-08 14:01:32 +00:00
nickysn
657685a8b6 * use sizesinttype instead of ptrsinttype for the index and high parameter of
open arrays/dynarrays/string-like char arrays, etc.

git-svn-id: trunk@34665 -
2016-10-08 13:56:24 +00:00
nickysn
d6007d650a * use tpointerdef.pointer_arithmetic_int/uint_type in tinlinenode.pass_typecheck
for handling inc/dec(pointer, int)

git-svn-id: trunk@34655 -
2016-10-08 12:06:57 +00:00
nickysn
35b0201002 + added an unsigned counterpart to tpointerdef.pointer_arithmetic_it_type (needed by inc/dec)
git-svn-id: trunk@34653 -
2016-10-08 11:45:24 +00:00
nickysn
5501061115 * use sizesinttype instead of ptrsinttype for the $length and $mlength fields,
when creating the $pvmt system type

git-svn-id: trunk@34650 -
2016-10-08 00:48:34 +00:00
nickysn
163d54c33e * emit a sizeint-sized string length for long string constants in the DWARF
debug info, instead of using create_pint

git-svn-id: trunk@34649 -
2016-10-07 22:36:48 +00:00
nickysn
d28963f434 * emit the heap and stack sizes via Tai_const.Create_int_dataptr, instead of
using create_pint

git-svn-id: trunk@34646 -
2016-10-07 20:58:50 +00:00
nickysn
7d15b688e8 * TInterfaceEntry changed to a variant record, that overlays a CodePointer on
top of the IOffset: SizeUInt field, because it is sometimes used as a
  CodePointer (for etStaticMethodResult and etStaticMethodClass) and sometimes
  as a SizeInt and these two types can be of different size in certain i8086
  memory models

git-svn-id: trunk@34645 -
2016-10-07 20:18:02 +00:00
nickysn
bacea005fc * emit a sizeint, not a ptruint for TableCount in tnodeutils.InsertRuntimeInitsTablesTable as well
git-svn-id: trunk@34643 -
2016-10-07 17:21:52 +00:00
Jonas Maebe
233622157c * don't attempt to load the VMT of a niln when taking the address of a
class method (mantis #30706)

git-svn-id: trunk@34641 -
2016-10-07 16:41:32 +00:00
nickysn
16dfb839d8 * emit a sizeint, not a ptruint for TableCount in tnodeutils.InsertResourceTablesTable
git-svn-id: trunk@34638 -
2016-10-07 13:49:48 +00:00
nickysn
7fceb8aa1f * use .Create_sizeuint and sizeuinttype when writing tinterfacetable.EntryCount
git-svn-id: trunk@34635 -
2016-10-06 14:23:37 +00:00
Jonas Maebe
9727f289b1 + tcalo_apply_constalign option to specify that the alignment should be
modified by applying user alignment settings (so it can be only done for
    user-defined data, not not for internally generated data)
   o set this option for user-defined data

git-svn-id: trunk@34633 -
2016-10-06 06:25:05 +00:00