Commit Graph

20598 Commits

Author SHA1 Message Date
nickysn
6634141bf4 + generate better code for division by negative power of 2 constants in the x86
(i386 and x86_64) code generator (same as the division by a positive power of
  2, followed by a NEG instruction, to invert the sign of the result; previously
  the code generator generated an IMUL instruction with a magic constant,
  followed by shift; the new code sequence should be both shorter and faster)

git-svn-id: trunk@37003 -
2017-08-21 11:35:20 +00:00
florian
99ce914a61 * fix tcg.a_load_cgparaloc_ref for ref. sizes of 7 on little endian systems
git-svn-id: trunk@37002 -
2017-08-21 09:08:02 +00:00
florian
b8354b9b60 * fix trgcpu.do_spill_replace for sparc64
git-svn-id: trunk@36998 -
2017-08-20 20:35:10 +00:00
florian
08fd0b1c5c * fix jump. tables for sparc64
git-svn-id: trunk@36997 -
2017-08-20 20:35:08 +00:00
florian
c8e448345a * return correct reg_cgsize for int. registers on sparc64
git-svn-id: trunk@36996 -
2017-08-20 20:35:06 +00:00
florian
4a54a88cca + implement tcg.a_load_cgparaloc_ref for un-even sizes and little endian systems as well
git-svn-id: trunk@36977 -
2017-08-20 18:40:58 +00:00
florian
37a5716819 * reuse more sparc code for sparc64
git-svn-id: trunk@36961 -
2017-08-20 17:20:43 +00:00
florian
7f72c780d8 * cleanup
git-svn-id: trunk@36960 -
2017-08-20 17:20:42 +00:00
florian
9529416ba0 + sparc64 support for the fpc executable
git-svn-id: trunk@36959 -
2017-08-20 17:20:40 +00:00
florian
7f286eb54e + define cpudelayslot: set during compiler compilation for CPUs having branch instructions with delay slot (MIPS, SPARC)
git-svn-id: trunk@36958 -
2017-08-20 17:20:38 +00:00
florian
049d7884cd * take advantage of the fact that SRA reg1,x,reg2 sign extends to the upper 32 bit bits of a 64 bit register
git-svn-id: trunk@36957 -
2017-08-20 17:20:37 +00:00
florian
ec141a716b * SLAX and MULX are candidates for the OpMov2Mov optimization as well
git-svn-id: trunk@36956 -
2017-08-20 17:20:35 +00:00
florian
f18ddd6a54 + SLLXSRxXST2ST assembler optimization for SPARC64
git-svn-id: trunk@36955 -
2017-08-20 17:20:33 +00:00
florian
265eae2cc1 + DebugMsg for SPARC assembler optimizer
git-svn-id: trunk@36954 -
2017-08-20 17:20:32 +00:00
florian
dba1761a76 + tcgx86.a_load_reg_ref cuts data if the ref. size is smaller than the reg. size
git-svn-id: trunk@36953 -
2017-08-20 16:45:02 +00:00
florian
a53d6bd6bd * pass the correct size to a_load_cgparaloc_ref in gen_load_cgpara_loc to avoid to overwrite adjacent data
git-svn-id: trunk@36952 -
2017-08-20 15:22:01 +00:00
florian
43b017bde0 * tcg.a_load_cgparaloc_ref checks the size of the ref exactly to avoid overwriting of adjacent data
git-svn-id: trunk@36951 -
2017-08-20 15:21:59 +00:00
florian
9b3e0a80df * a_loadfpu_ref_cgpara uses g_concatcopy instead of a_load_ref_ref
git-svn-id: trunk@36950 -
2017-08-20 15:21:57 +00:00
florian
09d99a6009 * sparc64 does not generate a unimp instruction if a parameter is returned in a memory location
git-svn-id: trunk@36949 -
2017-08-20 15:21:55 +00:00
florian
4988337e6f * correctly set std_param_align for sparc64
git-svn-id: trunk@36948 -
2017-08-20 15:21:54 +00:00
florian
9c3f5db022 * split create_paraloc_info_intern for sparc32 and sparc64
* fixed several sparc64 calling convention issues

