sergei
96dd464bf2
* Moved fixup_jmps to target-specific classes for powerpc,powerpc64 and MIPS, cleaned out remaining $ifdef's. A slight functionality change is that fixup_jmps is now called before adding the procedure end symbol, not after, but that should not matter.
...
git-svn-id: trunk@27450 -
2014-04-02 14:17:23 +00:00
Jonas Maebe
f101118cd6
* moved MIPS-specific tprocdef.total_local_size field to cpu-specific
...
descendant
git-svn-id: trunk@27436 -
2014-04-01 21:41:21 +00:00
sergei
404c3efa58
* MIPS: handle get_frame internally, so it sets pi_needs_stackframe flag on current procedure. This makes possible not to force pi_needs_stackframe on every procedure and thus omit saving/restoring $fp register when it is not necessary.
...
git-svn-id: trunk@25170 -
2013-07-24 15:25:12 +00:00
sergei
9494fadf08
* MIPS: set pi_do_call flag for assembler procedures with stackframes, so in PIC mode it further receives pi_needs_got in PIC mode and allocates the GP save temp.
...
* Deallocate GP save temp in epilogue to avoid warnings when compiled with -dEXTDEBUG
* g_concatcopy: don't check alignment, this allows single byte or word locations to be copied with 2 instructions. Larger unaligned references are supposed to be handled in g_concatcopy_unaligned instead.
git-svn-id: trunk@25147 -
2013-07-20 13:42:41 +00:00
sergei
89c9cdf6c4
+ MIPS: implemented parameter location reusing, eliminating second copy of (potentially large) records passed by value. When parameter is passed both in registers and stack, let it have a single LOC_REFERENCE location on callee side, and store relevant registers on stack (into 16-byte area reserved by ABI) early in prologue.
...
git-svn-id: trunk@24970 -
2013-06-25 08:15:17 +00:00
sergei
86637a9ff9
* MIPS: pi_needs_got is necessary when doing unsigned to float conversions (it uses a global constant) and also if procedure does any calls in PIC mode.
...
git-svn-id: trunk@24822 -
2013-06-08 23:29:50 +00:00
sergei
1c652eb8f9
MIPS procinfo improvements:
...
- Removed TMIPSProcInfo.needs_frame_pointer, it duplicates pi_needs_stackframe flag.
- Don't save RA for leaf procedures.
* GP is caller-saved register, it does not need saving/restoring as nonvolatile registers. Handle its restore position as a "normal" temp, whose offset is known before secondpass. This allows to handle PIC calls without involving GAS macro processing.
git-svn-id: trunk@23885 -
2013-03-17 08:43:39 +00:00
sergei
5812cf3b46
* MIPS: allocate 16-byte outgoing parameter area also for procedures declared as 'assembler' without 'nostackframe'. This is a half-measure because there is no way to determine correct size to allocate for such procedures (probably we must add some directive to specify it). The same generally applies to all targets with fixed stack, not just MIPS.
...
git-svn-id: trunk@23663 -
2013-02-25 22:47:09 +00:00
sergei
354ebb822a
* MIPS: fixed layout of stack frame in case procedure does only low-level calls (via a_call_name, etc.). A 16-byte outgoing parameter area must be allocated regardless of actual parameter count.
...
* Abort if attempting to emit a call without pi_do_call flag set, because the outgoing parameter area determines layout of temps and therefore cannot be created/changed during pass 2.
* Bypass g_concatcopy_move if procedure is a leaf one, due to the restriction mentioned above.
git-svn-id: trunk@23644 -
2013-02-21 20:57:38 +00:00
pierre
7bd7cf275c
handle po_nostackframe for calc_stack_size
...
git-svn-id: trunk@22718 -
2012-10-18 09:44:11 +00:00
pierre
a3ef2b42a8
Remove more TABs in sources
...
git-svn-id: trunk@22336 -
2012-09-06 08:11:59 +00:00
pierre
fc81979f61
set got at create of cs_create_pic is used
...
git-svn-id: trunk@21793 -
2012-07-05 21:10:30 +00:00
pierre
a892e2aa6f
set pi_needs_got always if cs_create_pic is on
...
git-svn-id: trunk@21774 -
2012-07-04 16:25:42 +00:00
pierre
aa8747f5c9
Add more information to TMipsProcInfo class
...
git-svn-id: trunk@21671 -
2012-06-21 11:52:08 +00:00
Jonas Maebe
0fc422f244
* moved definition of maxcpuregister and tcpuregisterset from cgbase to
...
cgutils, and define them so they are no larger than what is required by
the current target platform
* added cgutils to the uses clause of several units that use the
tcpuregisterset type
git-svn-id: trunk@21624 -
2012-06-15 18:24:35 +00:00
pierre
a3184d7ff5
Merge of 21562 by Foxsen, needs_frame_pointer field added to TMIPSProcInfo
...
git-svn-id: trunk@21611 -
2012-06-14 15:06:40 +00:00
pierre
2e4703d454
Merge of revision 21553 by Foxsen.
...
make clear what registers might need to be saved
git-svn-id: trunk@21597 -
2012-06-13 22:03:29 +00:00
pierre
550bbb0186
+ computed_local_size new longint field in TMIPSProcInfo
...
to check that LocalSize stays constant.
New function mips_extra_offset (needed for stabs debugging)
git-svn-id: trunk@21585 -
2012-06-12 22:53:19 +00:00
pierre
22eae1b337
* Stack setup for MIPS and MIPSEL
...
git-svn-id: trunk@21537 -
2012-06-07 23:19:33 +00:00
florian
25e82bb1af
* fix stack frame generation on mips(el)
...
git-svn-id: trunk@21121 -
2012-04-29 21:29:06 +00:00
florian
e5ebb2a26e
* started to integrate the code of David Zhang's MIPS code from fpc-mips on sf into fpc trunk
...
git-svn-id: trunk@14219 -
2009-11-19 22:07:10 +00:00