Commit Graph

607 Commits

Author SHA1 Message Date
Jonas Maebe
5c75b6dd6b * synchronised with trunk up till r28402
git-svn-id: branches/hlcgllvm@28403 -
2014-08-13 16:04:30 +00:00
Jonas Maebe
082c81a191 * for now disable internal bsr/bsf for LLVM (can be implemented later
based on llvm.ctlz/cttz intrinsics)

git-svn-id: branches/hlcgllvm@28366 -
2014-08-10 19:40:03 +00:00
Jonas Maebe
575911dcb0 + support for (section-based) threadvars for LLVM
git-svn-id: branches/hlcgllvm@28352 -
2014-08-10 13:18:46 +00:00
Tomas Hajny
dfb44e1642 * improve identation of long options and add support for displaying parameter @
git-svn-id: trunk@28186 -
2014-07-08 22:30:43 +00:00
Jonas Maebe
7949bebb8d * synchronised with r28168 of trunk
git-svn-id: branches/hlcgllvm@28169 -
2014-07-05 21:30:28 +00:00
nickysn
ce87e72721 * show an error if the user attempts to create a dos .com file in an i8086
memory model other than tiny

git-svn-id: trunk@28081 -
2014-06-26 22:52:57 +00:00
sergei
04d8e8a5dc * On 64-bit targets, handle abs(int64) internally, using the same code as for abs(longint), i.e. without branching. Both generic and x86-specific pass 2 code is already suitable for different operand sizes, only type checking needs removal of excessive conversions to 32 bits.
git-svn-id: trunk@27989 -
2014-06-17 18:45:11 +00:00
nickysn
d7f9265eba * limit the stack size set by the -Cs option to 65520 bytes on i8086 and other
CPUs with a 16-bit address space

git-svn-id: trunk@27960 -
2014-06-14 22:48:09 +00:00
sergei
217ab9879c * Enabled internal handling of Abs(longint) for all targets. It has been implemented in cross-platform way ages ago (see tcginlinenode.second_abs_long), but not enabled on MIPS,SPARC and m68k.
- RTL: removed MIPS,SPARC and m68k-specific implementations of Abs(longint), and marked the generic one as  required for bootstrapping purposes only.

git-svn-id: trunk@27857 -
2014-06-05 10:35:51 +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
florian
a6ad604207 * compilation fixed
git-svn-id: trunk@27771 -
2014-05-11 13:57:28 +00:00
florian
0bce584bae + set defines if fast fma is available
git-svn-id: trunk@27768 -
2014-05-11 12:15:27 +00:00
Jonas Maebe
724a6e9019 * fixed -Sx (mantis #25930)
git-svn-id: trunk@27697 -
2014-04-30 19:43:34 +00:00
nickysn
015c3269a7 * don't print a 'smart link requires external linker' warning in _any_ of the
following cases:
  1) external linking is already enabled
  2) target does not support an internal linker
  3) the 'omit linking stage' option is used

git-svn-id: trunk@27543 -
2014-04-12 08:19:23 +00:00
pierre
ca156aa64a Force external linker for nasm smartlinking
git-svn-id: trunk@27512 -
2014-04-10 15:02:04 +00:00
florian
b2b26f84cf * partially merged the mips-embedded branch of Michael Ring:
- startup code/controller units are not merged yet
  - assembler call does not pass the needed CPU type yet