git-svn-id: trunk@36947 -
2017-08-20 15:21:51 +00:00
florian
0caccdc238 * fix range check error
git-svn-id: trunk@36945 -
2017-08-20 15:21:48 +00:00
florian
b948a0738c * unified internalerror
* cosmetics

git-svn-id: trunk@36944 -
2017-08-20 15:21:46 +00:00
svenbarth
324e63b5d3 * a bit of language consolidation: "type helper" can now be used for records and classes as well
git-svn-id: trunk@36938 -
2017-08-18 15:29:19 +00:00
svenbarth
b6a3d66224 * adjust check for non-static class methods in class helpers in so far that only classes allow such methods (interfaces and objects would not either)
git-svn-id: trunk@36937 -
2017-08-18 15:27:47 +00:00
svenbarth
eef06e9bc6 * move the check whether a subclassed type helper extends a suitable subtype of the parent's extended type to a nested procedure
git-svn-id: trunk@36936 -
2017-08-18 15:25:53 +00:00
nickysn
b41762d1bf + perform the optimization in tmoddivnode.firstoptimize also for div/mod by
negative powers of 2 as well

git-svn-id: trunk@36930 -
2017-08-17 15:56:20 +00:00
nickysn
910e1eccc8 * set the bit mask, used for modulus by power-of-2 in a way, that is independent
from the sign of the divisor (so that negative powers of 2 can be supported as
  well in the future)

git-svn-id: trunk@36928 -
2017-08-17 15:19:37 +00:00
pierre
0041450edc Regenerated with -Tandroid for mipsel not mipseb
git-svn-id: trunk@36896 -
2017-08-14 10:48:27 +00:00
pierre
edfcb6558b -Tandroid is for mipsel not mipseb
git-svn-id: trunk@36895 -
2017-08-14 10:47:14 +00:00
Károly Balogh
addc3a2f94 m68k-palmos: fixed the syscall generation, and improved it to support the dispatch-selector-in-reg-D2 traps
git-svn-id: trunk@36892 -
2017-08-13 01:19:19 +00:00
Károly Balogh
8a71a70d3c m68k-palmos: sketched up some entirely untested syscall support, but it's probably close to what we need
git-svn-id: trunk@36891 -
2017-08-12 21:45:01 +00:00
svenbarth
f9c1d0c0db - TPPCMPWAssembler: remove support for 8-Byte alignment again as that shouldn't be necessary anymore with the alignment fixes in i_macos.pas; so it's better we get an internal error again if someone tries to use it
git-svn-id: trunk@36887 -
2017-08-12 15:42:04 +00:00
svenbarth
01046b8a17 * more sensible values for the alignments (based on the powerpc-darwin ones)
git-svn-id: trunk@36886 -
2017-08-12 15:35:24 +00:00
svenbarth
3fd68bf59c * agppcmpw.getopstr: always access RTOC symbols as [TC](RTOC) instead of only (RTOC)
git-svn-id: trunk@36885 -
2017-08-12 15:25:00 +00:00
svenbarth
4c71fb9e28 * TPPCMPWAssembler: small improvement for the debug output of writeexternal()
git-svn-id: trunk@36884 -
2017-08-12 14:25:00 +00:00
svenbarth
86e50d4a26 * TPPCMPWAssembler: also write import statements for AB_EXTERNAL_INDIRECT symbols
git-svn-id: trunk@36883 -
2017-08-12 14:23:16 +00:00
Károly Balogh
8830ee0a3b powerpc: assume that the MPW assembler supports 8 byte alignments. (based on some inconclusive internet search it should, but this is not confirmed)
git-svn-id: trunk@36881 -
2017-08-12 12:19:52 +00:00
Károly Balogh
e3ffeed1b2 m68k: removed traces of the never obsolete/ancient openbsd-m68k and never existed freebsd-m68k ports
git-svn-id: trunk@36877 -
2017-08-12 08:52:44 +00:00
svenbarth
0b02dab684 + new Delphi-compatible intrinsic GetTypeKind() which returns the TTypeKind of a type as a constant value (and thus can be optimized away in If- and Case-statements)
+ added test

