Commit Graph

21211 Commits

Author SHA1 Message Date
Jeppe Johansen
3e2be29030 Make sure to align at the end of the .text, in case .data bytes will be placed there in flash.
git-svn-id: trunk@39442 -
2018-07-12 18:52:19 +00:00
nickysn
9272bf59b2 + added x86 (i8086, i386 and x86_64) intrinsics fpc_x86_get_cs/ss/ds/es/fs/gs
for getting the value of x86 segment registers

git-svn-id: trunk@39433 -
2018-07-11 14:19:40 +00:00
florian
d4c65cdac4 * better register de-allocation after CWD/CWB
git-svn-id: trunk@39413 -
2018-07-07 21:38:42 +00:00
florian
4f580f7878 + add missing exit as mentioned by J. Gareth Moreton in #33754
git-svn-id: trunk@39408 -
2018-07-07 14:53:56 +00:00
florian
0eea2141f6 * patch by J. Gareth Moreton: clarity in directive conflict error messages, resolves #33754
git-svn-id: trunk@39407 -
2018-07-07 14:46:01 +00:00
florian
96e92527e9 * constant folding of not must check if the deftype is really an orddef, resolves #33696
git-svn-id: trunk@39406 -
2018-07-07 14:17:41 +00:00
pierre
6cab9fd7db Add replacement of $GCSECTIONS for shared libraries
git-svn-id: trunk@39403 -
2018-07-07 07:22:51 +00:00
svenbarth
441fc2fab6 * also parse postfix operators after parsing a _STRING token (required for class functions on type helpers for String)
+ added tests

git-svn-id: trunk@39399 -
2018-07-06 15:57:11 +00:00
marco
2a80eb3fdd * patch from #31920, pass gc-sections to .so's
git-svn-id: trunk@39392 -
2018-07-06 08:17:10 +00:00
nickysn
ff2fff365f + added x86 compiler intrinsics fpc_x86_sti and fpc_x86_cli, which generate the
'sti' and 'cli' instructions

git-svn-id: trunk@39388 -
2018-07-04 16:48:34 +00:00
nickysn
6cd88a24dc * release al/ax/eax immediately after the 'in', before (instead of after) moving
it to the destination imaginary register. This generates better code.

git-svn-id: trunk@39380 -
2018-07-04 13:09:47 +00:00
nickysn
f34710faa0 + use the in and out instructions with immediate constant port number for ports
that are evaluated as a compile-time constant in the range 0..255

git-svn-id: trunk@39365 -
2018-07-03 20:15:20 +00:00
nickysn
fdc896ad0a + inline support for the x86 'in' and 'out' instructions. Currently only enabled
in the i8086-msdos 'ports' unit, but will be enabled on other targets (e.g.
  go32v2) in the future as well. 32-bit 'in' and 'out' not inlined on i8086, but
  will be on i386 and x86_64.

git-svn-id: trunk@39362 -
2018-07-03 17:01:42 +00:00
florian
b70fc52874 * patch by Ondrej Pokorny: the stored property modifier does not delete the inherited default value anymore, resolves #33564
git-svn-id: trunk@39357 -
2018-07-01 20:11:13 +00:00
florian
eb61923762 * patch by Ondrej Pokorny: The nodefault is now inherited from parent class, resolves #33563
git-svn-id: trunk@39356 -
2018-07-01 19:01:41 +00:00
florian
5782acc32d * patch by J. Gareth Moreton to fix 33909
git-svn-id: trunk@39353 -
2018-07-01 12:54:30 +00:00
Károly Balogh
e7025b6759 another fix for the new warning introduced in r39347, hopefully it fixes win32 build
git-svn-id: trunk@39352 -
2018-06-30 16:51:41 +00:00
florian
6a2cb0bbbd * more compilation fixes
git-svn-id: trunk@39350 -
2018-06-30 12:48:54 +00:00
florian
68eb921d46 * broken compilation after r39347 fixed
git-svn-id: trunk@39349 -
2018-06-30 12:30:25 +00:00
florian
9af9658fa7 * first parameter of SetLength must be valid, as it is read
git-svn-id: trunk@39347 -
2018-06-30 11:25:43 +00:00
nickysn
e813a11e85 + support TP7-compatible @proc^ (as in FillChar(@proc^,...))
git-svn-id: trunk@39343 -
2018-06-29 14:16:35 +00:00
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