Commit Graph

581 Commits

Author SHA1 Message Date
Jonas Maebe
9a683a0288 * converted new_exception to hlcgobj
o also gets rid of the ifdefs

git-svn-id: branches/hlcgllvm@28377 -
2014-08-10 19:40:32 +00:00
Jonas Maebe
6e1d370417 * split off the texceptaddr declaration into rtl/inc/excepth.inc, so it can
be included at the start of the implementation of the system unit (before
    the rest of except.inc)
  * catch declarations in/loading from the system unit of the TExceptAddr type
  * use this type instead of hardcoded size constants in the compiler
  * in generic code that is active for all targets, puts its use in a virtual
    method since it's only valid for targets using setjmp/longjmp-style
    exception handling (and the record is not defined at all in the JVM RTL)

git-svn-id: branches/hlcgllvm@28376 -
2014-08-10 19:40:29 +00:00
Jonas Maebe
142d5d6d06 - removed get_jumpbuf_size/align, use rec_jmp_buf instead
git-svn-id: branches/hlcgllvm@28371 -
2014-08-10 19:40:16 +00:00
Jonas Maebe
7949bebb8d * synchronised with r28168 of trunk
git-svn-id: branches/hlcgllvm@28169 -
2014-07-05 21:30:28 +00:00
sergei
53b0ef1f61 - Removed superfluous tai_align, the new_section procedure creates one itself.
git-svn-id: trunk@28027 -
2014-06-21 22:36:17 +00:00
Jonas Maebe
bacd303208 * synchronized with trunk up to r27758
git-svn-id: branches/hlcgllvm@27779 -
2014-05-12 16:12:34 +00:00
nickysn
9da1ee0138 * i8086 far data model fixes in the copying of openarray value params
git-svn-id: trunk@27470 -
2014-04-04 20:18:47 +00:00
nickysn
36aae69e2b + initialize the initialloc for push_addr_param parameters correctly in i8086
far data memory models

git-svn-id: trunk@27455 -
2014-04-03 17:24:41 +00:00
nickysn
cf1d60b8eb + added size info to the 'Var X located at' comment generated in the asm output
git-svn-id: trunk@27454 -
2014-04-03 16:54:01 +00:00
nickysn
66d7beb7fe * i8086 far data memory model fix for except_buf_size
git-svn-id: trunk@27371 -
2014-03-30 12:00:20 +00:00
nickysn
5ae9443d66 * moved the EXCEPT_BUF_SIZE const to be local to ncgutils.get_exception_temps,
because that's the only place where it's used

git-svn-id: trunk@27369 -
2014-03-30 11:27:07 +00:00
florian
a4b6e99db1 * increase refs of hidden high parameter if the corresponding open/const array is used
git-svn-id: trunk@27331 -
2014-03-29 13:10:54 +00:00
nickysn
891ab86254 * fixed ncgutil.gen_load_vmt_register and tcgloadvmtaddrnode.pass_generate_code
for i8086 far data memory models by using the high level code generator

git-svn-id: trunk@27326 -
2014-03-28 23:16:14 +00:00
nickysn
149db35910 * i8086 far data memory model fix in ncgutil.new_exception
git-svn-id: trunk@27242 -
2014-03-23 18:11:50 +00:00
Jonas Maebe
73a3f5ced4 * moved ncgutil.maybechangeloadnodereg() to hlcg.maybe_change_load_node_reg()
and moved ifdef'd jvm code to overridden method

git-svn-id: trunk@27153 -
2014-03-16 11:24:40 +00:00
Jonas Maebe
4065483a50 * completed thlcgobj.location_force_fpureg(), use it everywhere and removed
ncgutil/thlcg2ll.location_force_fpureg()

git-svn-id: trunk@27071 -
2014-03-10 09:01:05 +00:00
Jonas Maebe
e9268a0a14 * synchronised with trunk up till r26975
git-svn-id: branches/hlcgllvm@26976 -
2014-03-06 21:36:58 +00:00
Jeppe Johansen
2227045e23 Replace forbidden chars in more places in the GAS assembler writer.
Add support for .set and .weak on AVR.
Fix 64 bit negation on AVR.
Add cpu_capabilities to cpuinfo.pas and fixed some peephole optimizations.
Pass >4 byte parameters by reference.

git-svn-id: trunk@26943 -
2014-03-04 08:01:23 +00:00
Jeppe Johansen
66f5b71fe9 Fixed passing of 32bit arguments on 8-bit architectures.
Added initial RTL startup code for AVR.

git-svn-id: trunk@26931 -
2014-03-02 20:53:21 +00:00
sergei
53556f529d * gen_alloc_symtable: don't use current_procinfo.procdef, the necessary procdef is passed in 'pd' parameter.
git-svn-id: trunk@26663 -
2014-02-03 10:21:56 +00:00
sergei
949907f1f3 * Don't emit "Temps allocated between..." comment in assembler listing if procedure has no temps.
git-svn-id: trunk@26660 -
2014-02-03 09:55:46 +00:00
Jonas Maebe
4e9c54278e * the function result of constructors always is self, always is valid and is
not stored in procdef.funcretsym -> fix check so that SSA is not performed
    on it in constructors when exit is used

git-svn-id: trunk@26650 -
2014-02-02 09:09:44 +00:00
florian
e6a9e385d3 * spelling fixed
git-svn-id: trunk@26435 -
2014-01-12 20:17:44 +00:00
nickysn
420f30bacd * fixed the handling of OS_PAIR/OS_SPAIR-sized parameters in ncgutil.gen_load_cgpara_loc. This fixes 32-bit regvar'd parameters on i8086.
git-svn-id: trunk@26278 -
2013-12-24 23:07:44 +00:00
sergei
409e176ded * Factored reusable (SEH-related) piece of code into separate procedure.
git-svn-id: trunk@26157 -
2013-12-01 11:47:12 +00:00
Jonas Maebe
d14ce7817f * factored out setlocalloc and the code to set the initial paravarsym
location from ncgutil into hlcgobj, and override/implement it for llvm
    (use the symbolic parameter names)

