florian
352fb866ef
* is_range_test returns false if "lower" bound is greater than "upper" bound
...
git-svn-id: trunk@39837 -
2018-09-27 20:24:52 +00:00
svenbarth
d5f0d8e306
* addendum for Mantis #34333 : also complain about number of arguments with the maximum number of arguments for Copy ( = 3 ) is exceeded
...
git-svn-id: trunk@39836 -
2018-09-27 19:44:35 +00:00
pierre
915fb05055
Update remaining Makefile's
...
git-svn-id: trunk@39830 -
2018-09-27 07:10:27 +00:00
Károly Balogh
b4a7d6a82e
cleanup: remove ARMHF-related comments from RISC-V only codepath. no functional change.
...
git-svn-id: trunk@39827 -
2018-09-27 07:04:04 +00:00
pierre
578e60e6ef
Fix default CPUs for riscv32
...
git-svn-id: trunk@39819 -
2018-09-26 21:56:36 +00:00
pierre
10f72ba2c8
Add missing TFenceFlags and TRoundingMode for riscv32
...
git-svn-id: trunk@39818 -
2018-09-26 21:56:03 +00:00
svenbarth
76c45b1a72
* fix for Mantis #34333 : improve error output for incorrect calls to Copy()
...
git-svn-id: trunk@39817 -
2018-09-26 21:33:51 +00:00
florian
a34d4e715c
Merged riscv_new branch
...
git-svn-id: trunk@39813 -
2018-09-26 19:49:08 +00:00
florian
7082b6e34a
* compilation fixed
...
git-svn-id: trunk@39812 -
2018-09-26 19:38:17 +00:00
florian
88f83280dc
* correctly take care of short boolean evaluation when rearranging nodes during CSE
...
git-svn-id: branches/laksen/riscv_new@39803 -
2018-09-25 20:31:03 +00:00
svenbarth
bf91991bae
* fix for Mantis #34332 : allow 2 parameter form of Copy also for ShortString variables
...
+ added test
git-svn-id: trunk@39802 -
2018-09-25 19:10:06 +00:00
Jeppe Johansen
d33b520690
Clean up peephole optimization code.
...
Add hardfloat ABI option for RiscV. Still needs proper implementation though.
Add CG support for profiling.
git-svn-id: branches/laksen/riscv_new@39798 -
2018-09-24 17:15:22 +00:00
svenbarth
116230f759
* forgot to commit extension to tspecializenode
...
git-svn-id: trunk@39788 -
2018-09-21 15:17:52 +00:00
svenbarth
9a99ab9dda
* fix for Mantis #34287 : correctly handle "inherited method" calls if "method" is a generic (no matter if it's mode Delphi or not)
...
+ added test
git-svn-id: trunk@39787 -
2018-09-21 15:16:18 +00:00
svenbarth
06267006f3
* explicitely handle the boolean types to determine the bit size as all of them have the bit size 1
...
+ added test
git-svn-id: trunk@39786 -
2018-09-21 13:24:49 +00:00
Jeppe Johansen
8f4173c54d
Add a number of optimizations.
...
Don't do CSE restructuring when has full evaluation enabled.
git-svn-id: branches/laksen/riscv_new@39781 -
2018-09-20 20:27:58 +00:00
Jeppe Johansen
576ef934bd
Fix bug in lui+addi immediate load for spilling code.
...
git-svn-id: branches/laksen/riscv_new@39764 -
2018-09-16 20:51:15 +00:00
florian
7855b3cf1b
* relax formula for max. nodes to inline
...
git-svn-id: trunk@39763 -
2018-09-16 19:15:30 +00:00
Jeppe Johansen
74a7963d58
Redo overflow checking code.
...
Fix shift operators in case of unsigned subreg operations. There should be no sign extension here.
Add some unittest implementations that test stack execution and writing to readonly constants.
git-svn-id: branches/laksen/riscv_new@39762 -
2018-09-16 18:37:59 +00:00
florian
49e7e5f512
* support aitconst_*bit_unaligned in the intel assembler writer, resolves #34222
...
git-svn-id: trunk@39761 -
2018-09-16 15:27:03 +00:00
florian
ee338fc709
* patch by Karl-Michael Schindler to update the german messages files, resolves #34218
...
git-svn-id: trunk@39760 -
2018-09-16 15:13:04 +00:00
florian
a21397e356
+ based on a patch by Laksen, optimize (v>=x) and (v<=y) into (v-x)<(y-x)
...
git-svn-id: trunk@39759 -
2018-09-16 13:09:36 +00:00
florian
64ad48e89e
* forgotten part of r39750
...
git-svn-id: trunk@39752 -
2018-09-13 20:20:40 +00:00
florian
800ce23499
* fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons
...
git-svn-id: trunk@39750 -
2018-09-12 20:33:18 +00:00
pierre
d46536817c
Disable overflow for UDIVX ans SDIVX 64-bit instructions
...
git-svn-id: trunk@39731 -
2018-09-11 08:00:54 +00:00
svenbarth
cb8f6f637c
* fix big endian targets by using an explicit assignment with typecast instead of an absolute variable
...
git-svn-id: trunk@39728 -
2018-09-10 21:12:29 +00:00
Jeppe Johansen
f828d8700c
A subscript can also trigger an exception.
...
git-svn-id: branches/laksen/riscv_new@39718 -
2018-09-09 14:41:37 +00:00
Jeppe Johansen
1f68caaf82
Removed reuse of src and dest registers in g_concatcopy as that
...
could modify registers used for other stuff(ex. framepointer).
git-svn-id: branches/laksen/riscv_new@39717 -
2018-09-09 14:02:54 +00:00
Jeppe Johansen
4b227de02e
Add ORN instruction for Thumb2.
...
git-svn-id: trunk@39714 -
2018-09-08 12:10:51 +00:00
florian
f040c19fd6
* cleanup
...
git-svn-id: branches/laksen/riscv_new@39712 -
2018-09-07 19:22:59 +00:00
svenbarth
92cce05f5f
* as a workaround for some compiler bug introduced during 3.1.1 the freeing of the management operator offset entry lists is moved to a nested procedure as that does not trigger the bug (even with -O2 or -O3)
...
git-svn-id: trunk@39711 -
2018-09-04 20:20:07 +00:00
svenbarth
ba08bdc9b1
* increase PPU version after the addition of the field to keep track of management operators (don't seperately to help merging)
...
git-svn-id: trunk@39710 -
2018-09-03 18:00:30 +00:00
svenbarth
600ed6701e
+ keep track whether a structured type has fields with management operators (or fields that in turn have fields with management operators and so on) and store that in the PPU to speed up compilation again
...
* adjusted PPUdump for this
git-svn-id: trunk@39709 -
2018-09-03 18:00:27 +00:00
svenbarth
46ef16ac11
* generate an error if the type parameters of a generic routine's definition does not match with its interface or forward declaration
...
+ added tests
git-svn-id: trunk@39703 -
2018-09-02 16:20:29 +00:00
svenbarth
50323043c1
* generate an error if the type parameters of the record, object or class do not match with its declaration
...
+ added test
git-svn-id: trunk@39702 -
2018-09-02 16:20:25 +00:00
svenbarth
03a036c6cb
* regenerate msg*.inc after adding messages for mismatching generic declarations
...
git-svn-id: trunk@39701 -
2018-09-02 16:20:22 +00:00
svenbarth
cfe75ca0fd
+ add messages to use when generic types of a definition do not match with its declaration
...
git-svn-id: trunk@39700 -
2018-09-02 16:20:18 +00:00
Jeppe Johansen
29ea4ed07d
Add rounding mode operands.
...
Add support for trunc and round methods.
git-svn-id: branches/laksen/riscv_new@39698 -
2018-09-01 19:48:44 +00:00
Jeppe Johansen
2af0ca8546
Fix bugs caused by swapping of operands in float comparisons.
...
git-svn-id: branches/laksen/riscv_new@39697 -
2018-09-01 19:47:28 +00:00
svenbarth
70ae0a2dc9
+ add a comment to the destructor of tsymtable so that others (and maybe me a well) will hopefully see that the destructor of that class is not completely trivial!
...
git-svn-id: trunk@39694 -
2018-08-31 19:16:48 +00:00
svenbarth
072699d38a
* protect the destructors of tabstractrecordsymtable and twithsymtable against executing when called with a refcount > 1 (this fixes Mantis #34210 )
...
+ added simplified test
git-svn-id: trunk@39693 -
2018-08-31 19:16:45 +00:00
svenbarth
10886d8cef
* fix for Mantis #34206 : when specializing nested routines of a generic routine we don't need access to their genericdef (which isn't available anyway in other units when loading from PPU) as their definition is completely contained in the token stream
...
+ added simplified test for the problem
git-svn-id: trunk@39692 -
2018-08-31 16:11:05 +00:00
svenbarth
a076677336
* instead of a flags field generate a table with all Initialize operators of all fields (nested or not, parent class or not) for class types; objects and records don't use this (yet)
...
git-svn-id: trunk@39690 -
2018-08-29 19:21:35 +00:00
svenbarth
21e7ddaac7
+ add method to retrieve a list of management operator/field offset pairs for a specific management operator inside a structured type (no matter how deeply nested they are)
...
git-svn-id: trunk@39689 -
2018-08-29 19:21:31 +00:00
svenbarth
ecc02f3fdb
* always search in the current module as well as its symtables are be popped already in case of RTTI generation
...
git-svn-id: trunk@39688 -
2018-08-29 19:21:28 +00:00
svenbarth
190716ac0e
* move getrecorddef and gettabledef from TVMTWritter to symdef as they might be used from the RTTI as well
...
git-svn-id: trunk@39687 -
2018-08-29 19:21:23 +00:00
svenbarth
2e1327b6b2
* use pooled constant references for the parameter locations as more often than not they're equal between multiple methdos (e.g. the Self argument is always the same)
...
* using this the TypInfo unit can navigate interface methods and VMT method parameters much more quickly as the latter have a constant size now
git-svn-id: trunk@39686 -
2018-08-29 19:20:31 +00:00
svenbarth
029ec93df6
* use pooled constant references for the names of VMT methods in the RTTI
...
git-svn-id: trunk@39685 -
2018-08-29 19:20:27 +00:00
svenbarth
228d3252cc
* use pooled constant references for the parameter names of VMT methods in the RTTI
...
git-svn-id: trunk@39684 -
2018-08-29 19:20:24 +00:00
svenbarth
8bf3661f7f
+ add a method to emit a reference to a pooled shortstring constant (aka one per unit); very useful for new RTTI tables to avoid poluting the binary with string constants
...
git-svn-id: trunk@39683 -
2018-08-29 19:20:20 +00:00
florian
4f052e4f90
o fix several issues with floating point exceptions
...
+ mask underflow and precision on startup
+ check for floating point exceptions after inlined float routine helpers
- do not check for floating point exceptions after floating point moves
git-svn-id: branches/laksen/riscv_new@39645 -
2018-08-19 15:26:00 +00:00
florian
999cbd94b8
+ support to generate software based floating point exception checking
...
(enabled by -CE)
git-svn-id: branches/laksen/riscv_new@39639 -
2018-08-19 10:56:47 +00:00
florian
3c69f9a066
+ basic infrastructure to generate code for floating point exception
...
checking for CPUs without floating point exception support
git-svn-id: branches/laksen/riscv_new@39637 -
2018-08-19 10:54:45 +00:00
marco
98f00acb06
* trunk to 3.3.1
...
git-svn-id: trunk@39635 -
2018-08-18 15:47:44 +00:00
florian
ea32ddd5b2
* avoid overflows of execution weight
...
git-svn-id: trunk@39623 -
2018-08-16 20:45:36 +00:00
florian
75251913b1
* properly pass execution weight in SetExecutionWeight
...
git-svn-id: trunk@39622 -
2018-08-16 20:45:36 +00:00
marco
dd52e79089
* two comment spelling fixes. Mantis #34092 & #34097
...
git-svn-id: trunk@39593 -
2018-08-08 08:39:20 +00:00
pierre
ada8891d9e
Also allow clang assembler for powerpc64-darwin target
...
git-svn-id: trunk@39580 -
2018-08-06 16:13:05 +00:00
svenbarth
3d740f13e4
* ensure that the data of the temp node is freed correctly in case of an error (the error might be non-fatal in case of a generic passing an untyped type to Write/Read)
...
git-svn-id: trunk@39566 -
2018-08-04 08:37:07 +00:00
svenbarth
781303c0d8
* ensure that the file parameter for the Read/Write family of intrinsics is (and can be) freed in tinlinenode.handle_read_write()
...
git-svn-id: trunk@39565 -
2018-08-04 08:37:01 +00:00
svenbarth
473a028523
- the freegenericparams variable is no longer required as it's always true whenever consume_proc_name is called anyway
...
git-svn-id: trunk@39562 -
2018-08-03 20:24:23 +00:00
svenbarth
32db846289
* free the list containing the generic parameters as after calling insert_generic_parameter_types() it's no longer required (though this means that the condition handling generictypelist instead needs to be adjusted)
...
git-svn-id: trunk@39561 -
2018-08-03 20:24:19 +00:00
svenbarth
c1cfd87b56
* the call node takes ownership of the specialization context, so free it in the destructor
...
git-svn-id: trunk@39560 -
2018-08-03 20:24:15 +00:00
svenbarth
0aee319fdb
* do_member_read() takes ownership of the specialization context, so Nil it after the call
...
git-svn-id: trunk@39559 -
2018-08-03 20:24:10 +00:00
svenbarth
0ba14c7ad8
* fix memory leak when freeing a temp delete node: also call the inherited destructor so that e.g. tnode.optinfo is freed.
...
git-svn-id: trunk@39558 -
2018-08-03 20:24:05 +00:00
svenbarth
32c307e9ce
* fix for Mantis #34021 : if one of the two operators is an array constructor try to use an operator overload for that first before converting it to a set
...
+ added tests
git-svn-id: trunk@39554 -
2018-08-03 15:24:59 +00:00
pierre
29d524e7e6
Remove abolute path for native linker, ld is in directory /usr/ccs/bin in Oracle Solaris 10 8/11
...
git-svn-id: trunk@39541 -
2018-08-01 06:44:26 +00:00
Jeppe Johansen
f781c8942e
Write real atomic operations, and add memory barrier operations.
...
Add support for fence, and acquire/release syntax to assembler reader.
Fix broken register aliases.
git-svn-id: branches/laksen/riscv_new@39524 -
2018-07-29 16:43:09 +00:00
Jeppe Johansen
90d5f5e760
Added library search paths.
...
Removed GP and TP from allocatable registers for now. GP should not be overwritten.
Ported dllprt0.as
Fixed register usage in cprt0.as
git-svn-id: branches/laksen/riscv_new@39522 -
2018-07-29 13:08:15 +00:00
Jeppe Johansen
76dda5813e
Updated dynlinker filename.
...
Fix passing of vararg register pairs.
Fix passing of big record, and return of records.
Disabled framepointer elimination for the time being.
git-svn-id: branches/laksen/riscv_new@39519 -
2018-07-28 20:06:06 +00:00
florian
dc3830d78d
* integer and float registers do not overlay on Risc-V
...
git-svn-id: branches/laksen/riscv_new@39512 -
2018-07-26 20:57:01 +00:00
florian
44150f43ac
* RISC-V 32 compilation fixed
...
+ lazarus project file for the compiler added
git-svn-id: branches/laksen/riscv_new@39511 -
2018-07-26 19:18:47 +00:00
Jeppe Johansen
27ab039366
Fixed _fini and _init references in cprt0.as
...
Add RiscV to fcl-res and fpcres.
Check that constant is a valid imm12 when doing overflow checking.
git-svn-id: branches/laksen/riscv_new@39494 -
2018-07-23 11:40:55 +00:00
Jeppe Johansen
a8c82856b1
Fixed missing maybeadjust calls after not operation.
...
git-svn-id: branches/laksen/riscv_new@39493 -
2018-07-23 10:20:32 +00:00
Jeppe Johansen
b98eb3daa9
Changed order in stack unravelling RTL code, to match the most common cases.
...
Fixed unsigned conditions for branch conditions.
Added some additional const loading cases.
Changed the temporary register used during calls because it could otherwise clash with the argument passing registers.
git-svn-id: branches/laksen/riscv_new@39492 -
2018-07-23 01:11:31 +00:00
florian
f3b7e3281a
* fix int to real for non-register locations
...
git-svn-id: branches/laksen/riscv_new@39491 -
2018-07-22 20:48:15 +00:00
florian
f48203b66f
* generate no uleb with differences for line information
...
git-svn-id: branches/laksen/riscv_new@39490 -
2018-07-22 19:43:47 +00:00
Jeppe Johansen
c6b27bc225
Fix shift operations on 32bit operands.
...
git-svn-id: branches/laksen/riscv_new@39489 -
2018-07-22 19:25:46 +00:00
Jeppe Johansen
6d9a0fdc73
Added implementation of InstructionLoadsFromReg.
...
Fixed spilling_get_operation_type_ref, no mem operation modifies ref registers.
git-svn-id: branches/laksen/riscv_new@39487 -
2018-07-22 18:38:07 +00:00
Jeppe Johansen
a906feb05e
Fixed bug in peephole optimizer.
...
git-svn-id: branches/laksen/riscv_new@39486 -
2018-07-22 16:58:10 +00:00
Jeppe Johansen
2499129ba5
Pass aggregates larger than 2*XLEN as a reference.
...
Fix load_reg_reg and make it do proper type conversions.
Added maybeadjust to tcgrv.
git-svn-id: branches/laksen/riscv_new@39485 -
2018-07-22 14:15:29 +00:00
florian
9776ea2afe
* SLTIU -> SLTU
...
git-svn-id: branches/laksen/riscv_new@39484 -
2018-07-22 13:55:53 +00:00
florian
32a58ba7d1
* might_have_sideeffects gets flags: if mhs_exceptions is passed, nodes which might cause an exception are considered as having a side effect
...
git-svn-id: branches/laksen/riscv_new@39483 -
2018-07-22 13:11:21 +00:00
florian
65a415c13e
* fix assembling with official binutils
...
* fix compilation on 32 bit hosts
+ compile with -Sew
git-svn-id: branches/laksen/riscv_new@39482 -
2018-07-22 13:10:24 +00:00
Jeppe Johansen
054bf32f1f
Add RV64GC cpu type.
...
Fix float loading.
Fix a number of small issues with wrong operand sizes.
Fixed concatcopy code generation.
Align jump table for case statements.
git-svn-id: branches/laksen/riscv_new@39481 -
2018-07-21 22:34:42 +00:00
Jeppe Johansen
768fc2ea4b
Added overflow checking in for add instructions.
...
git-svn-id: branches/laksen/riscv_new@39479 -
2018-07-20 15:34:22 +00:00
Jeppe Johansen
2aaf481d89
Regenerated makefiles.
...
git-svn-id: branches/laksen/riscv_new@39476 -
2018-07-20 10:40:57 +00:00
Jeppe Johansen
6352328f3a
Update packages with information about RiscV.
...
Fix g_external_wrapper, since it uses a register.
Fixed calling of gas.
Ported cprt0.
git-svn-id: branches/laksen/riscv_new@39475 -
2018-07-20 10:40:28 +00:00
Jeppe Johansen
ceb38833f2
Added RiscV32/64 target, from a cleaned up version of branches/laksen/riscv/trunk.
...
git-svn-id: branches/laksen/riscv_new@39474 -
2018-07-20 08:21:15 +00:00
nickysn
42432d4ef3
* use sizeuinttype, instead of ptruinttype for the indexdef conversion in
...
tcgvecnode.pass_generate_code. This avoids a meaningless conversion to 32-bit
(and using the cwd instruction) on i8086 in the far data memory models.
git-svn-id: trunk@39472 -
2018-07-19 15:27:14 +00:00
michael
f6867cbd63
* Patch by Cyrax to allow creating map file on linux (bug ID 33982)
...
git-svn-id: trunk@39449 -
2018-07-14 08:12:38 +00:00
florian
93c5eae528
* accept dereferences in generics definitions, resolves #33700 properly
...
git-svn-id: trunk@39447 -
2018-07-13 21:00:33 +00:00
florian
52846df241
* fixed condition in getbestreal
...
git-svn-id: trunk@39446 -
2018-07-13 19:53:47 +00:00
florian
0c6cf12fbf
+ support for the directive $EXCESSPRECISION
...
git-svn-id: trunk@39443 -
2018-07-12 21:39:50 +00:00
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
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
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