nickysn
e6a8c058e0
* moved the handling of LIDATA OMF records (which currently only produces a
...
'LIDATA records are not supported' error) to TOmfObjInput.ReadLeOrLiDataAndFixups
git-svn-id: trunk@39171 -
2018-06-04 14:20:07 +00:00
nickysn
02fc2827e0
* TOmfObjInput.ReadLEDataAndFixups renamed ReadLeOrLiDataAndFixups
...
git-svn-id: trunk@39170 -
2018-06-04 14:10:11 +00:00
nickysn
e410a0aefb
+ support OMF FIXUPP records, containing only THREAD subrecords to occur without
...
a preceding LEDATA or LIDATA record (this is allowed by the OMF spec)
git-svn-id: trunk@39169 -
2018-06-04 14:00:36 +00:00
nickysn
002b116322
* use a case statement, instead of 'if', based on the OMF record type in
...
TOmfObjInput.ReadLEDataAndFixups. This is to allow (in the future) handling of
LIDATA records and FIXUPP records without preceding LEDATA/LIDATA. No
functional changes in this commit.
git-svn-id: trunk@39166 -
2018-06-04 13:11:55 +00:00
florian
21d785e41b
* do not unroll loops if the counter variable is accessed outside the current scope
...
git-svn-id: trunk@39163 -
2018-06-03 15:12:48 +00:00
florian
3b3e33d863
+ correctly set var state of addr and frame in raise statements, resolves #33818
...
git-svn-id: trunk@39162 -
2018-06-03 09:31:19 +00:00
florian
f03a396757
* target classic MacOS builds again
...
git-svn-id: trunk@39156 -
2018-05-31 19:31:36 +00:00
nickysn
98634899f2
+ support OMF fixups, determined by thread
...
git-svn-id: trunk@39151 -
2018-05-30 15:49:27 +00:00
nickysn
2fb73de404
+ support reading OMF files with THREAD FIXUPP subrecords; note that fixups,
...
determined by thread are still not yet implemented
git-svn-id: trunk@39150 -
2018-05-30 14:30:54 +00:00
nickysn
ebecfb1ce9
+ added a FFixupThreads property with a TOmfThreads object to TOmfObjInput
...
git-svn-id: trunk@39149 -
2018-05-30 14:10:12 +00:00
nickysn
189cba817e
+ added method TOmfSubRecord_THREAD.ApplyTo, which applies the data in the
...
current thread subrecord to a TOmfThreads object
git-svn-id: trunk@39148 -
2018-05-30 13:52:34 +00:00
nickysn
26e808e155
+ added classes for maintaining the OMF fixup thread state
...
git-svn-id: trunk@39147 -
2018-05-30 13:35:52 +00:00
nickysn
49b414ffee
+ support ugly constructs like 'DD BYTE PTR 5' in the x86 intel syntax inline
...
assembler; these are TP7 and Delphi compatible
git-svn-id: trunk@39143 -
2018-05-29 15:43:08 +00:00
nickysn
54a8d8de58
+ added class for decoding/encoding THREAD OMF subrecords
...
git-svn-id: trunk@39142 -
2018-05-29 15:05:07 +00:00
pierre
b1537a7f40
Add some more debug information to temp-generation when compiled with -dEXTDEBUG
...
git-svn-id: trunk@39141 -
2018-05-28 22:39:21 +00:00
nickysn
052da5c921
* use DW_OP_reg0..DW_OP_reg31 instead of DW_OP_regx in TDebugInfoDwarf.append_seg_reg
...
in case the dwarf register number is 31 or smaller
git-svn-id: trunk@39131 -
2018-05-28 14:21:53 +00:00
svenbarth
f077c7d950
+ add support for Unicode code point constants > $FFFF; they are converted to a surrogate pair so they are in
...
fact a UnicodeString constant
+ added tests
git-svn-id: trunk@39123 -
2018-05-27 14:06:19 +00:00
pierre
a1bbd4c02d
Try to avoid inserting all RTTI symbols into executables on targets not supporting smartlinked sections
...
git-svn-id: trunk@39121 -
2018-05-25 20:44:24 +00:00
nickysn
ad96cf758b
+ emit a DW_AT_address_class dwarf attribute on i8086 for procdefs, indicating
...
their call model (near or far)
git-svn-id: trunk@39120 -
2018-05-25 20:03:15 +00:00
svenbarth
199b5809a3
* optimize "dynarr := dynarr + [elem]" to "Insert(elem, dynarr, High(SizeInt))" and "dynarr := [elem] + dynarr" to "Insert(elem, dynarr, 0)" (we need to do this in the typecheck of taddnode as otherwise the array constructor is already converted)
...
+ added test
* adjusted test for Mantis #30463 as p1 triggers the optimization as well
git-svn-id: trunk@39119 -
2018-05-25 16:03:56 +00:00
svenbarth
85439a0fa0
* also check for nf_assign_done_in_right flag after typechecking the right side
...
git-svn-id: trunk@39118 -
2018-05-25 15:54:41 +00:00
nickysn
22e8763100
+ generate script code for creating the dwarf exe sections when using the
...
internal linker with dwarf debug info enabled on i8086-msdos
git-svn-id: trunk@39117 -
2018-05-25 15:35:17 +00:00
nickysn
f505718e6c
+ started implementing TMZExeOutput.writeDebugElf; nothing is written yet, only
...
the elf header fields are filled with the values, generated by wlink
git-svn-id: trunk@39115 -
2018-05-25 14:20:13 +00:00
nickysn
6bd99b65bf
+ emit DW_AT_frame_base dwarf attributes on i8086. Even though the Watcom
...
Debugger doesn't require them (it uses BP as the frame register by default),
the dwarf spec requires that we emit them on i8086, because we also use
DW_OP_fbreg on i8086.
git-svn-id: trunk@39112 -
2018-05-24 22:49:12 +00:00
nickysn
c5fe78201c
+ emit DW_OP_bregx dwarf ops for local variables and parameters, relative to BP
...
on i8086. This fixes Watcom Debugger not showing them right in memory models,
where DS<>SS (Watcom seems to ignore the DW_AT_segment attribute for register
relative variables, even though we emit it correctly :/ )
git-svn-id: trunk@39111 -
2018-05-24 22:27:11 +00:00
nickysn
855c810c09
+ emit a DW_AT_WATCOM_memory_model dwarf attribute, when compiling for i8086
...
git-svn-id: trunk@39110 -
2018-05-24 21:59:50 +00:00
nickysn
87e1fa8fc7
+ added enum with the values for DW_AT_WATCOM_memory_model
...
git-svn-id: trunk@39109 -
2018-05-24 21:50:55 +00:00
nickysn
dc12d4d789
+ added constants with the watcom dwarf attribute extensions
...
git-svn-id: trunk@39108 -
2018-05-24 21:49:28 +00:00
nickysn
749872aaf7
+ generate DW_AT_segment dwarf attribute for local variables and parameters on i8086
...
git-svn-id: trunk@39107 -
2018-05-24 21:30:37 +00:00
nickysn
217c75f84e
+ generate dwarf DW_AT_address_class attributes for pointer types on i8086
...
git-svn-id: trunk@39106 -
2018-05-24 20:22:59 +00:00
nickysn
76fb8c3afd
* fix for dwarf debug info generation of localsym vars with offset (thx Pierre for spotting this)
...
git-svn-id: trunk@39104 -
2018-05-24 16:31:01 +00:00
nickysn
69fbf0e0d8
* use unaligned constants, when writing the final dwarf arange record on i8086
...
git-svn-id: trunk@39103 -
2018-05-24 15:43:02 +00:00
pierre
a5a6b70658
Add tf_no_pic_supported to go32v2 target (was generating wrong code)
...
git-svn-id: trunk@39102 -
2018-05-23 21:12:56 +00:00
pierre
f80e73eac2
Remove references to sym variable when not set (revealed warning generated when compiling with -O4 option)
...
git-svn-id: trunk@39101 -
2018-05-23 20:45:21 +00:00
pierre
019da9517f
Set return value when calling inherited in ti8086inlinenode.pass_typecheck_cpu
...
git-svn-id: trunk@39100 -
2018-05-23 20:43:40 +00:00
nickysn
5417eb043d
* fix for the encoding of dwarf debug info of local variables, whose base is a
...
register that has a dwarf register number higher than 31
git-svn-id: trunk@39099 -
2018-05-23 15:58:51 +00:00
nickysn
e5de7d0eac
* set all 16/32-bit specific stabs/dwarf register numbers of x86_64-only
...
registers to -1 in x86reg.dat. The values that used to be there weren't used
at all (most were just copies of the 32-bit version of the register). This can
be easily demonstrated by the fact that running 'make regdat' in the compiler
directory doesn't change any of the generated files for i8086/i386/x86_64.
git-svn-id: trunk@39098 -
2018-05-23 15:29:33 +00:00
nickysn
a275d15da2
+ added an i8086-specific column in x86reg.dat for the dwarf register numbers
...
and filled it with the dwarf register mapping, used by Open Watcom (Watcom
also uses this mapping on i386, but we don't need to support their debugger on
i386 for now)
git-svn-id: trunk@39097 -
2018-05-23 15:12:58 +00:00
nickysn
6f44deb557
+ implemented the -Xg option for putting the debug information in a separate
...
file on i8086-msdos and i8086-win16
git-svn-id: trunk@39096 -
2018-05-22 15:33:26 +00:00
nickysn
0a01c0c76f
* autoswitch to writing 32-bit SEGDEF OMF records if there's a need to encode a
...
32-bit segment length
git-svn-id: trunk@39095 -
2018-05-22 14:03:59 +00:00
nickysn
70be0dc6e9
* changed internal error number to make it unique
...
git-svn-id: trunk@39094 -
2018-05-22 13:49:40 +00:00
nickysn
8c842c1337
* changed the type of the 'size' parameter of TOmfObjOutput.AddSegment to
...
TObjSectionOfs instead of aword
git-svn-id: trunk@39093 -
2018-05-22 13:48:55 +00:00
nickysn
f5862efcd4
+ support writing 32-bit LEDATA OMF records
...
git-svn-id: trunk@39092 -
2018-05-22 13:23:56 +00:00
nickysn
99f2f3d4b6
* changed the TObjRelocation.DataOffset and orgsize types to TObjSectionOfs instead of aword
...
git-svn-id: trunk@39091 -
2018-05-22 13:17:35 +00:00
nickysn
dcdfecbf35
* changed internal error number to make it unique
...
git-svn-id: trunk@39090 -
2018-05-22 12:55:53 +00:00
nickysn
a656d98657
* autoswitch to writing 32-bit PUBDEF OMF records if there's a need to encode a
...
32-bit offset
git-svn-id: trunk@39089 -
2018-05-22 12:54:11 +00:00
nickysn
ca50b14e21
* set the omf section size limit to 32-bit for the dwarf debug sections
...
git-svn-id: trunk@39088 -
2018-05-22 12:41:51 +00:00
nickysn
065a7b63d9
* changed the TObjSectionOfs type to be longword on i8086
...
+ introduced the TObjSection.SizeLimit property. This will allow setting
different size limits for different sections (e.g. 32-bit for the dwarf
sections, 16-bit for the regular code and data sections on i8086).
git-svn-id: trunk@39087 -
2018-05-22 09:48:28 +00:00
nickysn
584635c591
+ introduce align_objsecofs; use it to align integers of type TObjSectionOfs
...
git-svn-id: trunk@39086 -
2018-05-22 00:20:21 +00:00
nickysn
f9748e928b
* also changed the type of the 'DataPos' parameter of TObjData.layoutsections to TObjSectionOfs
...
git-svn-id: trunk@39085 -
2018-05-21 16:48:56 +00:00
nickysn
04129b8c6e
+ introduce the TObjSectionOfs type - an unsigned integer, representing an
...
offset in an obj file section on the current platform; equal to PUInt for now,
but will probably change to LongWord on i8086, in order to support 32-bit
sections (needed for dwarf debug info or when linking with 32-bit object files
in a mixed 16-bit/32-bit application, while using the internal linker)
git-svn-id: trunk@39084 -
2018-05-21 16:31:50 +00:00
florian
8f472d5212
* check for more controll flow statements before doing loop unrolling
...
git-svn-id: trunk@39083 -
2018-05-21 15:46:02 +00:00
nickysn
308e439d5d
+ emit segment information in the dwarf debug info for static variables on i8086
...
git-svn-id: trunk@39082 -
2018-05-21 15:30:58 +00:00
nickysn
76ff01beda
+ also emit the non-standard DW_LNE_set_segment watcom extended opcode in the
...
dwarf line info on i8086
git-svn-id: trunk@39081 -
2018-05-21 14:54:11 +00:00
nickysn
9d167dbd2a
+ emit DW_AT_segment attributes in the dwarf debug info for subroutines
...
(DW_TAG_subprogram) on i8086
git-svn-id: trunk@39080 -
2018-05-21 14:40:39 +00:00
svenbarth
4354821f05
* regenerate msg* files after r39078
...
git-svn-id: trunk@39079 -
2018-05-21 08:14:21 +00:00
svenbarth
b7cc225149
* revert r39043 and r39045 which disallow static array constants inside dynamic constants for Delphi modes
...
git-svn-id: trunk@39078 -
2018-05-21 08:13:17 +00:00
nickysn
4aa66d9033
* emit a 32-bit offset for DW_FORM_ref_addr on i8086 (Watcom compatibility)
...
git-svn-id: trunk@39077 -
2018-05-21 01:36:23 +00:00
nickysn
d1cdd8be7c
* do not emit padding bytes after the dwarf arange header on i8086 for
...
compatibility with Open Watcom (also, the dwarf spec is not very clear about
the alignment requirements on segmented architectures, so that's why we do
this by default, instead of putting it behind a -go debug switch)
git-svn-id: trunk@39075 -
2018-05-20 22:50:46 +00:00
nickysn
1a2f364e68
* use 32-bit address_size in the dwarf arange sections on i8086 (for Open Watcom
...
compatibility)
git-svn-id: trunk@39074 -
2018-05-20 21:59:32 +00:00
nickysn
0efb86518b
+ emit dwarf segment information on i8086 in the .debug_aranges section
...
git-svn-id: trunk@39073 -
2018-05-20 21:28:26 +00:00
nickysn
651571c00f
+ added comments, indicating where we emit the address_size and segment_size
...
fields of the dwarf arange header
git-svn-id: trunk@39072 -
2018-05-20 21:21:26 +00:00
nickysn
a12622e06f
* use 1-byte alignment instead of 4-byte alignment for the OMF dwarf sections
...
(otherwise the alignment screws up the dwarf debug info)
git-svn-id: trunk@39071 -
2018-05-20 20:59:39 +00:00
nickysn
b048da4284
+ added the non-standard Open Watcom DWARF extension DW_LNE_set_segment extended
...
opcode constant; not emitted yet; will be needed on i8086
git-svn-id: trunk@39048 -
2018-05-20 12:25:03 +00:00
svenbarth
dcdb151add
* prohibit static array constants inside dynamic array constants for Delphi modes
...
+ added test
git-svn-id: trunk@39045 -
2018-05-20 11:50:27 +00:00
svenbarth
31a9ed573c
* regenerate msg* files after addition of the new message for static array constants inside dynamic array
...
constants
git-svn-id: trunk@39044 -
2018-05-20 11:50:24 +00:00
svenbarth
74ca92b5dc
+ add a message that will be used to complain about static array constants inside dynamic array constants for
...
Delphi modes
git-svn-id: trunk@39043 -
2018-05-20 11:50:21 +00:00
svenbarth
a29a6abc55
+ add support for Delphi's dynamic array constant syntax ("[...]") in Delphi modes
...
git-svn-id: trunk@39042 -
2018-05-20 11:50:19 +00:00
svenbarth
08dd4e5445
+ add support for dynamic array constants
...
+ added test
git-svn-id: trunk@39041 -
2018-05-20 11:50:16 +00:00
svenbarth
2bf5c28077
+ add methods begin_dynarray_const and end_dynarray_const which can be used to emit the data of a dynamic array
...
inbetween
+ add method emit_dynarray_offset to emit a reference to that data with the correct offset
git-svn-id: trunk@39040 -
2018-05-20 11:50:13 +00:00
svenbarth
e863245021
+ add method get_dynarray_symofs to retrieve the platform specific offset of the dynamic array data from its
...
meta data record
git-svn-id: trunk@39039 -
2018-05-20 11:50:11 +00:00
svenbarth
d3d9221c8d
+ add method get_dynarray_header_size to retrieve the size of the dynamic array meta data record
...
git-svn-id: trunk@39038 -
2018-05-20 11:50:09 +00:00
svenbarth
2eac60cd87
* use a unique internal error
...
git-svn-id: trunk@39024 -
2018-05-18 14:43:31 +00:00
nickysn
9a4a61ab97
* automatically switch to external linking (and show message) when requested to
...
generate debug info on the i8086 targets
git-svn-id: trunk@39017 -
2018-05-17 16:11:51 +00:00
nickysn
3e343dff21
+ enable by default the ds_dwarf_omf_linnum debug switch on i8086, since that's
...
the only currently working option for getting source level debugging on
i8086-msdos
git-svn-id: trunk@39016 -
2018-05-17 15:02:34 +00:00
nickysn
20abb13bca
- do not compile in the stabs debug info support for the i8086 target
...
git-svn-id: trunk@39015 -
2018-05-17 14:47:39 +00:00
nickysn
600b460ecd
+ added new debug output option -godwarfomflinnum for generating line number
...
information in OMF LINNUM records, in addition to the DWARF debug information.
This enables source level debugging on i8086-msdos, when using the Open Watcom
Debugger, provided the source was compiled with this option and the external
linker (wlink) was used for generating the executable (the internal linker
does not yet support generating debug information).
git-svn-id: trunk@39014 -
2018-05-17 14:38:50 +00:00
nickysn
3d6d020fca
+ implemented the actual writing of LINNUM OMF records
...
git-svn-id: trunk@39008 -
2018-05-16 17:37:28 +00:00
nickysn
61e6d2afec
+ introduce asd_omf_linnum_line directives; they will be used for writing LINNUM
...
entries in the OMF object format
git-svn-id: trunk@39007 -
2018-05-16 17:05:02 +00:00
nickysn
b80642c384
+ started implementing support for generating Microsoft CodeView debug
...
information. Only enabled on i8086 (for now). Does not do much yet, but
hopefully, soon it'll start emitting line number information for i8086-msdos
that is usable by DOS debuggers.
git-svn-id: trunk@39006 -
2018-05-16 15:25:33 +00:00
nickysn
42164b5c01
+ omf writer: support writing partial LINNUM records (up to 1024 bytes,
...
according to the spec)
git-svn-id: trunk@38995 -
2018-05-15 14:45:22 +00:00
nickysn
2741a30f20
+ added method TOmfSubRecord_LINNUM_MsLink_LineNumberList.Clear
...
git-svn-id: trunk@38970 -
2018-05-10 14:16:29 +00:00
nickysn
0b296ac828
* extracted the parts of the TOmfRecord_LINNUM_MsLink class, which implement a
...
container of TOmfSubRecord_LINNUM_MsLink_Entry objects to a separate class
TOmfSubRecord_LINNUM_MsLink_LineNumberList
git-svn-id: trunk@38968 -
2018-05-10 13:56:11 +00:00
nickysn
718e83954f
* merge duplicate strings in the LNAMES section, when writing OMF object
...
modules. This results in slightly smaller obj files.
git-svn-id: trunk@38967 -
2018-05-10 13:07:32 +00:00
nickysn
fc9d331b42
+ added classes for reading/writing LINNUM OMF records in the Microsoft LINK
...
specific format
git-svn-id: trunk@38959 -
2018-05-09 14:55:34 +00:00
pierre
1a23672e7b
Make sure to set alignment of new temp slot to new value
...
git-svn-id: trunk@38954 -
2018-05-08 21:35:11 +00:00
nickysn
ba2c06a239
+ added class for reading/writing LINNUM (line number debug info) records in the
...
OMF object format
git-svn-id: trunk@38953 -
2018-05-08 16:00:51 +00:00
nickysn
02fb59d3e5
* unified the definition of pushleftright_pocalls on i8086 and i386
...
git-svn-id: trunk@38952 -
2018-05-08 14:27:36 +00:00
svenbarth
a33bf83822
* regenaret msg*.inc after r38941 and r38942
...
git-svn-id: trunk@38945 -
2018-05-07 19:50:24 +00:00
svenbarth
576a50f690
* print used unit scopes
...
git-svn-id: trunk@38944 -
2018-05-07 19:48:26 +00:00
svenbarth
295ca4de4b
* adjust WritePathList() to work with TCmdStrList instead of TSearchPathList (and rename it accordingly)
...
git-svn-id: trunk@38943 -
2018-05-07 19:48:23 +00:00
svenbarth
56f36e6509
+ add a diagnostic mesage for the used unit scopes
...
git-svn-id: trunk@38942 -
2018-05-07 19:48:20 +00:00
svenbarth
aa38d6f831
* adjust text for -FN<x> to include both "namespace" and "unit scope"
...
git-svn-id: trunk@38941 -
2018-05-07 19:48:16 +00:00
svenbarth
11f673a991
* also allow a ";"-separated list of namespaces for -FN
...
+ added test
git-svn-id: trunk@38939 -
2018-05-06 21:16:51 +00:00
nickysn
d9925f7074
- removed pocall_far16 from the supported calling conventions of the i8086
...
code generator
git-svn-id: trunk@38938 -
2018-05-06 15:14:40 +00:00
nickysn
eb95dcb85f
- removed pocall_mwpascal from the supported calling conventions of the i8086
...
code generator
git-svn-id: trunk@38937 -
2018-05-06 14:40:08 +00:00
nickysn
4fbc658184
- removed check for system_i386_wince in i8086's cpupara
...
git-svn-id: trunk@38936 -
2018-05-06 14:30:05 +00:00
nickysn
0a12bc4697
- removed pocall_oldfpccall from the supported calling conventions of the i8086
...
code generator
git-svn-id: trunk@38935 -
2018-05-06 14:07:31 +00:00
nickysn
55ecc7feff
- removed the check for pocall_oldfpccall from ncgutil.gen_save_used_regs and
...
gen_restore_used_regs. This is now handled by get_saved_registers_int in
cpupara.
git-svn-id: trunk@38934 -
2018-05-06 12:41:40 +00:00
svenbarth
ffe788fcad
* regenerate msg{idx,txt}.inc after r38920
...
git-svn-id: trunk@38922 -
2018-05-05 17:23:03 +00:00
svenbarth
7e1a058bb2
* document new -FN<x> option
...
git-svn-id: trunk@38920 -
2018-05-05 17:18:50 +00:00
svenbarth
760e1f3776
* default namespaces are specified using the new -FN<x> option whereby <x> is the namespace to be added to the
...
list of default namespaces
git-svn-id: trunk@38919 -
2018-05-05 17:18:47 +00:00
svenbarth
8bc0b604db
* a symbol might be specified using a partial namespace path as long as the missing part is a namespace symbol,
...
so handle that correctly in try_consume_unitsym()
git-svn-id: trunk@38918 -
2018-05-05 17:18:45 +00:00
svenbarth
35bddf6fb1
* correctly update the (now unregistered) unit symbol if the unit was found with the help of a default namespace
...
(this is needed to trigger the correct creation of the namespace symbols)
git-svn-id: trunk@38917 -
2018-05-05 17:18:42 +00:00
svenbarth
083781bf0c
* keep track if the unit was found by using a default namespace as prefix
...
git-svn-id: trunk@38916 -
2018-05-05 17:18:39 +00:00
svenbarth
99c53abf36
* also take into account default namespace when looking for a unit:
...
if looking for a unit's PPU or source failed (and no explicit name was specified)
then all namespaces are walked in the order they were given in and then first the
PPU is looked for and then the source
git-svn-id: trunk@38915 -
2018-05-05 17:18:37 +00:00
svenbarth
b77b6b001f
+ add a global that will contain all default namespaces passed in as parameters
...
git-svn-id: trunk@38914 -
2018-05-05 17:18:34 +00:00
svenbarth
e7f29e9e28
* also pass the pattern with which the potential unit/namespace symbol had been found to try_consume_unitsym*()
...
git-svn-id: trunk@38913 -
2018-05-05 17:18:31 +00:00
svenbarth
c0dcb505e2
* use the module's filename instead of the passed in name (we assume all units added that way don't use the
...
ability to have a different module name to their filename)
git-svn-id: trunk@38912 -
2018-05-05 17:18:29 +00:00
svenbarth
e59e9e2a0a
* extend tunitsym to be created as registered or not (for now all are created as registered)
...
git-svn-id: trunk@38911 -
2018-05-05 17:18:26 +00:00
nickysn
c530e031b1
* synchronize get_saved_registers_int and get_volatile_registers_int for all
...
calling conventions on i386
* generated code at the caller side for pocall_pascal routines on i386 no longer
assumes the routine destroys all registers (except ebp) - instead now it
assumes that it preserves the ebx,esi,edi and ebp registers. This is
compatible with the pascal calling convention of 32-bit delphi and was already
honoured by FPC on the callee side.
* updated the list of calling conventions that save all registers, used in
tx86callnode.can_call_ref, so it is accurate on all x86 platforms - i8086,
i386 and x86_64.
git-svn-id: trunk@38904 -
2018-05-04 16:16:24 +00:00
nickysn
80a9dab99a
* introduce a case statement, based on the calling convention in i386's
...
tcpuparamanager.get_saved_registers_int
git-svn-id: trunk@38902 -
2018-05-04 15:03:01 +00:00
Jonas Maebe
8da8b956b0
* discard type conversions from/to generic defs for llvm as well
...
git-svn-id: trunk@38864 -
2018-04-28 16:17:45 +00:00
Jonas Maebe
eaafb166ad
* set totypedef correctly when converting @class.classmethod to a procvar
...
of object in FPC mode (for llvm)
git-svn-id: trunk@38863 -
2018-04-28 16:17:41 +00:00
Jonas Maebe
807fcb3371
* support pasbool8 as type for a record field when a record is passed/
...
returned in multiple registers (llvm)
git-svn-id: trunk@38862 -
2018-04-28 16:17:37 +00:00
svenbarth
afbbd22544
- the labtree argument is no longer needed
...
git-svn-id: trunk@38861 -
2018-04-27 21:09:09 +00:00
svenbarth
cfa373a8cf
* fix case of string with ranges as labels
...
+ add test
git-svn-id: trunk@38860 -
2018-04-27 21:06:33 +00:00
Jonas Maebe
52e7678033
* ensure that load nodes only substitute temps in case both references point
...
to the start of their respective temps
git-svn-id: trunk@38859 -
2018-04-27 19:18:59 +00:00
Jonas Maebe
d69ad8fa41
* removed temppos field again from parameter locations: they're not allocated
...
by the temp manager of the current procedure
git-svn-id: trunk@38858 -
2018-04-27 19:18:55 +00:00
nickysn
8a32d7c663
+ also support constants like 'dd [5]' in the intel syntax inline asm (for BP7
...
compatibility)
git-svn-id: trunk@38855 -
2018-04-27 11:21:51 +00:00
nickysn
a8a627f334
- removed the _count_asmdirectives and _count_asmoperators constants from the
...
rax86int unit. Instead, the _asmoperators and _asmdirectives arrays now use
tasmtoken directly as index.
git-svn-id: trunk@38854 -
2018-04-27 11:02:54 +00:00
nickysn
16e0172021
+ partial support for BP7 reference-like inline asm constants
...
git-svn-id: trunk@38850 -
2018-04-26 14:31:13 +00:00
nickysn
d1fc31de94
+ add support for '[' and ']' parenthesis in addition to '(' and ')' in
...
rautils.TExprParse. They behave exactly like '(' and ')'. However, you cannot
nest '(' with ']' and '[' with ')'. This is introduced in order to help
implementing support for BP7 asm constants that are parsed like references,
e.g. 'dd Rec.Str[5]' or 'dd 5[7]'.
git-svn-id: trunk@38849 -
2018-04-26 14:13:30 +00:00
Jonas Maebe
5ca8893987
* fixed temppos of loaded nested variables: invalid rather than the temppos
...
in their parent frame (mantis #33636 )
git-svn-id: trunk@38836 -
2018-04-24 19:28:20 +00:00
nickysn
74f5436563
* also replaced the 3 boolean output parameters of tx86intreader.BuildConstSymbolExpression with a set
...
git-svn-id: trunk@38833 -
2018-04-24 15:40:37 +00:00
nickysn
e05c0d0168
* replaced the 3 boolean input parameters of tx86intreader.BuildConstSymbolExpression with a set
...
git-svn-id: trunk@38832 -
2018-04-24 14:59:39 +00:00
nickysn
9a6e490699
* changed the 'register' and 'cdecl' calling conventions on i8086, so they don't
...
modify the SI and DI registers. For 'register', this makes it compatible with
Borland C++'s __fastcall calling convention, while 'cdecl' becomes compatible
with Borland C, Microsoft C and Watcom C.
git-svn-id: trunk@38824 -
2018-04-23 16:12:16 +00:00
Jonas Maebe
3da67019e5
* fixed llvm compiler compilation after r38814 (crashes in "make cycle", but
...
that was already the case before)
git-svn-id: trunk@38815 -
2018-04-22 20:40:19 +00:00
Jonas Maebe
4686f61002
* keep track of the temp position separately from the offset in references,
...
so that they can still be freed after the reference has been changed
(e.g. in case of array indexing or record field accesses) (mantis #33628 )
git-svn-id: trunk@38814 -
2018-04-22 17:03:16 +00:00
Jonas Maebe
3e8cd7d4c9
* after making a copy of a vo_has_local_copy parameter, only release
...
the old location as a temp in case it was a reference
git-svn-id: trunk@38813 -
2018-04-22 17:03:11 +00:00
Jonas Maebe
ad73453e64
* fixed alignment of threadvars (used uninitialised field value)
...
git-svn-id: trunk@38812 -
2018-04-22 17:03:07 +00:00
nickysn
518cdf9674
* replaced the saved_XXX_registers arrays with virtual methods inside
...
tcpuparamanager, very similar to the existing get_volatile_registers_XXX. The
new methods are called get_saved_registers_XXX, where XXX is the register
type ("int", "address", "fpu" or "mm")
git-svn-id: trunk@38794 -
2018-04-19 21:22:16 +00:00
nickysn
bd3d35f2da
+ add support for passing 32-bit values in a pair of registers in
...
tcg8086.a_load_const_cgpara. This fixes passing const longint parameters in
dx:ax when using the register calling convention on i8086.
git-svn-id: trunk@38785 -
2018-04-18 15:40:09 +00:00
nickysn
a73aabcc39
* support loading longint in dx:ax when using the 'register' calling convention
...
on i8086. This is compatible with Borland C++ 3.1's _fastcall. Note that
passing parameters in multiple registers is not yet implemented, so using this
will cause internal errors, but these will be fixed later (and the 'register'
calling convention was never officially supported on i8086).
git-svn-id: trunk@38784 -
2018-04-18 15:36:55 +00:00
nickysn
91707deba7
* changed the registers, used by the 'register' calling convention on i8086 to
...
ax,dx,bx instead of ax,dx,cx, because that makes it more compatible with
Borland C++ 3.1's _fastcall calling convention
git-svn-id: trunk@38783 -
2018-04-18 13:46:56 +00:00
nickysn
bbc364b245
* inline asm fix for accessing record variables when using the unitname (e.g.
...
'mov ax, unitname.varname.fieldname')
git-svn-id: trunk@38755 -
2018-04-12 16:35:21 +00:00
pierre
d12ba4d37d
Regenerated Makefile's after addition of ppas and ppaslink script removal in rev 38745
...
git-svn-id: trunk@38749 -
2018-04-12 15:21:49 +00:00
pierre
e13b04a5c0
Add missing executables in distclean, ppcavr, ppcsparc64 and cross-compilers ppcrossXXX
...
git-svn-id: trunk@38744 -
2018-04-12 15:03:36 +00:00
pierre
79730fe479
Fix compilation error after introduction of po_hasnearfarcallmodel
...
git-svn-id: trunk@38734 -
2018-04-11 20:09:05 +00:00
nickysn
42ebdbe277
+ introduce po_hasnearfarcallmodel (specifies that the near/far call model was
...
specified explicitly). This will be useful, when we implement an automatic
call model selection optimization.
git-svn-id: trunk@38732 -
2018-04-11 12:31:09 +00:00
Jonas Maebe
1f9d518c57
* support for non-ASCII widechar constants (mantis #31605 )
...
* also improved type checking for converting constant strings to integers
in MacPas mode
git-svn-id: trunk@38730 -
2018-04-10 19:24:15 +00:00
nickysn
17823821ca
* make procedures and functions, declared in the interface part of a unit in an
...
i8086 far code memory model to be 'far' even in {$F-} mode. This is TP7
compatible.
git-svn-id: trunk@38728 -
2018-04-10 15:37:28 +00:00
nickysn
dcdd498524
+ allow far procedures and functions in the tiny, small and compact i8086 memory
...
models. Even though, they generate less efficient code, they are useful when
interacting with external APIs (e.g. declaring callbacks for the Win16 API).
git-svn-id: trunk@38726 -
2018-04-10 13:26:14 +00:00
nickysn
55386ba547
+ show whether a procedure or function is far in tprocdef.customprocname
...
git-svn-id: trunk@38725 -
2018-04-10 13:23:06 +00:00
florian
5dda0f5c74
* patch by Pierre to fix warnings which prevent cross building
...
git-svn-id: trunk@38719 -
2018-04-09 19:01:02 +00:00
pierre
e7d724981c
Replace $notes off/on by $push/$notes off/$pop to avoid getting note messages if notes are not on at start of unit compilation
...
git-svn-id: trunk@38718 -
2018-04-09 09:45:19 +00:00
florian
f08d3fdf8f
* moved execution weight calculation into a separate pass, so the info is available already available before the code generation pass if needed
...
git-svn-id: trunk@38717 -
2018-04-08 20:51:27 +00:00
Jonas Maebe
cb7730a423
* fixed execution order of implicit finalization and class destructors: first
...
the latter, then the former
git-svn-id: trunk@38716 -
2018-04-08 15:41:00 +00:00
florian
bd27b7635b
* also in case of constref make_not_regable with ra_addr_taken must be called, later on in pass_1 this happens anyways
...
* for in loops can generate temp. refs as loop counter, so when checking of the address of the for counter is taken, we have to check for a load node
git-svn-id: trunk@38692 -
2018-04-05 20:09:40 +00:00
nickysn
e1d0e7572e
* i8086 TP7 compatibility fixes, related to obtaining procedure addresses:
...
o The @ and Addr() operators in TP or Delphi mode can now be applied to both
near and far procedures and they always produce a CodePointer, regardless of
the call model of the procedure.
o Ofs() and Seg() can now also be applied to both near and far procedures.
o The @ and Addr() operators in non-TP/Delphi modes, as well as the procedure
name itself in TP/Delphi modes now can be applied to both near and far
procedures and produce a near or a far procvar.
git-svn-id: trunk@38691 -
2018-04-05 15:09:12 +00:00
florian
42d6e81c33
* made message about subroutines not being inlined a note instead of a hint, see also #33515
...
git-svn-id: trunk@38690 -
2018-04-05 09:51:25 +00:00
florian
0fd0e356e1
+ new flag ra_different_scope: used if a node tree is marked as non-regable if a variable is accessed from a different scope
...
git-svn-id: trunk@38689 -
2018-04-04 21:39:47 +00:00
florian
c59bd8c29a
+ calculate loop unrolling using node_count_weighted which takes care of nodes generating no code
...
* optimized unrolling calculation
git-svn-id: trunk@38688 -
2018-04-04 21:39:46 +00:00
florian
512328deee
* include loop unrolling in -O3, as it is done carefully, it is beneficial on average
...
git-svn-id: trunk@38687 -
2018-04-04 21:39:44 +00:00
florian
fff6e0ecdb
* unroll more aggressively
...
git-svn-id: trunk@38686 -
2018-04-04 21:39:42 +00:00
nickysn
58ead31f49
* optimized ofs(proc) on i8086, so it only loads the offset in all memory models
...
git-svn-id: trunk@38682 -
2018-04-04 15:26:47 +00:00
nickysn
c7503ca291
+ introduced tabstractprocdef.ofs_address_type - the address type, generated for
...
ofs()
git-svn-id: trunk@38681 -
2018-04-04 15:16:42 +00:00
nickysn
6929af07b7
+ added flag tcnf_proc_2_procvar_get_offset_only
...
git-svn-id: trunk@38680 -
2018-04-04 14:48:12 +00:00
nickysn
99a1cf89b3
+ print convnodeflags in printnodeinfo
...
git-svn-id: trunk@38679 -
2018-04-04 13:20:41 +00:00
nickysn
4a3a64d8f4
+ print addrnodeflags in printnodeinfo
...
git-svn-id: trunk@38678 -
2018-04-04 12:48:52 +00:00
nickysn
dadd5568db
+ override set_labelsym_resultdef for i8086 and set a near pointer resultdef if
...
the anf_ofs flag is set
git-svn-id: trunk@38677 -
2018-04-04 12:34:21 +00:00
nickysn
109fb279f6
* moved the initialization of the resultdef for labelsyms in the typecheckpass
...
of taddrnode to a virtual method taddrnode.set_labelsym_resultdef. No
functional changes.
git-svn-id: trunk@38676 -
2018-04-04 12:09:15 +00:00
florian
c46cbc8411
* do not issue a hint of compiler procs are not inlined, resolves #33515
...
git-svn-id: trunk@38675 -
2018-04-03 21:39:47 +00:00
nickysn
3318703ece
* moved nf_typedaddr to addrnodeflags (anf_typedaddr)
...
git-svn-id: trunk@38671 -
2018-04-03 16:41:01 +00:00
nickysn
213e61eae5
+ introduce the anf_ofs address node flag - indicates that the node was
...
generated by ofs()
git-svn-id: trunk@38670 -
2018-04-03 15:28:27 +00:00
nickysn
c9aecb8e94
* also compare convnodeflags in ttypeconvnode.docompare
...
git-svn-id: trunk@38669 -
2018-04-03 15:03:40 +00:00
nickysn
da609779d2
* simplify ttypeconvnode.printnodeinfo by making use of the fact that
...
write/writeln now can print enums
git-svn-id: trunk@38668 -
2018-04-03 14:49:31 +00:00
nickysn
539d4cb68a
+ introduced taddrnodeflags (empty for now)
...
git-svn-id: trunk@38667 -
2018-04-03 14:33:41 +00:00
florian
25c5ee2fc3
* patch by J. Gareth Moreton to fix vectorcall (no effect) for linux,
...
resolves #33184 and #33542
git-svn-id: trunk@38663 -
2018-04-02 21:14:26 +00:00
Jonas Maebe
4da6039f40
* simplify empty-dynamic-string-to-pointer (non-p(wide)char) type conversions
...
so that they cannot result in "cmp const, const" at the assembler level
(mantis #33548 )
git-svn-id: trunk@38662 -
2018-04-02 18:35:00 +00:00
florian
088af633ba
Fix casing, bug ID #38660
...
git-svn-id: trunk@38660 -
2018-04-02 08:53:31 +00:00
florian
f986933d46
* the references of records passed by value can be kept in registers
...
git-svn-id: trunk@38659 -
2018-04-01 19:00:34 +00:00
nickysn
c3483d1274
* make near/far procs/procvars compatible only with their matching (near vs far)
...
pointer type on i8086
git-svn-id: trunk@38646 -
2018-03-29 15:59:58 +00:00
nickysn
85ca504f4a
* make near and far procedures/procvars incompatible with each other
...
git-svn-id: trunk@38645 -
2018-03-29 15:39:54 +00:00
nickysn
0b66419e8b
* use tasbtractprocdef(resultdef).addresstype instead of voidcodepointertype in
...
tcgtypeconvnode.second_proc_to_procvar. In the future (it's not implemented
yet), this will allow taking the address of near procedures (which would then
produce a near procvar) in i8086 far code memory models.
git-svn-id: trunk@38644 -
2018-03-29 15:11:14 +00:00
Károly Balogh
e9ca615924
r38636 changed the PPU format, but didn't bump the version. lets bump
...
git-svn-id: trunk@38639 -
2018-03-27 19:54:48 +00:00
nickysn
c665866517
+ introduce the tcnf_proc_2_procvar_2_voidpointer flag (for now it is only set,
...
but not used)
git-svn-id: trunk@38638 -
2018-03-27 16:15:06 +00:00
nickysn
3e9b9451b4
* copy the new convnodeflags field in ttypeconvnode.dogetcopy
...
git-svn-id: trunk@38637 -
2018-03-27 15:58:53 +00:00
nickysn
6ad786f8ef
+ introduce ttypeconvnodeflags (empty for now)
...
git-svn-id: trunk@38636 -
2018-03-27 15:33:50 +00:00
florian
1497b64804
* the temp. locations created by cse were not properly cleanup up, this patch fixes this
...
git-svn-id: trunk@38624 -
2018-03-25 15:55:34 +00:00
nickysn
3b70fc628c
+ override tabstractprocdef.getcopyas for i8086, so it preserves the po_far
...
option (so that for far procedures, a far procdef is created)
git-svn-id: trunk@38601 -
2018-03-22 23:22:26 +00:00
nickysn
7a7e09982b
+ show whether a procdef is far in tprocvardef.GetTypeName
...
git-svn-id: trunk@38599 -
2018-03-22 22:57:34 +00:00
nickysn
23250a2ead
+ allow declaring near and far procvars in all i8086 memory models. Only simple
...
procvars can be declared near or far. Methodpointers/nested proc vars, etc
must still follow the default calling model of the current memory model. Note
that this feature isn't TP7 compatible (TP7 doesn't allow near procvars at
all), but is common to 16-bit C compilers and is quite useful for calling
external code (e.g. for far calling BIOS or some other real mode API entry
points from any memory model, etc.)
git-svn-id: trunk@38595 -
2018-03-22 17:13:30 +00:00
nickysn
48b57c2f9a
* use is_proc_far(procdefinition) instead of the current memory model to
...
determine whether to issue a near or a far call in ti8086callnode.do_call_ref.
This will allow adding support for near and far procvars in any memory model.
git-svn-id: trunk@38594 -
2018-03-22 17:07:15 +00:00
Károly Balogh
626dc172ee
arm-netbsd: append -N to the command line. lets figure out later if this is the right solution here
...
git-svn-id: trunk@38590 -
2018-03-22 00:43:32 +00:00
Károly Balogh
5e8e9efd83
arm-netbsd: use HF ABI, needs proper alignment
...
git-svn-id: trunk@38589 -
2018-03-22 00:42:43 +00:00
florian
fa3ee68004
o patch by Dávid Pethes: Fixes for compilation with nasm 2.10 and higher on Win64:
...
* disable generation of RVA and SECREL32 symbols (according to comment in taiconst_type, they are win32 only)
* use lowercase cpu names (it was changed from case-insensitive names sometime after 2.10)
git-svn-id: trunk@38579 -
2018-03-20 21:55:01 +00:00
florian
71e71ad267
* fix currency division on non x86 32 bit targets
...
* disable fix for #33439 during bootstrapping with 3.0.x, as 3.0.x cannot compile the currency division without the fix above
git-svn-id: trunk@38558 -
2018-03-17 22:44:44 +00:00
florian
35d49f804c
* search also the "lib" path variants on x86-64 if the "lib64" ones are not
...
found, some distros use lib instead of lib64 for x86-64
git-svn-id: trunk@38557 -
2018-03-17 21:58:24 +00:00
florian
b2825f2467
* scale constants if possible before currency multiplications to avoid overflows, resolves #33439
...
git-svn-id: trunk@38555 -
2018-03-17 21:33:07 +00:00
florian
aa4af19027
* set localalignmin to 4 on x86_64-win64, there is no reason to leave it at 8 (same as linux)
...
* adapt tasm23b
git-svn-id: trunk@38554 -
2018-03-17 21:30:49 +00:00
florian
1bc322c218
* allow generic parameters as array range, resolves #33414
...
git-svn-id: trunk@38532 -
2018-03-15 21:45:23 +00:00
florian
3e7af376fe
* fix issue #32539 and #20551 by some ugly hack
...
git-svn-id: trunk@38531 -
2018-03-15 20:37:50 +00:00
Károly Balogh
054ef133f9
netbsd/arm: default to EABI
...
git-svn-id: trunk@38530 -
2018-03-15 13:44:54 +00:00
florian
b9417cc51e
* missing skiplabel added, resolves #33423
...
git-svn-id: trunk@38520 -
2018-03-13 18:45:32 +00:00
nickysn
602dd31a45
+ added a warning for using cs/ds/es/ss segment overrides in inline assembly on
...
the x86_64 target
git-svn-id: trunk@38517 -
2018-03-13 14:41:21 +00:00
nickysn
daf13d8750
* print a "Cannot use local variable or parameters here" error (instead of
...
internal error) in case of expressions that add two local variables using the
[expr1[expr2]] syntax
git-svn-id: trunk@38514 -
2018-03-13 12:25:54 +00:00
florian
a66016026b
* handle bitpacked booleans more efficiently
...
git-svn-id: trunk@38509 -
2018-03-12 22:05:34 +00:00
florian
8b0bbdcaab
* fix flag subregs after r38206
...
git-svn-id: trunk@38502 -
2018-03-11 20:30:11 +00:00
florian
9b18e39c81
* enable Lea2AddBase and Lea2AddIndex in TX86AsmOptimizer.PostPeepholeOptLea as we have flag tracking now
...
* some flag allocations fixed
git-svn-id: trunk@38501 -
2018-03-11 20:30:09 +00:00
florian
d86ffb9bfb
+ tcg.a_op_loc_reg
...
+ optimized tx86addnode.second_ordinal for x86
git-svn-id: trunk@38500 -
2018-03-11 16:32:26 +00:00
florian
5fbecc5501
+ use TX86AsmOptimizer.OptPass1SHLSAL on x86-64
...
git-svn-id: trunk@38499 -
2018-03-11 14:35:22 +00:00
florian
47927f053a
* factored out TX86AsmOptimizer.OptPass1SHLSAL
...
git-svn-id: trunk@38498 -
2018-03-11 14:35:19 +00:00
pierre
24bf28e126
Fix compilation with -dEXTDEBUG
...
git-svn-id: trunk@38497 -
2018-03-10 22:05:38 +00:00
pierre
65ba2733e3
Remove overflow check that cannot happen because of types
...
git-svn-id: trunk@38496 -
2018-03-10 22:04:56 +00:00
pierre
ba000bec89
Generate error if CR field of F var is zero, as it leads to invalid instruction for conditional branching
...
git-svn-id: trunk@38495 -
2018-03-10 22:03:45 +00:00
pierre
9e3a6368cb
Generate error if CR field of C var is zero, as it leads to invalid instruction for conditional branching
...
git-svn-id: trunk@38494 -
2018-03-10 22:02:29 +00:00
pierre
269849dd59
Update cgsize2string (EXTDEBUG only function)
...
git-svn-id: trunk@38493 -
2018-03-10 21:59:22 +00:00
florian
11ef1d17c2
* fix register allocation for MovOp2Op and PushPushPopPop2MovMov
...
* fix MovOp2Op for ST/STS
* fix register book keeping for MovMov2Movw
git-svn-id: trunk@38492 -
2018-03-10 21:53:55 +00:00
florian
9fc0f28ae4
* handle movw in TCpuAsmOptimizer.RegInInstruction
...
git-svn-id: trunk@38491 -
2018-03-10 21:53:54 +00:00
florian
ee252d0ecd
+ allocate real registers properly in tcgavr
...
git-svn-id: trunk@38490 -
2018-03-10 21:53:52 +00:00
florian
61660375ce
+ AVR PeepHoleOptPass1Cpu makes use of TAOptObj.RemoveCurrentP to track register usage properly
...
git-svn-id: trunk@38489 -
2018-03-10 21:53:50 +00:00
florian
ae950956af
+ TAOptObj.*PeepHoleOpts* check if p is really assigned
...
+ TAOptObj.RemoveCurrentP
git-svn-id: trunk@38488 -
2018-03-10 21:53:48 +00:00
florian
63ffb02b34
+ Mov2Nop
...
git-svn-id: trunk@38487 -
2018-03-10 21:53:46 +00:00
florian
93a0cef65d
* improved OpCp2Op
...
git-svn-id: trunk@38486 -
2018-03-10 21:53:45 +00:00
florian
52cb8fbb98
+ AddAdc2Add
...
+ SubSbc2Sub
git-svn-id: trunk@38485 -
2018-03-10 21:53:43 +00:00
florian
3a81ccf48b
* simplify tcgavr.a_op_reg_reg_internal
...
git-svn-id: trunk@38484 -
2018-03-10 21:53:41 +00:00
florian
5e200cad89
* write correct proc name when giving a hint that a procedure is not inlined.
...
git-svn-id: trunk@38480 -
2018-03-10 10:39:10 +00:00
nickysn
c0b7aec2c4
* fix inline assembly of segment:localvar with the internal asm writer on x86
...
git-svn-id: trunk@38475 -
2018-03-09 15:36:59 +00:00
nickysn
77c782c89b
* when adding OPR_LOCAL with OPR_REFERENCE in tx86intreader.AddReferences, add
...
the offsets correctly:
1) localconstoffset is added with constoffset
2) localsymofs is added with ref.offset
git-svn-id: trunk@38470 -
2018-03-09 14:17:19 +00:00
nickysn
68be282507
+ support adding an OPR_REFERENCE to a OPR_LOCAL in the x86 intel syntax asm
...
reader; this fixes stuff like 'mov ax,cs:localvar[5]'
git-svn-id: trunk@38457 -
2018-03-08 14:32:31 +00:00
florian
78878f59b1
+ generic TAOptObj.AllocRegBetween
...
- removed x86 specific AllocRegBetween
git-svn-id: trunk@38445 -
2018-03-07 22:17:35 +00:00
nickysn
6e79c8ba86
+ support adding an OPR_LOCAL to a OPR_REFERENCE in
...
tx86intreader.AddReferences(); this allows things like mov ax,[cs:[local]] to
work
git-svn-id: trunk@38444 -
2018-03-07 17:31:25 +00:00
nickysn
d3cb61b651
* refactored tx86intreader.AddReferences to use a pair of case statements,
...
depending on the combination of operand types; this is done, so that adding
OPR_LOCAL with OPR_REFERENCE operands can be supported later.
git-svn-id: trunk@38443 -
2018-03-07 16:43:39 +00:00
pierre
2c20431a32
Regenerated after: Add more missing -T options
...
git-svn-id: trunk@38427 -
2018-03-06 10:05:33 +00:00
pierre
46d83d296b
Add more missing -T options
...
git-svn-id: trunk@38426 -
2018-03-06 10:05:02 +00:00
pierre
6f9a1a77fd
new msg*.inc files after: Add missing arm/i8086 targets
...
git-svn-id: trunk@38421 -
2018-03-05 22:28:10 +00:00
pierre
ed15a50562
Add missing arm/i8086 targets
...
git-svn-id: trunk@38420 -
2018-03-05 22:26:58 +00:00
pierre
5fe20f3f9d
Add an explicit comment inside help pages
...
git-svn-id: trunk@38419 -
2018-03-05 22:08:42 +00:00
florian
208c2cce52
* fix case table detection for thumb
...
git-svn-id: trunk@38418 -
2018-03-05 21:44:19 +00:00
pierre
554c0c5a2a
Avoid to access past length of string in last commit
...
git-svn-id: trunk@38417 -
2018-03-05 21:43:28 +00:00
pierre
01154e1f55
Also discard lines beginning with # for multiline messages
...
git-svn-id: trunk@38416 -
2018-03-05 21:36:37 +00:00
Károly Balogh
77b97abe61
arm-netbsd: regenerated the required Makefiles
...
git-svn-id: trunk@38413 -
2018-03-05 15:44:49 +00:00
Károly Balogh
dbb91b5ef0
arm-netbsd: added platform define and dummy rtl files so the build passes for this platform. port not functional yet
...
git-svn-id: trunk@38412 -
2018-03-05 15:38:46 +00:00
florian
b24eb3cce7
* x86_64-linux uses now pascal init code
...
git-svn-id: trunk@38409 -
2018-03-04 18:22:04 +00:00
florian
6d5ce55232
* unified def creation for open arrays
...
git-svn-id: trunk@38408 -
2018-03-04 17:59:05 +00:00
florian
23722a2f95
* correctly negate 8 bit values on avr, resolves #33322
...
git-svn-id: trunk@38407 -
2018-03-04 16:28:52 +00:00
florian
c230f81719
+ support for <dyn. array>+<dyn. array>, resolves #30463
...
git-svn-id: trunk@38406 -
2018-03-04 16:12:43 +00:00
marco
f0042a4719
* vcmppd hardcoded primitives like vcmpeqpd.
...
* required increasing maxinfolen to 9
git-svn-id: trunk@38404 -
2018-03-03 23:32:54 +00:00
marco
f21a141144
* mantis #32001 , add 32 vcmpps variants.
...
git-svn-id: trunk@38403 -
2018-03-03 23:10:03 +00:00
nickysn
2cee948b72
+ support segment overrides in inline asm references to local variables or parameters on x86
...
git-svn-id: trunk@38392 -
2018-03-01 17:59:57 +00:00
nickysn
df6a870873
* print an "invalid segment override expression" error message in case a segment
...
override uses an invalid (non-segment) register in the x86 inline asm reader
(both for intel and att syntax)
git-svn-id: trunk@38391 -
2018-03-01 15:34:16 +00:00
florian
61053ead34
+ optimize is operator if used on sealed classes as proposed in #30097
...
git-svn-id: trunk@38387 -
2018-02-28 22:09:24 +00:00
nickysn
c93c15429d
+ introduce tx86intreader.SetSegmentOverride(); using it everywhere adds more
...
checks for duplicated segment overrides (which cause a warning in TP mode and
an error in all the other compiler modes)
git-svn-id: trunk@38384 -
2018-02-28 17:16:50 +00:00
nickysn
6f8abde786
+ support [const+[ref]] in the x86 intel syntax asm reader
...
git-svn-id: trunk@38383 -
2018-02-28 16:24:45 +00:00
nickysn
8ffde52974
+ also support [expr1]+[expr2] for adding references in the x86 intel syntax asm reader
...
git-svn-id: trunk@38381 -
2018-02-28 15:48:48 +00:00
florian
2385c47c28
* compilation on x86-64 fixed
...
git-svn-id: trunk@38370 -
2018-02-27 21:54:12 +00:00
svenbarth
0e5a598b6a
* don't use a vecnode to convert a dynamic array or an array constructor to a pointer as that will lead to problems with range checking if the array should be empty; fixes run of tarray12 with -Cr
...
git-svn-id: trunk@38368 -
2018-02-27 21:43:21 +00:00
florian
8c5606b41d
+ support mmx shifting
...
git-svn-id: trunk@38367 -
2018-02-27 21:40:12 +00:00
florian
e523865b07
* do not take the size of an open array, resolves #33230
...
git-svn-id: trunk@38366 -
2018-02-27 21:08:07 +00:00