git-svn-id: trunk@36875 -
2017-08-11 22:12:53 +00:00
svenbarth
7e692fac2b + new utility function get_typekind() to retrieve the TTypeKind value of a def
git-svn-id: trunk@36874 -
2017-08-11 22:02:22 +00:00
svenbarth
2095cca98f * ensure that source info is set correctly on Win64 by including i_win for all Windows targets (this is especially important when cross compiling (e.g. Java) as otherwise the utilities won't be found correctly)
git-svn-id: trunk@36871 -
2017-08-11 20:27:43 +00:00
pierre
6a416a6aa1 use --32/--64 for Darwin GNU assembler calls
git-svn-id: trunk@36870 -
2017-08-11 16:04:40 +00:00
Károly Balogh
a1c879d093 * some tabs-to-spaces and whitespace cleanup. no functional changes
git-svn-id: trunk@36868 -
2017-08-10 11:10:45 +00:00
nickysn
3c96090d3c + optimized avr code generation for shr by shiftcount=size*8-1 and sar by
shiftcount>=size*8-1. This is commonly used by code, that extracts the sign
  bit and improves code generation for signed division by power-of-2 as well.
  This also fixes building avr-embedded (mantis #32241), which was caused by an
  infinite loop in the register allocator, when regvars are enabled, due to too
  much register pressure, when building charset.pp after r36842.

git-svn-id: trunk@36867 -
2017-08-09 15:53:06 +00:00
nickysn
1476b5168d + added F_PL and F_MI to TResFlags for avr. This allows generating the BRPL and
BRMI instructions via a_jmp_cond

git-svn-id: trunk@36866 -
2017-08-09 15:14:33 +00:00
pierre
225c4f33e9 Use old -m68020 architecture option for m68k-palmos assembler (version 2.14 from PRC tools)
git-svn-id: trunk@36865 -
2017-08-09 13:37:17 +00:00
pierre
4c7b73d48d Adjust string size for CpuTxt and Targets string arrays
git-svn-id: trunk@36861 -
2017-08-08 18:17:20 +00:00
pierre
90e846a470 Obsolete system_i386_qnx and remove last references to system_i386_qnx
git-svn-id: trunk@36860 -
2017-08-08 18:00:02 +00:00
pierre
b74c805c49 Fix singlezipinstall for systems that set NoNativeBinaries to 1
git-svn-id: trunk@36857 -
2017-08-07 16:14:09 +00:00
pierre
527d2dea4f Set EXEEXT to SRCEXEEXT if NoNativeBinaries is set (allow snapshot of jvm-java on linux)
git-svn-id: trunk@36856 -
2017-08-07 10:35:07 +00:00
pierre
c98e9b230f Some watcom assembler wasm improvements
git-svn-id: trunk@36850 -
2017-08-04 21:15:10 +00:00
nickysn
ee79ff3635 * improved the optimization of signed modulus by power-of-2, so it uses less
operations. Previously generated code:
    sign:=sar(left,sizeof(left)*8-1);
    result:=((((left xor sign)-sign) and right) xor sign)-sign;
  New code:
    mask:=sar(left,sizeof(left)*8-1) and ((1 shl power)-1);
    result:=((left+mask) and right)-mask;

git-svn-id: trunk@36847 -
2017-08-04 16:20:50 +00:00
nickysn
a1928859b3 * in the optimization of signed division by power-of-2 constant in
tmoddivnode.firstoptimize, replaced tordconstnode(right).value-1 with
  tcgint((qword(1) shl power)-1), so that it becomes independent from the sign
  of right, so that in the future, we can also apply this optimization for
  negative power-of-2 divisors as well (only a unary minus node would have to
  be inserted in this case).

git-svn-id: trunk@36845 -
2017-08-04 15:50:33 +00:00
nickysn
277026ffd4 * perform the high level signed division by power-of-2 optimization for all
int types, larger than the ALU of the CPU, instead of just for 64-bit ints on
  32-bit or smaller CPUs.

git-svn-id: trunk@36842 -
2017-08-04 14:34:42 +00:00
nickysn
b9fdca6f49 + better high level optimization for 64-bit signed division by 2 on 32-bit and
lower CPUs. Instead of the (sar(temp,sizeof(temp)*8-1) and 1) expression, use
  the equivalent, but simpler (temp shr (sizeof(temp)*8-1))

git-svn-id: trunk@36839 -
2017-08-04 13:51:51 +00:00
pierre
9fb2652433 List possible CPU in alphabetical order
git-svn-id: trunk@36829 -
2017-08-04 11:14:12 +00:00
pierre
4d29122097 msgtxt.inc and msgidx.inc regenerated after: Remove obsolete -Tsunos help line, it is not accpeted by the compiler anymore
git-svn-id: trunk@36828 -
2017-08-04 09:38:59 +00:00
pierre
8fba611697 Remove obsolete -Tsunos help line, it is not accpeted by the compiler anymore
git-svn-id: trunk@36827 -
2017-08-04 09:38:08 +00:00
pierre
708b9e162c Add obsolete comment in ppudump output for obsoleted cpu and systems
git-svn-id: trunk@36824 -
2017-08-04 09:07:01 +00:00
pierre
3d5be0fd2d Add obsolete prefix to cpu_vm and system_vm_embedded, vm(vis) specfic code has been removed in rev 30836 dated 2015-05-09
git-svn-id: trunk@36823 -
2017-08-04 09:02:50 +00:00
pierre
f281ee339e Add obsolete prefix to cpu_ia64, system_ia64_win64 and system_ia64_embedded, ia64 specfic code has been removed in rev 30836 dated 2015-05-09
git-svn-id: trunk@36822 -
2017-08-04 08:54:34 +00:00
pierre
cf5c6d11ac Add obsolete prefix to cpu_alpha, system_alpha_linux and system_alpha_embedded, alpha specfic code has been removed in rev 30836 dated 2015-05-09
git-svn-id: trunk@36821 -
2017-08-04 08:29:02 +00:00
nickysn
ee4c82f5f5 * in the high level optimization of signed division by power-of-2 constant, set
shiftval to left.resultdef.size*8-1, instead of 31, so that it shifts by 15 or
  7 on 16-bit and 8-bit CPUs, when the integer type is small.

git-svn-id: trunk@36820 -
2017-08-03 16:02:27 +00:00
nickysn
19087d04da * replace several emit_const_reg calls that generate SHR or SAR instructions
with calls to cg.a_op_const_reg in the x86 div code generator, so that the
  same code can be used in the future for i8086 as well (SHR and SAR by
  constants other than 1 are 186+, so on 8086 they have to go through the CL
  register, which is handled correctly in cg.a_op_const_reg)

git-svn-id: trunk@36815 -
2017-07-31 16:02:52 +00:00
florian
f4718c0969 * made nop handling generic for sparc, so it is used by sparc64 as well
git-svn-id: trunk@36814 -
2017-07-29 20:06:14 +00:00
svenbarth
e76b1b2959 * use unique internalerror instead of copying that from ncgmem (though it should never happen that both occur at once in a AVR compiler)
git-svn-id: trunk@36809 -
2017-07-28 15:54:03 +00:00
nickysn
b92b0eac83 * also improve the code, generated for signed division by 2 on i8086, when
optimize cpu target is 486+, by replacing the sequence
    sar reg, 15
    and reg, 1
  with:
    shr reg, 15

git-svn-id: trunk@36807 -
2017-07-28 15:38:40 +00:00
Károly Balogh
071b588da2 netbsd/m68k: tweaks, so it works at least in my test-env with NetBSD/amiga 7.1
git-svn-id: trunk@36801 -
2017-07-27 19:00:37 +00:00
nickysn
9e8cc127b0 * improved the code, generated for signed division by 2 on i386 and x86_64 by
replacing the sequence
    sar reg, 31 (or 63)
    and reg, 1
  with:
    shr reg, 31 (or 63)

git-svn-id: trunk@36800 -
2017-07-27 16:02:30 +00:00
nickysn
bb7cd4866d * corrected comment in x86 division code - it said "signed", when it actually meant "negative"
git-svn-id: trunk@36799 -
2017-07-27 15:04:56 +00:00
nickysn
b6c3329f20 + also check for negative powers of 2 in the mod by power-of-2 constant x86 optimization, since the sign of the divisor is ignored by the 'mod' operation
git-svn-id: trunk@36797 -
2017-07-26 16:10:41 +00:00
nickysn
4b00414183 + added helper isabspowerof2, which checks whether abs(value) is a power of 2
git-svn-id: trunk@36796 -
2017-07-26 16:08:31 +00:00
pierre
7ee567fcca Use A_LD_R alias in functions using GOT indirection
git-svn-id: trunk@36795 -
2017-07-26 14:58:03 +00:00
pierre
ef3b006eb2 Use A_LD_R alias in do_spill_replace function
git-svn-id: trunk@36794 -
2017-07-26 14:57:21 +00:00
pierre
6e18d537fc Use A_LD_R and A_ST_R aliases for spilling_create_(load|store) functions
git-svn-id: trunk@36793 -
2017-07-26 14:56:11 +00:00
pierre
f5dfbb5ff3 Add A_ST_R and A_LD_R instruction alias for whole register size store/load
git-svn-id: trunk@36792 -
2017-07-26 14:53:30 +00:00
pierre
6f6139609d Add explicit '.set nompis16' at front of stabs debug information to solve bug report 32138
git-svn-id: trunk@36781 -
2017-07-24 07:31:31 +00:00
florian
a2e442e111 * keep the names of X, Y and Z in assembler files, fixes issue #32150
git-svn-id: trunk@36776 -
2017-07-23 19:24:45 +00:00
florian
8c33fbbe64 * indention fixed
git-svn-id: trunk@36775 -
2017-07-23 19:24:43 +00:00
florian
7ed3757f8c + TCGSparc64.a_load_reg_ref_unaligned
git-svn-id: trunk@36763 -
2017-07-21 21:17:41 +00:00
florian
eaa33f416c * sparc64: fix int to bool type conversions for 64 bit ints
git-svn-id: trunk@36762 -
2017-07-21 20:41:14 +00:00
nickysn
7c306f18e3 + perform unsigned modulus by power of 2 constant by using an AND instruction (instead of DIV) on x86
git-svn-id: trunk@36756 -
2017-07-21 15:58:26 +00:00
nickysn
9853c4a2a3 + enabled the load-modify-store optimization for the double argument version
(i.e. shift/rotate by k) of sar, rol and ror with type conversion on i386 and
  x86_64.

git-svn-id: trunk@36755 -
2017-07-21 13:17:18 +00:00
nickysn
c8377d3bfc + enabled the load-modify-store optimization for the double argument version
(i.e. shift/rotate by k) of sar, rol and ror on i386 and x86_64. Only the case
  without any implicit type conversions is handled for now.

git-svn-id: trunk@36753 -
2017-07-20 14:09:25 +00:00
pierre
6fdd952fd9 Fix check for setting use_unlimited_pic_mode for sparc64
git-svn-id: trunk@36746 -
2017-07-18 18:02:36 +00:00
nickysn
e562926763 + implemented the load/modify/store optimization for i:=sar/rol/ror(i) when
there's a type conversion involved as well (e.g. uint32:=SarLongInt(unit32) ).
  This only works for signed<->unsigned conversions of equal size, due to the
  nature of the sar, rol and ror operations.

git-svn-id: trunk@36745 -
2017-07-18 13:48:35 +00:00
pierre
903955f329 Add 's' for sparc64 specific message prefix
git-svn-id: trunk@36744 -
2017-07-18 12:50:47 +00:00
pierre
4c3d8d422a Add _GLOBAL_OFFSET_TABLE_ for sparc64 if -Cg is used
git-svn-id: trunk@36743 -
2017-07-18 12:49:26 +00:00
pierre
f3459454e6 Fix compilation failure for sparc CPU
git-svn-id: trunk@36741 -
2017-07-18 04:47:49 +00:00
nickysn
cb0c947f37 + enabled the load-modify-store optimization for the single argument version
(i.e. shift/rotate by 1) of sar, rol and ror on i386 and x86_64.

git-svn-id: trunk@36739 -
2017-07-17 14:50:39 +00:00
florian
a7d127cf08 * only sparc v7 and v8 require an instruction between FCMP and the branch
git-svn-id: trunk@36737 -
2017-07-16 09:24:20 +00:00
florian
ac894831e4 * use the 64 bit path in tSparcmoddivnode.pass_generate_code for all 64 bit types (including currency) on sparc64
git-svn-id: trunk@36736 -
2017-07-16 09:24:18 +00:00
svenbarth
0c42b6f44a * fix for Mantis #32118: also provide a range for undefined defs
+ added test

git-svn-id: trunk@36723 -
2017-07-10 19:47:21 +00:00
svenbarth
ca78bfffae * fix for Mantis #32111: allow undefined defs as a for loop's counter; the specialization will decide whether it will compile or not
+ added test

git-svn-id: trunk@36722 -
2017-07-10 19:45:15 +00:00
florian
bccc2f6863 + tcg.a_loadfpu_intreg_reg, make use of it in tcg.a_load_cgparaloc_anyreg
git-svn-id: trunk@36717 -
2017-07-09 21:33:24 +00:00
florian
dd3d62425c * guard case statement by internalerror to avoid a warning
git-svn-id: trunk@36716 -
2017-07-09 21:33:22 +00:00
florian
f30bf547e2 * TCGSparcGen.maybeadjustresult adapted for sparc64
git-svn-id: trunk@36711 -
2017-07-09 18:14:14 +00:00
Károly Balogh
eaa769053b m68k: enable 68881 FPU on Linux and NetBSD by default
git-svn-id: trunk@36699 -
2017-07-08 23:54:39 +00:00
Károly Balogh
0b561b6c8f powerpc: enable SUPPORT_GET_FRAME
git-svn-id: trunk@36698 -
2017-07-08 23:51:55 +00:00
svenbarth
0f9451fbb7 * switch x86_64-linux to indirect entry, essentially allowing for the use of dynamic packages on that target
git-svn-id: trunk@36690 -
2017-07-08 20:39:36 +00:00
florian
13801bebfe * pass debian specific path to c init files to ld for sparc64 as it is done on other targets as well
git-svn-id: trunk@36676 -
2017-07-07 22:33:42 +00:00
florian
25950b8575 * 64 bit multiplications for sparc64 fixed
git-svn-id: trunk@36675 -
2017-07-07 22:18:16 +00:00
florian
bd57ca99a8 * cosmetics
git-svn-id: trunk@36672 -
2017-07-07 22:18:11 +00:00
florian
cbe9a1b65f * make thlcgcpu.g_intf_wrapper usable for sparc64 as well
git-svn-id: trunk@36665 -
2017-07-07 13:17:42 +00:00
florian
8401a460e5 + support 64 bit sar on sparc64
* fix on sparc64 broken a_cmp_const_reg_label and a_cmp_reg_reg_label

git-svn-id: trunk@36661 -
2017-07-07 10:11:44 +00:00
florian
1f4d6e8a4d * compilation on 32 bit sparc fixed
git-svn-id: trunk@36660 -
2017-07-07 09:30:50 +00:00
florian
c8c14d8db9 * pass -32 to the sparc assembler
git-svn-id: trunk@36659 -
2017-07-07 09:08:05 +00:00
florian
a9a0ca6649 * sparc64 needs a helper for overflow checked 64 bit division operations
git-svn-id: trunk@36658 -
2017-07-07 09:08:02 +00:00
florian
ca51bd56c4 + a_jmp_cond64
* generate 64 bit comparisons if needed

git-svn-id: trunk@36657 -
2017-07-06 18:02:24 +00:00
Károly Balogh
8a22807efa m68k: also add Debian's custom library path like on other CPUs
git-svn-id: trunk@36645 -
2017-07-04 22:51:08 +00:00
florian
109612b7e1 * correctly load 32 bit values on sparc64
git-svn-id: trunk@36644 -
2017-07-04 20:52:47 +00:00
florian
57a137068b * integer registers must have the size R_SUBWHOLE for sparc, resolves issue #32065
git-svn-id: trunk@36639 -
2017-07-03 20:49:06 +00:00
florian
28cfa838b5 + support for the different flag registers of sparc
* fixing 64 bit cmp operations on sparc64

git-svn-id: trunk@36638 -
2017-07-03 20:49:05 +00:00
florian
4b30e5ee11 + TSparcmoddivnode.pass_generate_code for SPARC64
git-svn-id: trunk@36637 -
2017-07-03 20:49:03 +00:00
florian
5bc9890727 + more sparc64 instructions
git-svn-id: trunk@36636 -
2017-07-03 20:49:01 +00:00
florian
5b91fd7065 + taicpu.op_reg_sym for sparc
git-svn-id: trunk@36635 -
2017-07-03 20:49:00 +00:00
florian
65c9e6c32e + fccX registers
git-svn-id: trunk@36633 -
2017-07-03 20:48:56 +00:00
florian
94c3ac027b * fixed spelling: fpc_mode -> gpc_mode
git-svn-id: trunk@36632 -
2017-07-03 20:48:53 +00:00
svenbarth
ad65ff5600 * insert symbol only once
git-svn-id: trunk@36620 -
2017-06-30 15:59:33 +00:00
svenbarth
a301bf75ea * ngenutil.tnodeutils.sym_maybe_initialize: don't use "is" operator, but corresponding is_* functions
git-svn-id: trunk@36617 -
2017-06-29 18:51:35 +00:00
Károly Balogh
358f8eb85d m68k: do not internalerror on localsize < 0. this condition is handled elsewhere in the compiler properly, so we just let it through
git-svn-id: trunk@36612 -
2017-06-29 00:11:19 +00:00
Károly Balogh
ad89a972e5 m68k: also have tf_safecall_clearstack flag defined for Linux
git-svn-id: trunk@36611 -
2017-06-28 23:55:17 +00:00
Károly Balogh
0370d52f20 m68k: support longword to double conversions with the FPU, without a helper, better code for some other cases
git-svn-id: trunk@36609 -
2017-06-28 01:27:02 +00:00
Károly Balogh
02ed753fab m68k: yet another attempt to fix small struct alignments on stack
git-svn-id: trunk@36605 -
2017-06-27 02:36:55 +00:00
Károly Balogh
8a8753eb79 m68k: reenabled some safety checks and removed obsolete TODO comment
git-svn-id: trunk@36604 -
2017-06-26 19:45:11 +00:00
Károly Balogh
d5e1b391f9 m68k: when calling g_concatcopy for para copy, still only copy cgpara.intsize amount of bytes
git-svn-id: trunk@36603 -
2017-06-26 19:40:13 +00:00
Jeppe Johansen
09a8cafcd7 Restricted MlaCmp>Mlas optimization to only work in ARM mode.
git-svn-id: trunk@36602 -
2017-06-26 18:14:46 +00:00
Károly Balogh
22ae3cd186 m68k: revert the r36568 and the followup fix attempts altogether, as they broke Amiga support entirely. there will be a cleanup before another fixing attempt
git-svn-id: trunk@36598 -
2017-06-26 16:02:26 +00:00
Jeppe Johansen
f3889a191b Generate bx lr exit instruction in Thumb-2 instead of mov pc,lr as bx lr will trigger an exception return but mov doesn't.
git-svn-id: trunk@36597 -
2017-06-26 08:05:31 +00:00
Károly Balogh
a14b2fd80a m68k: modify some alignment calculations in the register calling convention code, hopefully it fixes some Amiga regressions introduced in r36568
git-svn-id: trunk@36596 -
2017-06-25 19:33:21 +00:00
Károly Balogh
890f4ac2bc m68k: use 2 byte alignments for C structs on Linux
git-svn-id: trunk@36595 -
2017-06-24 23:19:00 +00:00
Károly Balogh
41f72a0e6d m68k: some initial support for C ABIs which use an address register to return structs by address
git-svn-id: trunk@36592 -
2017-06-24 19:03:58 +00:00
Károly Balogh
da11451934 m68k: revert the 2 byte C record alignment fix on Linux. sadly it completely breaks RTTI, which takes longer to fix, so meanwhile, at least cause no regressions
git-svn-id: trunk@36591 -
2017-06-24 10:50:24 +00:00
Károly Balogh
4258413e8c m68k: revert recordalignmax to 2 on Linux. the value of 4 caused a bunch of weird RTTI test failures
git-svn-id: trunk@36590 -
2017-06-23 21:24:39 +00:00
Károly Balogh
bf3478fb35 m68k: fix C struct alignment on Linux. tested against GCC on current Debian-m68k
git-svn-id: trunk@36589 -
2017-06-23 20:47:06 +00:00
Károly Balogh
b481129f4e m68k: for cdecls with the SVR4 ABI return results both in A0 and D0
git-svn-id: trunk@36588 -
2017-06-23 19:21:20 +00:00
Károly Balogh
30176f3116 m68k: enable inlined get_frame for m68k
git-svn-id: trunk@36577 -
2017-06-22 17:43:24 +00:00
Károly Balogh
cf8aebf00f m68k: enabled safecall exception wrappers with linux
git-svn-id: trunk@36575 -
2017-06-22 15:31:32 +00:00
Károly Balogh
26d5500b7c m68k: one more alignment fix, hopefully fixes regressions not fixed by r36569
git-svn-id: trunk@36570 -
2017-06-22 02:41:36 +00:00
Károly Balogh
8ed84afdd4 m68k: try to fix some breakages caused by r36568
git-svn-id: trunk@36569 -
2017-06-22 02:11:42 +00:00
Károly Balogh
23f4304881 m68k: hopefully fix passing of smaller-than-alignment sized records/structs for stdcall/cdecl
git-svn-id: trunk@36568 -
2017-06-22 01:14:02 +00:00
florian
719faf5e54 * more restrictive alignment for variables
git-svn-id: trunk@36549 -
2017-06-19 21:18:11 +00:00
florian
c321fb35f1 * integer registers on sparc(64) do not have an explicit size anymore, simplifies compiler code sharing between sparc32 and sparc64
+ %icc and %xcc register for sparc64

git-svn-id: trunk@36548 -
2017-06-19 21:18:09 +00:00
florian
7edc8407fc + flushw opcode
git-svn-id: trunk@36547 -
2017-06-19 21:18:07 +00:00
florian
3ee8e836e9 * properly handle constants from -2^32 to -1 on sparc64
git-svn-id: trunk@36546 -
2017-06-19 21:18:05 +00:00
florian
2ad265505b * properly align unicode- and ansistring constants
git-svn-id: trunk@36545 -
2017-06-19 21:18:03 +00:00
florian
2e2e560d5a * use dwarf on sparc64
git-svn-id: trunk@36539 -
2017-06-19 21:17:51 +00:00
florian
85050f3383 * Makefiles regenerated
git-svn-id: trunk@36528 -
2017-06-18 21:06:34 +00:00
florian
e5977d5c52 + support sparc64 as host/source cpu
git-svn-id: trunk@36525 -
2017-06-18 21:06:29 +00:00