git-svn-id: trunk@27188 -
2014-03-19 21:25:38 +00:00
Jonas Maebe
9420a5d7a7 * also check for targets not supporting -gc/checkpointer functionality in
compiler directives, not just on the command line (mantis #25862)

git-svn-id: trunk@27128 -
2014-03-13 20:42:18 +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
nickysn
a7117a6157 + enabled the compact and large i8086 memory models (they don't work yet, so
that's why they're not added to the compiler help screen yet)

git-svn-id: trunk@26927 -
2014-03-02 19:26:49 +00:00
nickysn
f04acb2db7 * parse the memory model command line options and define the FPC_MM_* macro
in the first pass of reading parameters, so that #ifdefs based on the memory
  models can be used in fpc.cfg

git-svn-id: trunk@26793 -
2014-02-16 09:59:21 +00:00
sergei
e1cf19d05d + Require -d and -u command line options to have an argument, Mantis #25082.
+ Check that argument of -d and -u is a Pascal identifier, Mantis #17056.

git-svn-id: trunk@26755 -
2014-02-12 04:44:35 +00:00
yury
56b3287e29 + Added compiler support for mipsel-android target.
git-svn-id: trunk@26686 -
2014-02-06 17:02:43 +00:00
nickysn
5832c323b1 - don't define FPC_HAS_INTERNAL_BSF and FPC_HAS_INTERNAL_BSR on i8086. BSF/BSR
is 386+ only and the internal handling was not used anyway on i8086, due to
  some nested defines in systemh.inc missing on i8086.

git-svn-id: trunk@26592 -
2014-01-26 20:02:15 +00:00
pierre
e9c0484b3c pass new asm extra opt using -ao option
git-svn-id: trunk@26538 -
2014-01-21 00:15:43 +00:00
pierre
12d56bad5c Use os name only to look for units/$target/rtl if target has tf_use_8_3 to find installed directories
git-svn-id: trunk@26416 -
2014-01-10 15:11:44 +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
sergei
179586f589 + SEH support for Win32. Enable by cycling with OPT=-dTEST_WIN32_SEH.
Although basic things work (no regressions in test suite, also with TEST_OPT=-O2), there are some secondary issues/TODOs:
- Exception frame around PASCALMAIN is not properly removed in DLLs
- No stack traces yet
- Stack overallocated in finalizer procedures, their entry/exit code needs cleanup
- Signals unit is probably completely broken.

git-svn-id: trunk@26225 -
2013-12-12 12:43:46 +00:00
florian
4d5119bf1c * fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
git-svn-id: trunk@26161 -
2013-12-01 17:02:08 +00:00
Jonas Maebe
ad84210a9a * import llvminfo when building an llvm-targeting compiler to override the
default -O1/2/3 optimization levels and supported optimization switches
    (e.g. -Ooregvar is not supported for the llvm target, nor needed)

git-svn-id: branches/hlcgllvm@26055 -
2013-11-11 11:16:28 +00:00
Jonas Maebe
5409d4321e + basic llvm bitcode (textual format) writer:
o no support yet for many ait_* types, although eventually most of them
     shouldn't be generated at all for the llvm target
   o no support yet for calling "opt" (which optimises llvm bitcode) before
     calling llc (which translates llvm bitcode into native code) -- compile
     with -s and manually call "opt" with -std-compile-opts, -O1, -O2 or -O3
     if you want to experiment
   o override the assembler writer with the llvm one when compiling an llvm-
     targeting compiler
   o override the assembler file extension with .ll when compiling an llvm-
     targeting compiler

git-svn-id: branches/hlcgllvm@26054 -
2013-11-11 11:16:25 +00:00
Jonas Maebe
9573160c1a + llvmdatalayout field for tsysteminfo that contains the encoded data layout
as used by llvm for most targets (taken from clang, adapted in some cases
    where we use a custom stack alignment)

git-svn-id: branches/hlcgllvm@26032 -
2013-11-11 11:14:55 +00:00
nickysn
93a706f1a0 + allow smartlinking and dwarf debug info at the same time for i8086-msdos
git-svn-id: trunk@25872 -
2013-10-27 20:26:34 +00:00
florian
304d7ef7a1 * restores atari support/rtl partially
git-svn-id: trunk@25699 -
2013-10-06 19:36:59 +00:00
nickysn
119cf760eb * UpdateTargetSwitchStr moved to a new unit dirparse.pas. This avoids the dependence of unit scandir on unit options
git-svn-id: trunk@25629 -
2013-10-03 12:21:33 +00:00
nickysn
a846d0fc42 * cleaned up the ugly hack from r25595. The default value of ts_cld for the
target is now set before the second pass of parsing the command line
  arguments. Then during the second pass, it can be overriden.

git-svn-id: trunk@25607 -
2013-09-29 11:30:52 +00:00
nickysn
989c543ea2 * UpdateTargetSwitchStr moved from unit globals to unit options in order to
avoid the dependency of unit globals on unit symtable, which breaks the build
  of ppudump

git-svn-id: trunk@25596 -
2013-09-28 15:43:56 +00:00
nickysn
a48b44cfe5 + added a new tsystemflag tf_cld, which indicates that ts_cld should be enabled
by default on this target
+ tf_cld enabled for i8086-msdos (for Turbo Pascal compatibility)

git-svn-id: trunk@25595 -
2013-09-28 14:57:12 +00:00
nickysn
bd0585274e * tsettings.enablecld converted to a targetswitch ts_cld
git-svn-id: trunk@25592 -
2013-09-28 13:41:58 +00:00
nickysn
52fcc0a407 + added a new x86-specific compiler option 'enablecld', which controls whether
the compiler should emit a CLD before using the x86 string instructions.

git-svn-id: trunk@25590 -
2013-09-28 11:54:02 +00:00
nickysn
52a5ffc386 * use apptype to indicate that the target is a DOS .COM file, instead of introducing a new field in tsettings (as suggested by Sven)
git-svn-id: trunk@25544 -
2013-09-24 12:13:47 +00:00
nickysn
b0be805561 * actually use the .com suffix, instead of .exe when creating a .com file
git-svn-id: trunk@25529 -
2013-09-21 17:06:06 +00:00
nickysn
567cdf875b + added new i8086 compiler options -Wtexe and -Wtcom for specifying the MS-DOS
binary format (.exe or .com)
* the default format for i8086 tiny model binaries changed to .exe

git-svn-id: trunk@25528 -
2013-09-21 16:44:14 +00:00
florian
02e054a09e + fpc -i now writes also the available inline assembler input modes
git-svn-id: trunk@25482 -
2013-09-13 19:10:59 +00:00
svenbarth
6f5a648516 Improve the cpu type handling for M68k just in case we should branch 2.8.0 before I can start working on M68k again.
Therefor the cpu type (-Cp...) "coldfire" was split up into "isaa", "isaa+", "isab" and "isac". The Linux RTL can currently compiled for "68020", "isab" and "isac". For the other three Bcc.L must be handled differently (only Bcc.B/W supported) and for "68000" also EXT.L needs to be handled differently.

fpcdefs.inc:
  + define CPUCAPABILITIES if capabilities can be set for a certain CPU type (currently ARM, AVR and M68k)
options.pas:
  * check for CPUCAPABILITIES instead of specific CPUs
assemble.pas:
  - the handling of the CPU type is already done in m68k/ag68kgas.pas, Tm68kGNUAssembler.MakeCmdLine (and thereby already using the gascputypestr array!)
m68k/cpuinfo.pas:
  - tcputype: remove "cpu_coldfire"
  + tcputype: add "cpu_isa_a", "cpu_isa_a_p", "cpu_isa_b" and "cpu_isa_c"
  + add "cpu_coldfire" constant which contains all Coldfire specific cpu types
  * adjust "cputypestr" and  "gascputypestr"
  + add tcpuflags and cpu_capabilities (DBRA restriction was checked with CPUCOLDFIRE, CAS/TAS will be needed for atomic operations and BRAL restriction was discovered during testing of new cpu types)
m68k/cgcpu.pas:
  * adjust checks for "cpu_coldfire"
m68k/n68kadd.pas:
  * don't use a BRA.L if it is not supported, but (at least for now) a BRA.W
aggas.pas:
  * adjusted check for Coldfire

git-svn-id: trunk@25457 -
2013-09-11 17:07:32 +00:00
Jonas Maebe
de56f909d5 * synchronized with trunk up to and including r25430
git-svn-id: branches/cpstrrtl@25431 -
2013-09-06 10:09:26 +00:00
florian
6f11e3f316 * clz is only available on thumb2/arm
git-svn-id: trunk@25416 -
2013-09-04 21:00:01 +00:00
florian
0e7a7c68b0 * the -CI switch is now handled correctly
git-svn-id: trunk@25405 -
2013-09-03 19:24:01 +00:00
florian
d4968e054b + arm: tsettings.instructionset
* the selected instruction set is now independent from the cpu type: e.g. armv7-a can perfectly execute thumb(2) code

git-svn-id: trunk@25370 -
2013-08-25 21:56:12 +00:00
florian
6e7edf1933 * make x86memorymodel i8086 only
git-svn-id: trunk@25369 -
2013-08-25 21:56:08 +00:00
Jonas Maebe
efa95bed66 * changes so the compiler can be compiled with a unicode RTL without warnings
git-svn-id: branches/cpstrrtl@25307 -
2013-08-19 22:47:07 +00:00