pierre
c654739db9
Change default settings for i8086 compiler when compiled for go32v2 OS, to avoid use of Watcom tools
...
git-svn-id: trunk@39340 -
2018-06-29 09:41:38 +00:00
nickysn
88d9dd23ae
* the 'again' parameter of factor_read_id() changed to 'out' instead of 'var'
...
git-svn-id: trunk@39317 -
2018-06-27 15:59:40 +00:00
nickysn
a38e9ff12e
* if an include file name ends in dot, and the file is not found, also search
...
for the file name without the dot. So, for example, if the code contains
{$I MPAL256.} and 'MPAL256.' is not found, search also for 'MPAL256'
git-svn-id: trunk@39316 -
2018-06-27 14:41:06 +00:00
nickysn
966564aade
- removed 'if assigned(code)' before calling code.free in tcgprocinfo.destroy,
...
since .free already checks for <>nil
git-svn-id: trunk@39312 -
2018-06-27 12:38:58 +00:00
florian
78943ea843
+ patch by J. Gareth Moreton: x86 optimisations for Jcc and SETcc, resolves #33899
...
* optimization also added for i386
git-svn-id: trunk@39307 -
2018-06-25 20:40:05 +00:00
florian
af37ca8563
- remove SetccMovbLeaveRet2SetccLeaveRet optimization, this type of code is not generated anymore for years
...
git-svn-id: trunk@39306 -
2018-06-25 20:40:04 +00:00
florian
1472a81768
* patch by J. Gareth Moreton to unify the x86 assembler optimizer method headers, resolves #33908
...
git-svn-id: trunk@39305 -
2018-06-25 20:13:34 +00:00
florian
4aa0ad6735
* use vmov.xx to load float constants if possible
...
git-svn-id: trunk@39298 -
2018-06-24 12:40:00 +00:00
florian
4f5f3c4a09
+ support for vmov.xx vreg,#imm on arm
...
git-svn-id: trunk@39297 -
2018-06-24 12:39:59 +00:00
svenbarth
a2b58b842b
+ add support for threadvars in records
...
+ added tests
git-svn-id: trunk@39289 -
2018-06-23 13:49:16 +00:00
svenbarth
c3ca96279a
+ add support for threadvars inside classes
...
+ added tests
git-svn-id: trunk@39288 -
2018-06-23 13:49:12 +00:00
svenbarth
019ebe598a
* regenerate msg*.inc files after addition of the message about threadvars inside classes/records without
...
"class" specifier
git-svn-id: trunk@39287 -
2018-06-23 13:49:08 +00:00
svenbarth
0a45d7a774
+ add a message that is used when a threadvar section is started inside a class or record without the "class"
...
specifier
git-svn-id: trunk@39286 -
2018-06-23 13:49:05 +00:00
svenbarth
89f42fcdae
* handle vd_threadvar inside read_record_fields()
...
git-svn-id: trunk@39285 -
2018-06-23 13:49:01 +00:00
svenbarth
ff407c56d9
* extend scanning of $modeswitch to support not only + and -, but also ON and OFF like other switches
...
+ added tests
git-svn-id: trunk@39280 -
2018-06-22 21:29:08 +00:00
nickysn
f036e67d8f
* fixed the reading of OMF groups by the internal linker. Previously, it only
...
worked, when the files had only one group, called 'DGROUP'.
git-svn-id: trunk@39279 -
2018-06-22 17:00:23 +00:00
nickysn
45337b67fe
+ when using the i8086 with section based smartlinking, create OMF section
...
groups, named 'CGROUP' or 'CGROUP_UNITNAME', which include all the code
sections, that need to be put in the same segment
git-svn-id: trunk@39277 -
2018-06-22 15:02:39 +00:00
nickysn
f07658d3dc
* get rid of TOmfRelocation.GetGroupIndex; instead, read the index property of
...
the group object. This adds support for groups, other than DGROUP, when
writing omf relocations.
git-svn-id: trunk@39276 -
2018-06-22 14:29:09 +00:00
nickysn
c8fc7c84c8
* avoid adding a section to a group twice in TOmfObjData.createsection
...
* add all sections, belonging to a group directly inside TOmfObjOutput.AddGroup,
based on the TObjSectionsGroup.members array
git-svn-id: trunk@39275 -
2018-06-21 21:14:54 +00:00
nickysn
8a34bd22b8
* pass a TObjSectionGroup object as parameter to TOmfObjOutput.AddGroup, instead
...
of the group name
git-svn-id: trunk@39273 -
2018-06-21 20:45:52 +00:00
nickysn
d3db9e101a
* don't check for the presence of the group in TOmfObjOutput.AddSegmentToGroup,
...
because, it is no longer possible for it to not be present (all the groups
are added beforehand now)
git-svn-id: trunk@39272 -
2018-06-21 20:33:24 +00:00
nickysn
9a0eca52cb
* changed the type of TOmfObjSection.PrimaryGroup from string to
...
TObjSectionGroup, so instead of holding the group's name, it now points to the
TObjSectionGroup object, from which you can retrieve its name or any of the
other fields and properties it contains
git-svn-id: trunk@39271 -
2018-06-21 16:28:06 +00:00
nickysn
42f06acaeb
+ also create the primary section group and add the newly created section to it
...
in TOmfObjData.createsection
git-svn-id: trunk@39270 -
2018-06-21 16:14:42 +00:00
nickysn
f4e26f382f
+ added an 'index' field to TObjSectionGroup, specifying the index of the group
...
in the object file (similar to TObjSection.index, but for groups, instead of
sections). Set the new index field, when writing .obj files with the internal
omf object writer.
git-svn-id: trunk@39269 -
2018-06-21 15:51:58 +00:00
nickysn
ab47c8b899
+ introduce the omf_section_primary_group function. Use it instead of
...
section_belongs_to_dgroup, to allow sections to belong to groups, other than
dgroup.
git-svn-id: trunk@39268 -
2018-06-21 13:21:53 +00:00
svenbarth
3f96c0baed
* use reverse_longword() instead of reverse_byte(); fixes the management operators of records inside classes on big endian systems
...
git-svn-id: trunk@39265 -
2018-06-20 21:11:19 +00:00
svenbarth
af6f094420
+ add reverse_longword() function that reverses the bit pattern for a longword, just like reverse_byte() and reverse_word() do for Byte and Word respectively
...
git-svn-id: trunk@39264 -
2018-06-20 21:10:19 +00:00
svenbarth
fa0765d131
* regenerate msg*.inc files after addition of the warning for array operators
...
git-svn-id: trunk@39262 -
2018-06-20 19:54:02 +00:00
svenbarth
fa78bb0e89
* warn if the compiler hides an eventual "+" operator overload if modeswitch ArrayOperators is active
...
git-svn-id: trunk@39261 -
2018-06-20 19:53:56 +00:00
svenbarth
7522a34a67
+ add a message that can be used if an internal operator hides an existing operator overload
...
git-svn-id: trunk@39260 -
2018-06-20 19:53:50 +00:00
svenbarth
97acf24290
+ add a new modeswitch ArrayOperators which is set by default in Delphi modes that enables the internal array operators (currently only "+")
...
git-svn-id: trunk@39259 -
2018-06-20 19:53:43 +00:00
svenbarth
9b45f58c0b
+ add flags that allow checking for overloads with isbinaryoverloaded() and isunaryoverloaded() without modifying the passed in node or even checking for normally non-overloadable operators
...
git-svn-id: trunk@39258 -
2018-06-20 19:53:34 +00:00
svenbarth
8536abce8a
* as the management operator feature is not platform specific using a specific define for it aside from a
...
version check is unnecessary, thus remove the FPC_HAS_MANAGEMENT_OPERATOR define and instead check for VER3_0
git-svn-id: trunk@39257 -
2018-06-20 19:00:24 +00:00
svenbarth
ac0322c323
+ add a flags field to the record init RTTI which declares whether
...
a) the current record contains a field with non-trivial initialization
b) and of the parents contains such a field (only relevant for objects and classes)
git-svn-id: trunk@39255 -
2018-06-20 19:00:17 +00:00
svenbarth
61bde67082
+ add method has_non_trivial_init_child() to tdef which provides access to the symtable's
...
sto_has_non_trivial_init flag
git-svn-id: trunk@39253 -
2018-06-20 19:00:11 +00:00
svenbarth
cc153176f3
+ add a new symtable option sto_has_non_trivial_init that is true if the symtable contains a symbol with an
...
Initialize() operator (like sto_needs_init_final this flag is calculated on demand)
* increase PPU version
git-svn-id: trunk@39252 -
2018-06-20 19:00:08 +00:00
svenbarth
80ed66f349
* move calculation of sto_needs_init_final to a separate method do_init_final_check()
...
git-svn-id: trunk@39251 -
2018-06-20 19:00:05 +00:00
nickysn
1631d9ac0a
+ support segments (sections) with a primary group, other than 'DGROUP' in the
...
NASM assembler writer
git-svn-id: trunk@39246 -
2018-06-20 16:14:41 +00:00
nickysn
5eb69edf9e
+ support segments (sections) with a primary group, other than 'DGROUP' in the
...
OMF internal object writer
git-svn-id: trunk@39245 -
2018-06-20 14:57:20 +00:00
florian
0d168796d7
* patch by J. Gareth Moreton: More Peephole optimizations for AND and MOV
...
git-svn-id: trunk@39242 -
2018-06-18 20:50:08 +00:00
nickysn
7fcec8460f
+ parse OMF COMENT records when reading object files and produce error messages
...
for the records that are not supported, but are important for the executable
being produced (such as weak/lazy externals, etc.)
git-svn-id: trunk@39241 -
2018-06-18 14:48:04 +00:00
florian
a0b343a787
* patch by J. Gareth Moreton for less invasive DEBUG_AOPTCPU
...
git-svn-id: trunk@39239 -
2018-06-17 14:56:19 +00:00
nickysn
3aff9d6735
* set MemPos to 0 for each debug .MZ section. This fixes all references within
...
the debug sections themselves.
git-svn-id: trunk@39235 -
2018-06-15 14:49:43 +00:00
svenbarth
22a5e5e4ee
* the symbol parsed for "specialize" does not need to be a type; it could be a procsym or some other type (e.g. a constant of the same name in a third unit)
...
git-svn-id: trunk@39233 -
2018-06-15 13:49:26 +00:00
svenbarth
598ac21791
* if the generic dummy symbol is a procsym (with procdefs added) then this is the symbol that should be resolved to
...
git-svn-id: trunk@39232 -
2018-06-15 13:49:21 +00:00
svenbarth
8423fd7632
* also process procsyms when adding a symtable as they may be generic dummy symbols as well
...
git-svn-id: trunk@39231 -
2018-06-15 13:49:16 +00:00
svenbarth
5510b13975
* ensure that sto_has_generic is set when a generic routine has been parsed
...
git-svn-id: trunk@39230 -
2018-06-15 13:49:03 +00:00
nickysn
84b5265312
+ append a TIS trailer after the debug ELF (this helps the watcom debugger find
...
the beginning of the ELF debug image)
git-svn-id: trunk@39229 -
2018-06-15 13:41:40 +00:00
nickysn
480eedac9f
* fix/pretty print the segment and group list with too long segment/group/class
...
names in the linker map file, produced by the i8086 internal linker
git-svn-id: trunk@39228 -
2018-06-15 00:03:58 +00:00
nickysn
8af56ad6c8
* fixed silly (caused by copy/paste) bug when writing elf section contents in the dwarf debug binary, produced by TMZExeOutput.writeDebugElf
...
git-svn-id: trunk@39227 -
2018-06-14 16:29:25 +00:00
nickysn
11cf2a6996
* emit a warning, when encountering an omf reference to a section, that has been
...
removed due to smartlinking
git-svn-id: trunk@39226 -
2018-06-14 16:22:47 +00:00
nickysn
c41f736958
+ allow MemPos_EndExeSection to be called with an empty section name
...
git-svn-id: trunk@39225 -
2018-06-14 16:17:00 +00:00
nickysn
97365abbcf
+ set the oso_debug flag to dwarf MZ exe sections
...
git-svn-id: trunk@39224 -
2018-06-14 16:15:11 +00:00
nickysn
239fb25179
+ assign an MZExeUnifiedLogicalSegment object to the OMF dwarf sections, so that
...
OMF relocations work on them too
git-svn-id: trunk@39223 -
2018-06-14 16:03:05 +00:00
nickysn
7103e3cb5c
+ set the oso_debug section flags when reading an OMF section, which belongs to
...
the 'DWARF' class
git-svn-id: trunk@39222 -
2018-06-14 15:27:08 +00:00
nickysn
b7bfac11cb
+ enable using the i8086 internal linker with debug info, if the compiler is
...
compiled with -di8086_link_intern_debuginfo
git-svn-id: trunk@39221 -
2018-06-14 15:24:39 +00:00
nickysn
5b47bad32a
* use uppercase object section names in the OMF linker script for matching the
...
dwarf debug sections. This is because they are converted to upper case when
reading (so that we treat omf section names as case-insensitive)
git-svn-id: trunk@39220 -
2018-06-14 15:19:11 +00:00
nickysn
c56ebad183
+ implemented writing of dwarf debug info (by calling writeDebugElf) in
...
TMZExeOutput.writeData. Note that writing i8086 debug info with the internal
linker is still disabled (i.e. it switches to external linking) in
options.TOption.checkoptionscompatibility
git-svn-id: trunk@39219 -
2018-06-14 14:30:59 +00:00
nickysn
29b3ec3fdb
* call MaybeSwapHeader and MaybeSwapSecHeader in TMZExeOutput.writeDebugElf, so
...
the debug ELF file is generated with the correct endianness
git-svn-id: trunk@39218 -
2018-06-14 13:02:54 +00:00
nickysn
b34ab6b279
* The MaybeSwapXXXHeader functions moved from ogelf to the elfbase unit, so they
...
can be used by TMZExeOutput.writeDebugElf as well
git-svn-id: trunk@39217 -
2018-06-14 13:01:08 +00:00
nickysn
daa47f4b7f
+ completed the internal debug ELF writer in TMZExeOutput.writeDebugElf (not
...
enabled yet)
git-svn-id: trunk@39216 -
2018-06-13 16:08:54 +00:00
svenbarth
be0d51d64c
* allow $MinEnumSize, $PackSet and $PackRecords to be used with $Push and $Pop
...
+ added tests
git-svn-id: trunk@39215 -
2018-06-12 19:40:45 +00:00
svenbarth
da672d1344
* instead of using separate booleans use a set to keep track of pending changes for popped settings
...
git-svn-id: trunk@39214 -
2018-06-12 19:40:41 +00:00
nickysn
b3e4ace4e3
* fixed compilation of .com files in the i8086 tiny memory model, when used with
...
section based smartlinking
git-svn-id: trunk@39213 -
2018-06-12 00:38:51 +00:00
nickysn
420a57ddc6
* use upper case OMF section names when using i8086 section-based smart linking
...
git-svn-id: trunk@39212 -
2018-06-12 00:14:08 +00:00
nickysn
b9ab9e5782
+ initial (experimental) implementation of section-based smartlinking for i8086.
...
Use -dI8086_SMARTLINK_SECTIONS to enable.
git-svn-id: trunk@39211 -
2018-06-11 16:56:33 +00:00
nickysn
bfdd75eabf
+ support AB_LOCAL symbols in OMF object files, by implementing support for
...
LPUBDEF/LPUBDEF32 OMF records
git-svn-id: trunk@39210 -
2018-06-11 15:29:23 +00:00
nickysn
188e9ff64a
* only read the first OMF record in TOmfLibObjectWriter.closefile, since we no
...
longer copy the entire file there, so we parse the file only to get the module
name, and the THEADR record should always be the first record in the OMF file.
git-svn-id: trunk@39198 -
2018-06-08 14:21:18 +00:00
nickysn
3f5577077a
* automatically create omf libraries with the smallest page size possible. This
...
greatly reduces the size of i8086 snapshots by keeping the amount of padding
in the library files to the minimum.
git-svn-id: trunk@39195 -
2018-06-07 22:27:47 +00:00
nickysn
345713c1fa
* refactored omf library writing, so that the whole library is written in
...
TOmfLibObjectWrite.WriteLib, after determining the page size (currently still
fixed to 512 bytes). Prerequisite for OMF lib page size optimization.
git-svn-id: trunk@39194 -
2018-06-07 22:11:03 +00:00
nickysn
00c6826896
* moved the PageNum property of TOmfLibObjectWriter.TOmfLibDictionaryEntry to
...
TOmfLibObjectWriter.TOmfLibObjectModule. Instead, store the module index (in
FObjectModules) in TOmfLibDictionaryEntry. This is a prerequisite for
implementing OMF library page size optimization.
git-svn-id: trunk@39193 -
2018-06-07 18:32:50 +00:00
nickysn
4bcfe8dbb2
* refactored TOmfLibObjectWriter, so it keeps all object modules in a
...
TFPObjectList. This will allow implementing omf library page size optimization
later.
git-svn-id: trunk@39192 -
2018-06-07 15:03:05 +00:00
nickysn
af5e6e182d
* the TOmfLibDictionaryEntry class in unit owomflib converted to two identical
...
nested classes inside TOmfLibObjectWriter and TOmfLibObjectReader. The reason
is I'm planning to change the class, used in TOmfLibObjectWriter, but not the
one in TOmfLibObjectReader. And using nested classes keeps things clean and
avoids exposing implementation details in the interface of the owomflib unit.
* also changed 'private' to 'strict private' in the classes of the owomflib to
reduce the risk of interference between TOmfLibObjectWriter and TOmfLibObjectReader.
git-svn-id: trunk@39191 -
2018-06-07 12:24:36 +00:00
Károly Balogh
bbbaa39d79
ncginl: another approach to fix the same issue #39184 supposed to address. keep left.resultdef, but try to make the target def always ordinal of an equal size, so it ends up in a data register on m68k
...
git-svn-id: trunk@39188 -
2018-06-07 06:43:02 +00:00
Károly Balogh
3286623c3c
ncginl: revert the previous commit, it seems to cause some issues on other CPUs
...
git-svn-id: trunk@39186 -
2018-06-07 06:21:46 +00:00
Károly Balogh
42efddc481
ncginl: in inc/dec, do not use left.resultdef as the dest to force a register location, because if left is a pointer, then an ordinal value might get forced into an address register on m68k, which results in a lot of unnecessary register shuffling to complete the operation
...
git-svn-id: trunk@39184 -
2018-06-07 06:04:19 +00:00
Károly Balogh
ddf8788c7a
m68k: try to generate better code from some pointermath - when the left is an address register and we do add/sub, also allocate an address register as temp, also only require that left and right sizes are same, when right is not a const
...
git-svn-id: trunk@39174 -
2018-06-05 16:45:02 +00:00
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