Commit Graph

41884 Commits

Author SHA1 Message Date
paul
93883d1264 compiler: load binary unicode mappings in cpavailable() call instead of separate loadbinarycp() call
git-svn-id: trunk@26379 -
2014-01-04 16:42:20 +00:00
paul
52d1cbc544 compiler:
+ add -FM command line option to pass directory for unicode binary files
  + enable dynamic loading of charset files (don't disable runtime charset files for the moment)

git-svn-id: trunk@26378 -
2014-01-04 15:44:18 +00:00
Jonas Maebe
d1b2a5f362 * changed the initial value DefaultFileSystemCodePage from CP_ACP to CP_UTF8:
o since we always use UTF-16 for OS file API calls, this will only affect
     possible intermediate code page conversions inside RTL routines and hence
     prevent potential data loss. This was already the same for NativeNT and
     WinCE, which are in the same boat
   o DefaultRTLFileSystemCodePage, which specifies the code page used to return
     strings from single byte RTL routines, remains CP_ACP and hence nothing
     will change as far as programs using the RTL are concerned

git-svn-id: trunk@26377 -
2014-01-04 15:05:42 +00:00
paul
80cec37d06 rtl: add charmap for 856 codepage
git-svn-id: trunk@26376 -
2014-01-04 09:29:38 +00:00
paul
7b1f586131 rtl: remove unneeded charset classes
git-svn-id: trunk@26375 -
2014-01-04 08:59:20 +00:00
marco
1c2a77a60f * tested + fixed rtl-console makefile.
* updated toplevel makefile, but testing it failed to run for other reasons.
    (libtar fpmkunit)

git-svn-id: trunk@26374 -
2014-01-04 00:13:43 +00:00
marco
90fbb6360d * test rtl-console for powerpc targets.
- morphos regeneration Makefile.fpc
 - aix unrelated fix: addition of pthread_attr_destroy (r26220 dec 11th)

git-svn-id: trunk@26373 -
2014-01-03 22:48:14 +00:00
marco
a001e12d04 * rtl-console initial version.
git-svn-id: trunk@26372 -
2014-01-03 22:19:02 +00:00
marco
1df3226a2f * skeleton for rtl-console package. Not yet active.
git-svn-id: trunk@26371 -
2014-01-03 21:46:02 +00:00
nickysn
b8203a3406 * fixed tcg8086.gen_cmp32_jmp1 for the less than/greater than cases
git-svn-id: trunk@26370 -
2014-01-03 18:06:21 +00:00
nickysn
270444508a * fixed not(boolean32) and not(boolean64) on i8086
git-svn-id: trunk@26369 -
2014-01-03 15:18:07 +00:00
pierre
de89827eb7 Clean up comment at start of fpc_mul_dword
git-svn-id: trunk@26368 -
2014-01-03 13:15:34 +00:00
Jonas Maebe
ab4844bdff * give an internal error when trying to set/get procdef properties that are
not available

git-svn-id: trunk@26367 -
2014-01-03 12:23:27 +00:00
pierre
a4e08f8611 Move int32p.inc inclusion to end of i8086.inc as it needs to be parsed before generic.inc
git-svn-id: trunk@26366 -
2014-01-03 11:42:53 +00:00
Jonas Maebe
b106ded0e9 * use SystemFileName instead of the original FileName in DeleteFile()
git-svn-id: trunk@26365 -
2014-01-03 10:59:25 +00:00
sergei
d2a9308181 + SPARC: implemented register spill replacement.
git-svn-id: trunk@26364 -
2014-01-03 08:14:43 +00:00
sergei
0afd95e840 * SPARC, tmoddivnode improvements/fixes:
* don't bother reusing locations
  * don't optimize division into shift if overflow checking is enabled
  * if denominator is a constant and fits into 13 bit range, use it directly and save a register.

git-svn-id: trunk@26363 -
2014-01-03 08:09:32 +00:00
nickysn
cf6f408214 + implemented the tcg8086.a_cmp_*_*_label methods for i8086. How did the i8086
code generator even work without these?

git-svn-id: trunk@26362 -
2014-01-03 03:31:51 +00:00
florian
ac120d075a * moved directory handling code
git-svn-id: trunk@26361 -
2014-01-02 18:24:11 +00:00
Jonas Maebe
32b9926536 * don't check forwarddefs of copied record/objectdefs (there are none, since
such a def is just a renamed version of a def that's defined/implemented/
    checked elsewhere) -- fixes compiler crash when compiling webtbs/tw3930
    after r26332)

