nickysn
d1ac1bf1e0
* fixed writing rtti published property getter/setter/stored proc info in the
...
i8086 far code/data memory models
git-svn-id: trunk@28726 -
2014-09-30 01:47:17 +00:00
nickysn
366dc179b6
* use tai_const.Create_int_code/dataptr(0) in tai_const.Create_nil_code/dataptr
...
git-svn-id: trunk@28725 -
2014-09-30 01:34:20 +00:00
nickysn
27a7c0863b
+ added constructors tai_const.Create_int_codeptr and .Create_int_dataptr. To be
...
used for emitting magic consts with the size of a code or data pointer (used
in e.g. rtti data).
git-svn-id: trunk@28724 -
2014-09-30 01:26:16 +00:00
sergei
b70c5efa65
* SPARC peephole: check that result of GetNextInstructionUsingReg is actually an instruction, because GetNextInstruction can stop at a label. Resolves #26798 .
...
The same issue on MIPS targets was fixed by r28380, but I forgot to apply it also to SPARC.
git-svn-id: trunk@28722 -
2014-09-28 22:18:59 +00:00
sergei
beeb85f11c
* Don't force CORBA (unmanaged) interfaces to be returned in parameter. All managed types including Variant and COM interfaces are already checked by handle_common_ret_in_param, superfluous checks removed.
...
Mantis #26593 .
git-svn-id: trunk@28716 -
2014-09-26 16:03:13 +00:00
sergei
a3c439c60f
- No longer insert BlockStart markers into asmlists. The presence of these markers disrupts peephole optimizations and require additional checks all over the place, causing various workarounds/hacks (like TAsmList.Create_without_marker) to start building up.
...
A more radical approach is to remove them altogether. Tested with i386-win32 (the oldest peephole optimizer), mips-linux (the newest one) and arm-linux (the most complex one) targets. The fallout was limited to two minor issues fixed in r28629 and r28708, respectively.
git-svn-id: trunk@28711 -
2014-09-22 21:33:50 +00:00
sergei
d37e72dbf9
* ARM: instructions do modify the base register of pre/postindexed references. Report this fact in spilling_get_operation_type_ref and RegModifiedByInstruction functions.
...
git-svn-id: trunk@28708 -
2014-09-22 16:18:16 +00:00
nickysn
2e0707f465
* fixed writing of dynarray rtti in the i8086 far data memory models
...
git-svn-id: trunk@28707 -
2014-09-22 16:12:11 +00:00
svenbarth
16774350d7
Fix for Mantis #26749 .
...
pgenutil.pas, generate_specialization:
* first check whether we can reuse the current specialization or another specialization and only /then/ retrieve the symtable to specialize to
+ added test
git-svn-id: trunk@28705 -
2014-09-21 19:15:37 +00:00
sergei
b08ffa0a87
* ARM: fixed detecting Thumb-style jump tables in insertpcrelativedata() after r28546.
...
git-svn-id: trunk@28702 -
2014-09-21 01:59:25 +00:00
Jonas Maebe
d26e6278ba
* don't free node before using its resultdef in an error message
...
git-svn-id: trunk@28699 -
2014-09-20 23:08:22 +00:00
sergei
4a90d7e3de
+ ARM internal linker: very initial support for Thumb mode, helloworld-class programs compiled with "-Cparmv6m -CIthumb" can now run.
...
git-svn-id: trunk@28697 -
2014-09-19 22:33:37 +00:00
sergei
ba324b1bf0
* Set default CPU type to cpu_pic32mx and FPU type to fpu_soft when compiling for mipsel-embedded, patch from Michael Ring.
...
git-svn-id: trunk@28692 -
2014-09-19 15:58:56 +00:00
Károly Balogh
c22dd6f022
PowerPC: in MorphOS syscalls the explicit paraloc size should always be OS_ADDR
...
git-svn-id: trunk@28686 -
2014-09-18 10:25:28 +00:00
Károly Balogh
8acc260a09
m68k: added the byterev and ff1 CF ISAA+/ISAC instructions, also added byterev as a CPU capability
...
git-svn-id: trunk@28679 -
2014-09-16 01:39:02 +00:00
sergei
f85a8159ef
* compiler/mips/cpuinfo.pas: removed "FPU_" prefixes from FPU names, not necessary because compiler inserts one itself.
...
* rtl/embedded/system.pp: removed (commented out) FPU initialization from initialization of system unit, was dead code anyway because FPC_HAS_FEATURE_FPU is never defined and "feature FPU" does not exist.
* rtl/mips/*.inc: don't compile FPU instructions if compiling RTL with -CfNONE or -CfSOFT (however, handling these switches for MIPS targets in compiler needs further fixing).
git-svn-id: trunk@28670 -
2014-09-15 18:24:23 +00:00
Károly Balogh
3b205742b6
m68k: also try to optimize a special case of OP_SAR using the SWAP instruction
...
git-svn-id: trunk@28657 -
2014-09-14 12:47:07 +00:00
Károly Balogh
1b0a1f4508
ARM: mimic what GNU C does while calling the profiling mcount on ARM
...
git-svn-id: trunk@28648 -
2014-09-13 00:17:10 +00:00
sergei
0b4d54fcb9
- Delete all position markers from assembler code before optimization. Markers of this kind are not used by optimizer and are expected to be ignored, but ignoring them requires numerous checks in all target-specific optimizers and currently isn't done correctly. In turn, failure to ignore markers prevents optimization of procedure prologues and epilogues.
...
git-svn-id: trunk@28647 -
2014-09-12 23:15:23 +00:00
Károly Balogh
739c66291d
ARM: first naive attempt to get gprofiling work for arm-linux. (Work-In-Progress, but at least for me it doesn't explode)
...
git-svn-id: trunk@28645 -
2014-09-12 18:51:02 +00:00
sergei
11201164e7
* Fixed type of parameter passed to FPC_CHECKPOINTER after r23325, must be the pointer itself, not what it points to. Was causing IE 200306031 when compiling for i386 with -gc.
...
git-svn-id: trunk@28644 -
2014-09-12 18:50:09 +00:00
sergei
6fd8a26ae1
+ internal assembler: early check for empty asmlists.
...
git-svn-id: trunk@28629 -
2014-09-08 23:26:20 +00:00
sergei
84245a6e0c
* MIPS: doing progress with peephole optimizer.
...
git-svn-id: trunk@28628 -
2014-09-08 23:24:43 +00:00
sergei
8f1e058ac2
* Don't place symbols with vo_force_finalize flag into read-only sections, resolves #26691 .
...
git-svn-id: trunk@28626 -
2014-09-08 19:41:24 +00:00
sergei
5479b6e722
* Provide initialization of all variables, fixes cycling with OPT="-dTEST_WIN32_SEH -OoDFA".
...
git-svn-id: trunk@28622 -
2014-09-08 18:08:12 +00:00
Károly Balogh
d561e8ab57
m68k: generate smarter shifting/rotation code on 68k, for example by utilizing the SWAP instruction
...
git-svn-id: trunk@28617 -
2014-09-07 23:46:46 +00:00
Károly Balogh
f91ae2700c
m68k: added CPUM68K_HAS_ROLROR capability flag
...
git-svn-id: trunk@28616 -
2014-09-07 23:45:51 +00:00
svenbarth
684c8842e7
Fix for Mantis #26599 .
...
pgenutils.pas, check_generic_constraints:
* correctly handle forward defs if the constraint is either a single IInterface/IUnknown or a TObject/class
+ added tests
git-svn-id: trunk@28601 -
2014-09-05 14:42:22 +00:00
Károly Balogh
77088cf723
* bumped PPU version because r28596 breaks compatibility on Amiga/68k and MorphOS
...
git-svn-id: trunk@28597 -
2014-09-05 02:39:35 +00:00
Károly Balogh
05b3a94843
* changed explicit paraloc handling to use ppuload/ppuwrite functions in paraloc instead of directly writing the data. this hopefully fixes some endian issues when using crosscompiled-on-littleendian PPUs with explicit paralocs on bigendian systems (this means Amiga/68k and MorphOS)
...
git-svn-id: trunk@28596 -
2014-09-04 23:09:05 +00:00
sergei
3ede5ec99b
* MIPS peephole: refactored/simplified and added (another) couple of optimizations.
...
git-svn-id: trunk@28591 -
2014-09-03 20:00:42 +00:00
sergei
ac64c4600f
+ MIPS: make use of instructions MUL,SEB and SEH that are available in modern cores.
...
git-svn-id: trunk@28590 -
2014-09-03 19:59:00 +00:00
sergei
4e2fb9d28b
* MIPS: fixed O_MOVE_SOURCE and O_MOVE_DEST constants (they were swapped, amazing that it ever worked with such a mistake).
...
+ Spilling for SEB and SEH
* Another attempt to get spilling of 3-operand form DIV/DIVU be done correctly.
git-svn-id: trunk@28588 -
2014-09-03 19:57:46 +00:00
sergei
406a678223
* MIPS: MOVE instruction cannot be changed into conditional move (MOVZ/MOVN) if it overwrites register used as condition.
...
git-svn-id: trunk@28587 -
2014-09-03 11:59:16 +00:00
florian
3f71b059e5
* improve ldr*/str* handling for arm thumb
...
git-svn-id: trunk@28583 -
2014-09-02 19:37:45 +00:00
Károly Balogh
9991ee4165
m68k: support loading of refs to data registers, also when explicit paraloc is set and it's a register, use that directly, this fixes several syscall-related corner cases on Amiga
...
git-svn-id: trunk@28582 -
2014-09-02 17:38:34 +00:00
sergei
02f39c667a
* MIPS: added a couple of important capabilities and made them available for big-endian targets as well.
...
git-svn-id: trunk@28581 -
2014-09-02 12:51:48 +00:00
sergei
768e090006
- MIPS: don't create reg.allocator for MM registers.
...
git-svn-id: trunk@28579 -
2014-09-01 21:55:03 +00:00
joost
030885727e
* Do not use sym.realname but sym.name in the mangledname for the Dwarf-3 debuginfo. This makes it possible to mix Dwarf-2 and Dwarf-3 debug info into one executable.
...
git-svn-id: trunk@28576 -
2014-09-01 16:55:10 +00:00
svenbarth
244ac12794
Fix for Mantis #26615 .
...
htypechk.pas, tcallcandidates:
* collect_overloads_in_struct: we need to check the deftyp of the extended def for record- or objectdef, not the deftyp of the helper which will always be objectdef anyway.
+ added test
git-svn-id: trunk@28572 -
2014-09-01 07:18:02 +00:00
florian
2fa7171a45
* generate AND for small set comparisons also when only set vars are involved using the cg class, so it works for arm thumb as well
...
git-svn-id: trunk@28569 -
2014-08-31 20:43:13 +00:00
florian
8a7c16327c
* fixes reference handling for arm thumb and ldrh, not perfect yet
...
git-svn-id: trunk@28568 -
2014-08-31 18:00:10 +00:00
florian
81c717fc06
+ implemented tthumbcgarm.g_external_wrapper in a way which does not destroy lr
...
git-svn-id: trunk@28560 -
2014-08-31 16:35:01 +00:00
florian
3f18d85434
* create a thumb_func directive before .globl directives in assembler to prevent accidental changes of asm mode
...
git-svn-id: trunk@28556 -
2014-08-31 15:01:55 +00:00
florian
dffdde7d53
* fixes reference handling for arm thumb and ldrb, not perfect yet and other ldr/str types might need similiar fixes
...
git-svn-id: trunk@28549 -
2014-08-31 11:37:17 +00:00
florian
db01c50a4f
* fixes jump table generate for arm thumb
...
git-svn-id: trunk@28546 -
2014-08-30 22:13:09 +00:00
sergei
a5958d6e5f
* m68k: do not emit moves between same register, they end up in wrong code in some cases when register needs to be spilled (and entirely useless otherwise).
...
git-svn-id: trunk@28545 -
2014-08-30 22:00:54 +00:00
florian
836a6e46ca
* several issues with interface wrappers for thumb fixed
...
git-svn-id: trunk@28542 -
2014-08-30 20:38:26 +00:00
florian
97fc823e33
* generate AND for small set comparions using the cg class, so it works for arm thumb as well
...
git-svn-id: trunk@28540 -
2014-08-30 18:02:59 +00:00
florian
64dafdb1de
* stabn writing code simplified
...
* write 0 instead of "label-label" in stabn, arm thumb assemblers do not like "label-label", for other targets writing 0 should make no difference
git-svn-id: trunk@28539 -
2014-08-30 16:56:01 +00:00