Jonas Maebe
c262c5dbc9
* synchronised with trunk till r42256
...
git-svn-id: branches/debug_eh@42257 -
2019-06-20 17:21:34 +00:00
Jeppe Johansen
0d97dc7965
avr: Fixed some inconsistencies.
...
git-svn-id: trunk@42204 -
2019-06-10 13:35:38 +00:00
Jonas Maebe
faf75095cd
* synchronised with trunk till r42189
...
git-svn-id: branches/debug_eh@42190 -
2019-06-07 18:24:38 +00:00
Jeppe Johansen
aa4961d06e
- Add mov optimization for STS instruction.
...
git-svn-id: trunk@42163 -
2019-06-02 14:55:30 +00:00
Jeppe Johansen
5bdc635f50
Check if the current register was the last in the cgpara, to avoid running over the last register allocated.
...
git-svn-id: trunk@42159 -
2019-06-02 09:13:19 +00:00
Jeppe Johansen
c867d2b7f6
Generalize skip instruction optimization for both sbix and sbrx.
...
git-svn-id: trunk@42154 -
2019-06-01 15:20:34 +00:00
Jonas Maebe
3a1fb45315
* synchronised with trunk till r41976
...
git-svn-id: branches/debug_eh@41977 -
2019-05-02 19:44:41 +00:00
Jeppe Johansen
3ad450c636
avr: Add peephole optimization for in+sbr* bit test sequence.
...
git-svn-id: trunk@41962 -
2019-04-30 17:00:30 +00:00
Jonas Maebe
2923e484fd
* synchronised with trunk till r41907
...
git-svn-id: branches/debug_eh@41908 -
2019-04-20 18:22:52 +00:00
Jeppe Johansen
12879adc2f
- Adds intrinsics to save/restore SREG when disabling interrupts.
...
- Adds nostackframe to stack frame investigation stubs.
git-svn-id: trunk@41898 -
2019-04-18 18:26:51 +00:00
Jonas Maebe
ac883969a9
* synchronised with trunk till r41423
...
git-svn-id: branches/debug_eh@41424 -
2019-02-23 17:08:03 +00:00
Jonas Maebe
8b9e90dc7a
* keep track of whether a routine has a C-style variadic parameter in the
...
procoptions even when it's through an array-of-const parameter
* always call create_varargs_paraloc_info() instead of create_paraloc_info()
in the former case, even when no varargs parameters are specified (because
on some platforms even some non-variadic parameters need to be passed
differently, such as on ARM with gnueabihf)
git-svn-id: trunk@41420 -
2019-02-23 15:42:45 +00:00
Jonas Maebe
b3a8543a56
* synchronised with trunk till r40942
...
git-svn-id: branches/debug_eh@40943 -
2019-01-20 17:37:07 +00:00
florian
94d7a02fae
* modified patch by Gareth Moreton to pool TmpUsedRegs in the assembler optimizers, resolves #34679
...
git-svn-id: trunk@40938 -
2019-01-20 14:16:38 +00:00
florian
8fceba4493
* properly allocate parameter registers for constants on avr, resolves #33932
...
git-svn-id: trunk@40848 -
2019-01-12 13:28:09 +00:00
Jonas Maebe
11511e13d5
* synchronised with trunk till r40723
...
git-svn-id: branches/debug_eh@40724 -
2019-01-01 13:22:17 +00:00
florian
917de001d6
* patch (slighly modified) by Christo Crause to write 16 bit registers on avr in hi/lo order, resolves #34721
...
git-svn-id: trunk@40678 -
2018-12-27 21:41:36 +00:00
Jonas Maebe
9630eb7ce9
* synchronised with trunk till r40466
...
git-svn-id: branches/debug_eh@40467 -
2018-12-04 19:54:31 +00:00
Jonas Maebe
122d0d36d6
+ volatile() expression that marks an expression as volatile
...
* disable matching volatile references in the assembler optimisers, so they
can't be removed (more conservative than needed, but better than removing
too many)
o the CSE optimiser will ignore them by default, because they're an unknown
inline node for it
* also removed no longer used fpc_in_move_x and fpc_in_fillchar_x inline node
identifiers from rtl/inc/innr.inc, and placed fpc_in_unaligned_x at the
right place
git-svn-id: trunk@40465 -
2018-12-04 19:53:20 +00:00
Jonas Maebe
4cd6f59bc3
* changed create_hlcodegen into a procvar, so that we don't have to insert
...
hlcgllvm in the uses clause of every unit that calls create_hlcodegen
o prevents dependency cycles that can cause llvm codegen units to init
before the cpu variants, which is bad since the llvm versions have to
override the cpu variants in their init code (+ added checks in the
init code that they are in fact initialised later)
git-svn-id: branches/debug_eh@40410 -
2018-11-29 21:31:15 +00:00
Jonas Maebe
bfc7c58a69
* synchronised with trunk till r40348
...
git-svn-id: branches/debug_eh@40349 -
2018-11-18 12:01:50 +00:00
florian
42e54c1ad5
* max_operands needs only to be 2 on avr
...
git-svn-id: trunk@40197 -
2018-11-03 10:39:58 +00:00
florian
9b0ff05ee8
- get rid of MaxOps, it is redundant with max_operands
...
* MatchOpType with three operands is only available of max_operands>2
git-svn-id: trunk@40190 -
2018-11-02 21:32:29 +00:00
pierre
0abc978cc4
Change RemoveCurrentP parameter type to tai, because GetNextInstruction does not always return a taicpu, adapt code in avr/aoptcpu unit
...
git-svn-id: trunk@40120 -
2018-10-31 23:15:22 +00:00
Jonas Maebe
8555ec1438
+ fpc_eh_return_data_regno() intrinsic to get the return register numbers
...
for the Dwarf EH exception handler result
git-svn-id: branches/debug_eh@40070 -
2018-10-28 18:16:38 +00:00
pierre
92acd38f40
Fix for bug report #34380
...
git-svn-id: trunk@39986 -
2018-10-18 20:21:54 +00:00
Jonas Maebe
0b246f3dbd
* converted Boolean8 to an internal type, and mapped Boolean to the
...
new internal pasbool1(type) (part of mantis #34411 )
o apply the _Bool x86-64 parameter passing rules only to pasbool1
git-svn-id: trunk@39949 -
2018-10-16 21:14:18 +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
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
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
florian
b9417cc51e
* missing skiplabel added, resolves #33423
...
git-svn-id: trunk@38520 -
2018-03-13 18:45:32 +00:00
florian
a66016026b
* handle bitpacked booleans more efficiently
...
git-svn-id: trunk@38509 -
2018-03-12 22:05:34 +00:00
florian
11ef1d17c2
* fix register allocation for MovOp2Op and PushPushPopPop2MovMov
...
* fix MovOp2Op for ST/STS
* fix register book keeping for MovMov2Movw
git-svn-id: trunk@38492 -
2018-03-10 21:53:55 +00:00
florian
9fc0f28ae4
* handle movw in TCpuAsmOptimizer.RegInInstruction
...
git-svn-id: trunk@38491 -
2018-03-10 21:53:54 +00:00
florian
ee252d0ecd
+ allocate real registers properly in tcgavr
...
git-svn-id: trunk@38490 -
2018-03-10 21:53:52 +00:00
florian
61660375ce
+ AVR PeepHoleOptPass1Cpu makes use of TAOptObj.RemoveCurrentP to track register usage properly
...
git-svn-id: trunk@38489 -
2018-03-10 21:53:50 +00:00
florian
63ffb02b34
+ Mov2Nop
...
git-svn-id: trunk@38487 -
2018-03-10 21:53:46 +00:00
florian
93a0cef65d
* improved OpCp2Op
...
git-svn-id: trunk@38486 -
2018-03-10 21:53:45 +00:00
florian
52cb8fbb98
+ AddAdc2Add
...
+ SubSbc2Sub
git-svn-id: trunk@38485 -
2018-03-10 21:53:43 +00:00
florian
3a81ccf48b
* simplify tcgavr.a_op_reg_reg_internal
...
git-svn-id: trunk@38484 -
2018-03-10 21:53:41 +00:00
florian
23722a2f95
* correctly negate 8 bit values on avr, resolves #33322
...
git-svn-id: trunk@38407 -
2018-03-04 16:28:52 +00:00
florian
62df4a4083
* patch by Christo Crause: more descriptive error message when BRxx destination out of reach
...
git-svn-id: trunk@38340 -
2018-02-25 15:31:17 +00:00
florian
5b16a84de1
+ RCallReg2RJmp optimization
...
git-svn-id: trunk@38318 -
2018-02-22 20:19:03 +00:00
florian
d0dd3bd74e
* patch by Christo Crause to support ~ in att assembler
...
* allow -128 to 255 as a constant for instructions taking a byte sized constants (this is also what GNU As accepts), resolves #32039
git-svn-id: trunk@38316 -
2018-02-22 20:14:56 +00:00
florian
90051fd7d2
* better suitable error message for out of range constants
...
git-svn-id: trunk@38290 -
2018-02-19 21:19:08 +00:00
florian
4cb9ad7e01
* patch (indention adapted) by Christo Crause to check avr inline assembler, resolves also #32261
...
git-svn-id: trunk@38286 -
2018-02-18 21:58:04 +00:00
florian
055a49b202
* patch by Christo Crause: the subarch type for atmega 8, 8A, 16 & 32 was incorrect. Atmega8A was also listed under the wrong subarch type in the makefile, also fixed.
...
* atmega8a needs to use rjmp now
git-svn-id: trunk@38282 -
2018-02-18 10:54:59 +00:00
florian
cd41312a8f
* fixes not(<qwordbool>) on arm
...
* fixes not(<(q/l)wordbool>) on avr
git-svn-id: trunk@38263 -
2018-02-16 22:38:35 +00:00
florian
311bcd4c08
* do not destroy flags while clearing R1, resolves #33170
...
git-svn-id: trunk@38241 -
2018-02-14 19:28:33 +00:00
florian
291ee4b562
* clear r1 (and save/restore) in interrupt routines on avr
...
+ generate no entry/exit code except ret for empty subroutines
git-svn-id: trunk@38233 -
2018-02-13 17:47:23 +00:00