git-svn-id: branches/hlcgllvm@26052 -
2013-11-11 11:16:16 +00:00
nickysn
c51c75936b * 16/8-bit ALU fixes in ncgutil.gen_free_symtable
git-svn-id: trunk@25762 -
2013-10-13 16:48:15 +00:00
nickysn
1dabaf5ded * 16/8-bit ALU fixes in ncgutil.add_regvars
git-svn-id: trunk@25761 -
2013-10-13 16:41:32 +00:00
nickysn
d1f0eea902 * 16/8-bit ALU fixes in ncgutil.gen_alloc_regvar
git-svn-id: trunk@25760 -
2013-10-13 16:31:16 +00:00
nickysn
fd05d0c14e * 16/8-bit ALU fix in maybechangeloadnodereg. This fixes the tbopr and trox2
tests on i8086.

git-svn-id: trunk@25752 -
2013-10-13 11:35:56 +00:00
sergei
b8a76c5da2 - Removed gen_proc_symbol procedure, no longer used, replaced by thlcgobj.gen_proc_symbol method.
git-svn-id: trunk@25335 -
2013-08-23 10:54:57 +00:00
sergei
c3350d13f9 * MIPS: floating point parameters on stack should be loaded to/from FPU registers directly, without using temp.
git-svn-id: trunk@25122 -
2013-07-17 11:00:46 +00:00
Jonas Maebe
2dd75e707e * renamed thlcgobj.tcgsize2orddef to defutil.cgsize_orddef
git-svn-id: trunk@24743 -
2013-06-01 18:28:15 +00:00
Jonas Maebe
5051453806 + support for LOC_(C)MMREGISTER in hlcg
o migrated location_force_mmregister_scalar from ncgutil to hlcgobj

git-svn-id: trunk@24661 -
2013-05-31 12:05:14 +00:00
nickysn
47fe8e03b1 * refactored ncgutil.gen_load_cgpara_loc to use cgpara.locations_count
git-svn-id: trunk@24532 -
2013-05-19 18:49:21 +00:00
nickysn
ecb5a4866d * refactored the int64 result passing in ax:bx:cx:dx to use 4 paralocs, instead of the GetNextReg hack
git-svn-id: trunk@24527 -
2013-05-19 12:50:15 +00:00
florian
d4c7afbfe8 + generate thumb_func directives for thumb as well
git-svn-id: trunk@24377 -
2013-04-29 18:23:01 +00:00
florian
0e41df598e * merge i8086 branch by Nikolay Nikolov
git-svn-id: trunk@24324 -
2013-04-25 20:23:51 +00:00
nickysn
a5c5b05362 * initial support for system procs that use calling conventions that push left to right on i8086 or i386
git-svn-id: branches/i8086@24282 -
2013-04-21 13:26:12 +00:00
sergei
d54d38b4ab * Moved all code responsible for writing VMTs and interface wrappers (nobj.TVMTWriter, ncgutil.gen_intf_wrappers, ptype.write_persistent_type_info) into a new unit ncgvmt.pas.
This improves compiling speed a bit (two iterations over symtables replaced by one, code generator is created once per unit rather than once per class).
In perspective it makes possible to reduce amount of generated smartlink sections and global labels.

git-svn-id: trunk@24269 -
2013-04-19 13:31:27 +00:00
nickysn
3870f76cda * ncgutil: set pushexceptaddr_frametype_cgsize and setjmp_result_cgsize according to cpu16bitaddr, instead of cpu16bitalu
git-svn-id: branches/i8086@24233 -
2013-04-12 13:38:18 +00:00
florian
075abd6220 + support of stackframesize for arm thumb
+ estimatedtempsize to get a good estimatation for architectures which require to know the stack size before

git-svn-id: trunk@24188 -
2013-04-07 21:00:38 +00:00
florian
43b6139b66 + setlocalloc resets currentregloc
git-svn-id: trunk@24118 -
2013-04-01 19:52:46 +00:00
florian
364f170765 * cosmetic formatting changes
git-svn-id: trunk@24117 -
2013-04-01 19:52:43 +00:00
nickysn
1e28790e99 * fpc_PushExceptAddr's parameter Ft changed from LongInt to SmallInt on 16-bit CPUs for better efficiency
git-svn-id: branches/i8086@24036 -
2013-03-28 15:44:50 +00:00
nickysn
f38114b34b * the result of FPC_SETJMP changed to 16-bit int on 16-bit CPUs
git-svn-id: branches/i8086@24001 -
2013-03-25 18:12:18 +00:00
nickysn
8d2b7df6d6 * fixed functions returning longint on i8086
git-svn-id: branches/i8086@23803 -
2013-03-12 13:35:19 +00:00
sergei
5e46732bc8 + One more missing call to unget_para (MIPS-specific)
git-svn-id: trunk@23766 -
2013-03-10 04:08:43 +00:00
sergei
54aefb1ba0 * gen_load_cgpara_loc, MIPS-specific: added missing calls to unget_para, and disabled part that loads upper and lower halves of Double values from integer registers. It produces invalid code, but that's hidden by MIPS code generator copying all parameters to stack (so this code is never executed).
git-svn-id: trunk@23622 -
2013-02-15 22:05:24 +00:00
paul
51825b6f2e compiler: change ret_in_param to accept tabstractprocdef instead of tproccalloption to allow check more options (required for record constructor implementation)
git-svn-id: trunk@23394 -
2013-01-16 01:14:23 +00:00