git-svn-id: trunk@26360 -
2014-01-02 16:21:06 +00:00
florian
1fc6316cbc * use generic 32*32 -> 64 bit multiplication on arm thumb
git-svn-id: trunk@26359 -
2014-01-02 15:23:12 +00:00
marco
0bb6469b80 * remove accidentally inserted BOM, as reported by M. Ring.
git-svn-id: trunk@26358 -
2014-01-02 14:34:28 +00:00
marco
ebe262762a * Clean out of $i textrec and filerec includes that are redundant now that cpstrrtl exposes
those records via system. 

git-svn-id: trunk@26356 -
2014-01-02 13:26:09 +00:00
masta
bcec29f1b4 Disable generation of UMULL when generating thumb1 code
git-svn-id: trunk@26355 -
2014-01-02 13:22:15 +00:00
masta
e5b3d89a5d Add CPUARM_HAS_UMULL flag
Pre armv4 and all *M variants to not support UMULL and SMULL.

The Flag now gets used for 32x32->64 and 64x64->64 optimized code.

git-svn-id: trunk@26354 -
2014-01-02 13:06:18 +00:00
sergei
36d0c8a5a7 * x86 and SPARC: fixed handling 64-bit (qwordbool) values in tcgnotnode (partial fix for Mantis #25255).
* Moved handling LOC_JUMP locations to helper method of base class, it appears to be the same for all targets.

git-svn-id: trunk@26353 -
2014-01-02 10:29:44 +00:00
nickysn
e1332304ef * when converting Hi() to a shr node, convert the right shr const parameter to
sinttype, instead of u32inttype. This:
  1) is consistent with what type conversion tshlshrnode.pass_typecheck inserts
     on the right side
  2) avoids the expensive conversion to 32-bit and the even more expensive
     performing the operation in 32-bit on i8086

git-svn-id: trunk@26352 -
2014-01-01 23:57:42 +00:00
nickysn
d4e01637e7 * use nativeint, instead of longint in fpc_div_dword and fpc_mod_dword, because
it produces more efficient code on 16-bit and 8-bit platforms.

git-svn-id: trunk@26351 -
2014-01-01 20:46:28 +00:00
marco
2a4385c196 * simple strtomd5 function from mantis #23397
git-svn-id: trunk@26350 -
2014-01-01 19:52:21 +00:00
nickysn
988b742d71 * avoid the meaningless conversion of the right shl/shr argument to 32-bit on
i8086 in the cases when the left argument is 32-bit.

git-svn-id: trunk@26349 -
2014-01-01 19:03:17 +00:00
masta
f8889e3d6d Use optimize_op_const in ARM cg
This uses the generic optimizations done in optimize_op_const. Due to
this we can also drop some of the optimizations done in the arm-specific
code.

git-svn-id: trunk@26348 -
2014-01-01 18:26:42 +00:00
masta
d32abdf047 Little cleanup in tarmaddnode.second_add64bit
git-svn-id: trunk@26347 -
2014-01-01 18:26:38 +00:00
masta
cec633e86e Optimized support for 32x32 => 64bit multiplications on ARM
This code uses UMULL and SMULL to perform the multiplications, which
take two 32bit source registers and two 32bit destination registers.

git-svn-id: trunk@26346 -
2014-01-01 18:26:29 +00:00
nickysn
dcb9306de8 * perform the OP_AND, OP_OR and OP_XOR optimizations for 0 and $FFFF values
independently also in tcg8086.a_op_const_ref

