Commit Graph

107 Commits

Author SHA1 Message Date
Jonas Maebe
4f8c390198 * fixed regvars so they work with newra (at least for ppc)
* fixed some volatile register bugs
  + -dnotranslation option for -dnewra, which causes the registers not to
    be translated from virtual to normal registers. Requires support in
    the assembler writer as well, which is only implemented in aggas/
    agppcgas currently
2003-08-17 16:59:20 +00:00
marco
c461204cdc * fix from Jonas. 2003-08-16 18:56:40 +00:00
peter
52c73e80d1 * start of sparc support for newra 2003-08-11 21:18:20 +00:00
mazen
f8be2992fd - dupplicated code removed 2003-08-11 14:22:06 +00:00
Jonas Maebe
355f84758e * several rg.allocexplicitregistersint/rg.deallocexplicitregistersint
pairs round calls to helpers
2003-07-23 11:01:14 +00:00
Jonas Maebe
d191387d5a * fixed 64bit int results with -dnewra (you can't free both registers and
then allocate two new ones, because then the registers could be reversed
    afterwards -> you get something like "movl %eax, %edx; movl %edx,%eax")
2003-07-21 13:51:50 +00:00
peter
1b633246b9 * sparc fixes 2003-07-08 21:23:24 +00:00
Jonas Maebe
f909d6a620 * fixed ppc compilation problems and changed VOLATILE_REGISTERS for x86
so that it doesn't include ebp and esp anymore
2003-07-06 21:50:33 +00:00
peter
32d076480b * framepointer fixes for sparc
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
daniel
268bfcf784 * Fixed register allocator. *Lots* of fixes. 2003-07-06 15:31:20 +00:00
Jonas Maebe
14bd8b899a * create_paraloc_info() is now called separately for the caller and
callee info
   * fixed ppc cycle
2003-07-05 20:21:26 +00:00
peter
b7d99ec934 * paraloc splitted in callerparaloc,calleeparaloc
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
Jonas Maebe
404d344d92 * lots of newra fixes (need getfuncretparaloc implementation for i386)!
* renamed all_intregisters to volatile_intregisters and made it
    processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
673d792cc6 * release function result registers if the functino result isn't used
* don't allocate function result register with -dnewra if there is none
  * some optimizations for non-x86 processor (don't save any registers
    before a call)
2003-06-15 16:52:02 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
peter
02b3ec4f28 * newra fixes 2003-06-12 21:10:50 +00:00
Jonas Maebe
5a5b7e0192 * deallocate parameter registers in time for newra
* for non-i386, procvars and methodpointers always have to be processed
    in advance, whether or not newra is defined
2003-06-12 18:38:45 +00:00
Jonas Maebe
55509b199b * (de)allocation of registers for parameters is now performed properly
(and checked on the ppc)
  - removed obsolete allocation of all parameter registers at the start
    of a procedure (and deallocation at the end)
2003-06-09 14:54:26 +00:00
peter
77d641fa2a * init/final of procedure data splitted from genentrycode
* use asmnode getposition to insert final at the correct position
    als for the implicit try...finally
2003-06-09 12:23:29 +00:00
Jonas Maebe
10eb92c546 * optimized assignments with on the right side a function that returns
an ansi- or widestring
2003-06-08 20:01:53 +00:00
Jonas Maebe
992be99250 * fixed weird error in the copyleft statement :) 2003-06-08 18:21:47 +00:00
Jonas Maebe
edb2179730 + added freeintparaloc
* ppc get/freeintparaloc now check whether the parameter regs are
    properly allocated/deallocated (and get an extra list para)
  * ppc a_call_* now internalerrors if pi_do_call is not yet set
  * fixed lot of missing pi_do_call's
2003-06-07 18:57:04 +00:00
Jonas Maebe
29f6a3f50e * fixed double secondpassing of procvar loads 2003-06-04 06:43:36 +00:00
peter
d91c880148 * cg.a_load_* get a from and to size specifier
* makeregsize only accepts newregister
  * i386 uses generic tcgnotnode,tcgunaryminus
2003-06-03 21:11:09 +00:00
daniel
5c6da84d2c * Restored original methodpointer code for non newra case 2003-06-03 20:27:02 +00:00
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
peter
230a14ff68 * getregisterfpu size parameter added
* op_const_reg size parameter added
  * sparc updates
2003-06-01 21:38:06 +00:00
peter
1e7ecac976 * FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results 2003-05-31 15:05:28 +00:00
peter
92430d4881 * typo in FUNCTION_RESULT_REG 2003-05-31 00:59:44 +00:00
peter
414bd5fa22 * more sparc cleanup
* accumulator removed, splitted in function_return_reg (called) and
    function_result_reg (caller)
2003-05-30 23:57:08 +00:00
Jonas Maebe
bb3a5166db * free callparatemps created for call-by-reference parameters 2003-05-29 10:05:40 +00:00
Jonas Maebe
ead9de924c * added missing initialization of rg.usedint{in,by}proc
* ppc now also saves/restores used fpu registers
  * ncgcal doesn't add used registers to usedby/inproc anymore, except for
    i386
2003-05-28 23:58:18 +00:00
peter
047a066711 * procinlinenode removed
* aktexit2label removed, fast exit removed
  + tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
072a55b73e * methodpointer self pushing fixed 2003-05-25 11:34:17 +00:00
peter
b1369666c4 * inline fixes 2003-05-25 08:59:16 +00:00
Jonas Maebe
ff12c6c54f * save fpu results in a normal fpu register on non-x86 processors 2003-05-24 13:36:54 +00:00
Jonas Maebe
ae88588462 - undid previous commit, it was wrong 2003-05-23 19:35:50 +00:00
Jonas Maebe
bee07d21a9 * fixed tests for whether a certain int register is unused 2003-05-23 19:11:58 +00:00
Jonas Maebe
e65fb85ce9 * fixed ppc compiler 2003-05-23 18:01:56 +00:00
peter
8ff5792776 * remove some unit dependencies
* current_procinfo changes to store more info
2003-05-23 14:27:35 +00:00
Jonas Maebe
cb279b2029 * changed tt_persistant to tt_persistent :)
* tempcreatenode now doesn't accept a boolean anymore for persistent
    temps, but a ttemptype, so you can also create ansistring temps etc
2003-05-17 13:30:08 +00:00
peter
abca40f041 * regvar fixes 2003-05-16 14:33:31 +00:00
peter
92ee1804b6 * removed selfpointer_offset, vmtpointer_offset
* tvarsym.adjusted_address
  * address in localsymtable is now in the real direction
  * removed some obsolete globals
2003-05-15 18:58:53 +00:00
Jonas Maebe
3a35aefdfd * patch from Peter for int64 function results 2003-05-14 19:36:54 +00:00
peter
05c05f2555 * failn removed
* inherited result code check moven to pexpr
2003-05-13 19:14:41 +00:00
peter
5e40220d67 * generate code for procvar first before pushing parameters. Made
the already existing code for powerpc available for all platforms
2003-05-13 15:18:18 +00:00
Jonas Maebe
02496a9934 * moved fpc_check_object call earlier for the ppc, so it can't destroy
already-loaded parameter registers
2003-05-12 18:17:55 +00:00
Jonas Maebe
3aeff19a60 * fixed procvar bug on the ppc (load procvar before loading para's,
because the procvar may otherwise destroy the already loaded paras)
2003-05-11 21:48:38 +00:00
peter
1a2eedd767 * self moved to hidden parameter
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
peter
e2cbae0ff1 * vs_hidden replaced by is_hidden boolean 2003-05-05 14:53:16 +00:00