git-svn-id: trunk@26345 -
2014-01-01 17:45:40 +00:00
nickysn
9a1e33d2a0 * tcg8086.a_op_const_reg: perform the OP_AND, OP_OR and OP_XOR optimizations for
$0000 and $FFFF values on the low and the high words independently.

git-svn-id: trunk@26344 -
2014-01-01 14:57:44 +00:00
nickysn
9eb4419ba3 * fixed the conversion and assignment to the 64-bit boolean types on the i8086
git-svn-id: trunk@26343 -
2013-12-31 17:18:20 +00:00
nickysn
974fea30b2 * use only one temporary 16-bit register, instead of two in tcg8086.g_flags2ref
when the target ref is 32-bit.

git-svn-id: trunk@26342 -
2013-12-31 16:27:11 +00:00
nickysn
72e526b9b1 * taddnode.pass_1: set correctly expectloc to LOC_JUMP or LOC_FLAGS for compare
nodes on 16/8-bit targets. This fixes (among other things) the conversion of
  booleans to boolean16 or boolean32 on i8086.

git-svn-id: trunk@26341 -
2013-12-31 16:22:24 +00:00
nickysn
4917d8da39 - rm the special case handling of unsigned 32-bit ordinals in taddnode.pass_1,
since it performs exactly the same thing as the generic signed 32-bit handling
  in the else clause (regardless of whether cpuneedsmulhelper is defined or not)

git-svn-id: trunk@26340 -
2013-12-31 15:44:29 +00:00
florian
f393c3ff37 * propagate constants into the header of a for loop
+ test which avoids this so we do not miss regressions on for loops with variable boundaries

git-svn-id: trunk@26339 -
2013-12-31 13:16:09 +00:00
florian
b0441e1d64 * move setting of lnf_testatbegin into tfornode.simplify because it is a simplification
git-svn-id: trunk@26338 -
2013-12-31 13:16:06 +00:00
nickysn
bda163544a * tcg8086.g_flags2reg: restore the register back to the original size after the
16-bit inc

git-svn-id: trunk@26337 -
2013-12-31 13:15:30 +00:00
nickysn
fbd05c4e12 * Improved code generation in tcg8086.g_flags2reg for the case when target reg
size is >=16-bit:
  o Generated code is now one instruction and one byte shorter.
  o No 8-bit subregisters are used, which reduces register pressure.

git-svn-id: trunk@26336 -
2013-12-31 11:31:23 +00:00
nickysn
d57d982be7 * simpler handling of moves from a smaller to a larger cgsize in
tcg8086.a_load_reg_ref, which additionally fixes the following issues:
  o The higher parts of the source register is no longer modified.
  o The source register's size is no longer modified with makeregsize.
  o Conversion from OS_S8 to a larger size is now supported.

git-svn-id: trunk@26335 -
2013-12-31 00:33:37 +00:00
Jonas Maebe
a4c938c042 * changed some random data label names to match the label names outputted by
current clang versions, works around some bugs (or at least backward
    incompatibilities) in the Xcode 5 linker when targeting ARM

git-svn-id: trunk@26334 -
2013-12-31 00:28:46 +00:00
Jonas Maebe
5cbcfca33f * changed some Objective-C section declarations to match what's outputted by
current clang versions

git-svn-id: trunk@26333 -
2013-12-31 00:28:41 +00:00
Jonas Maebe
32b149c622 * moved a bunch of tprocdef fields that are only required when compiling the
procdef to a dynamically allocated record that is not created when loading
    the procdef from ppu

git-svn-id: trunk@26332 -
2013-12-31 00:28:28 +00:00
sergei
471d0a5164 + SPARC: support optimized 32x32 to 64 bit multiplications.
git-svn-id: trunk@26331 -
2013-12-30 23:40:47 +00:00
sergei
4168388235 + SPARC: support 8 and 16-bit arithmetic shifts.
git-svn-id: trunk@26330 -
2013-12-30 23:37:21 +00:00
michael
399129693f * Initialize token more correct in case of * / + -
git-svn-id: trunk@26329 -
2013-12-30 21:58:14 +00:00