fpc/compiler
2022-03-30 20:48:52 +00:00
..
aarch64 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
arm * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
armgen + Aarch64: SxthSxtw2Sxth optimization 2022-01-20 22:15:14 +01:00
avr Extra code generation options for shift with compile time constant. 2022-03-30 20:48:52 +00:00
generic
html
i386 * started with change information for AVX-512 2022-03-29 22:50:14 +02:00
i8086 * started with change information for AVX-512 2022-03-29 22:50:14 +02:00
jvm * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
llvm
m68k Revert "m68k: utilize cg.a_loadaddr_ref_cgpara in hlcgcpu" for now, turns out it's not needed 2022-03-24 09:48:25 +01:00
mips * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
msg * z80-amstradcpc: fixed target naming mess, so -Tamstradcpc works now, also fixed the help text 2022-03-09 13:36:47 +01:00
powerpc * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
powerpc64 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
ppcgen TOC handling: clean up 2022-02-06 22:10:06 +01:00
riscv
riscv32 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
riscv64 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
sparc * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
sparc64 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
sparcgen
systems * z80-amstradcpc: fixed target naming mess, so -Tamstradcpc works now, also fixed the help text 2022-03-09 13:36:47 +01:00
utils Regenerate all Makefile's to fix problem on x86_64 linux 2022-03-07 23:46:15 +00:00
wasm32 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
x86 * started with change information for AVX-512 2022-03-29 22:50:14 +02:00
x86_64 * started with change information for AVX-512 2022-03-29 22:50:14 +02:00
xtensa * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
z80 * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
aasmbase.pas
aasmcfi.pas
aasmcnst.pas
aasmdata.pas
aasmdef.pas
aasmsym.pas
aasmtai.pas Add section directive for subroutines for embedded and freertos systems. 2022-02-22 20:51:32 +00:00
aggas.pas Use '.rodata' for read-only data section for aarch64 CPU 2022-01-08 00:18:47 +01:00
aopt.pas
aoptbase.pas
aoptda.pas
aoptobj.pas Debugging code in AllocRegBetween is now safer and more accurate, and p2 can no longer be nil 2022-01-04 12:18:34 +00:00
aoptutils.pas
assemble.pas
blockutl.pas
browcol.pas
catch.pas
ccharset.pas
cclasses.pas Allocate THashSet item and its key together when FOwnKeys=true. 2022-01-21 22:13:39 +01:00
cepiktimer.pas
cfidwarf.pas
cfileutl.pas
cg64f32.pas
cgbase.pas
cgexcept.pas
cghlcpu.pas
cgobj.pas JccAdd2SetccAdd modified to make use of GetIntRegisterBetween 2022-01-08 22:43:41 +00:00
cgutils.pas Fast mod 2022-01-30 08:22:39 +00:00
cmsgs.pas
comphook.pas
compiler.pas * m68k-sinclairql: fix the inclusion of the target proper 2022-01-25 12:04:49 +01:00
compinnr.pas
comprsrc.pas
comptty.pas
constexp.pas * revert accidently committed code 2022-02-06 20:15:00 +01:00
COPYING.txt
cprofile.pas
crefs.pas
cresstr.pas
cscript.pas
cstreams.pas
cutils.pas
dbgbase.pas
dbgcodeview.pas
dbgdwarf.pas * Section-offsets have 64 bits in the Dwarf-64 format 2022-01-29 23:57:49 +01:00
dbgstabs.pas
dbgstabx.pas
defcmp.pas + add ability to strictly compare defs with generic constraints (this is needed for declarations, while for normal code we're rather relaxed) 2022-02-18 17:53:35 +01:00
defutil.pas
dirparse.pas
dwarfbase.pas
elfbase.pas
entfile.pas + some basic stuff for MIPS64 2022-02-05 23:25:31 +01:00
export.pas
expunix.pas
finput.pas
fmodule.pas + add support for forward declarations of generic classes and interfaces (any implicit pointer type really); fixes #34128 2022-02-18 17:54:23 +01:00
fpcdefs.inc Fix compilation of mips64 compiler by simple use of 'make mips64' 2022-02-14 23:24:36 +00:00
fpchash.pas
fpcp.pas
fpkg.pas
fppu.pas
gendef.pas
globals.pas + some basic stuff for MIPS64 2022-02-05 23:25:31 +01:00
globstat.pas
globtype.pas * seperator => separator 2022-01-02 13:12:33 +01:00
hlcg2ll.pas * do not copy parameters onto the stack using FPU registers if the type is 2022-02-10 22:42:49 +01:00
hlcgobj.pas * building for LLVM fixed 2022-02-28 22:24:05 +01:00
htypechk.pas
impdef.pas
import.pas
ldscript.pas
link.pas
macho.pas
machoutils.pas
Makefile Regenerate all Makefile's to fix problem on x86_64 linux 2022-03-07 23:46:15 +00:00
Makefile.fpc Fix CPU_clean rule 2022-03-07 21:45:32 +00:00
MPWMake
msgidx.inc * regenerated message files after CPC naming fix 2022-03-09 13:41:06 +01:00
msgtxt.inc * regenerated message files after CPC naming fix 2022-03-09 13:41:06 +01:00
nadd.pas * reorder string expressions with parentheses so fpc_*_concat_multi can be used efficiently, resolved #39479 2022-02-21 23:09:16 +01:00
nbas.pas
ncal.pas * just copy value parameters to a temp. when inlining instead of 2022-02-19 23:49:27 +01:00
ncgadd.pas * MIPS64 can 2022-02-08 23:08:32 +01:00
ncgbas.pas
ncgcal.pas * overleft cosmetics 2022-03-01 22:55:27 +01:00
ncgcnv.pas
ncgcon.pas
ncgflw.pas
ncghlmat.pas
ncginl.pas * High() and Length() for dynamic arrays deal with sizesinttype instead of ossinttype (on AVR the former is 16-bit while the later is 8-bit thus this is an important distinction) 2022-01-18 23:39:31 +01:00
ncgld.pas
ncgmat.pas
ncgmem.pas
ncgnstfl.pas
ncgnstld.pas
ncgnstmm.pas
ncgobjc.pas
ncgopt.pas
ncgrtti.pas
ncgset.pas Avoid range check error inside tcgcasenode.pass_generate_code method 2022-01-05 16:38:54 +00:00
ncgutil.pas
ncgvmt.pas TOC handling: clean up 2022-02-06 22:10:06 +01:00
ncnv.pas
ncon.pas
nflw.pas
ngenutil.pas * seperator => separator 2022-01-02 13:12:33 +01:00
ngtcon.pas
ninl.pas Merge branch 'main' into val_range_check 2022-01-19 22:20:24 +01:00
nld.pas
nmat.pas * properly set types for currency divisions, resolves #38717 2022-02-13 22:47:38 +01:00
nmem.pas
nobj.pas
nobjc.pas
node.pas
nopt.pas
nset.pas
nutils.pas
objcasm.pas
objcdef.pas
objcgutl.pas
objcutil.pas
ogbase.pas * patch by Rika: Better Align()'s #2, resolves #39512 2022-01-05 19:50:21 +01:00
ogcoff.pas
ogelf.pas
oglx.pas
ogmacho.pas
ogmap.pas
ognlm.pas
ogomf.pas
ogrel.pas
ogwasm.pas Add internalerror if ogwasm tries to write unset Func/Global or TagIndex of TWasmObjSymbol 2022-02-11 22:19:43 +00:00
omfbase.pas
optbase.pas
optconstprop.pas
optcse.pas
optdead.pas
optdeadstore.pas
optdfa.pas * add const 2022-01-16 17:24:48 +01:00
options.pas * sorted defines in the compiler: mips64 is defined on all 64 Bit mips platforms, mips64el for little endian, misp64eb for big endian 2022-02-06 21:57:01 +01:00
optloadmodifystore.pas
optloop.pas
opttail.pas
optutils.pas Get rid of some global variables. 2022-01-16 17:17:23 +01:00
optvirt.pas
owar.pas
owbase.pas
owomflib.pas
parabase.pas
paramgr.pas
parser.pas
pass_1.pas * fix typo in comment 2022-01-09 13:30:46 +01:00
pass_2.pas
pbase.pas
pcp.pas
pdecl.pas * fix typos in comments, no code changes 2022-02-18 17:54:36 +01:00
pdecobj.pas * var, type, threadvar, const sections require also in classes etc. at least one declaration, resolves #39599 2022-02-25 21:56:52 +01:00
pdecsub.pas * throw error properly if a target does not support sections 2022-02-22 22:08:53 +01:00
pdecvar.pas * prevent that a absolute symbol references itself, resolves #39604 2022-03-06 22:01:56 +01:00
pexports.pas
pexpr.pas * ensure that result of factor_handle_sym is initialized 2022-01-22 22:28:01 +01:00
pgentype.pas + add support for forward declarations of generic classes and interfaces (any implicit pointer type really); fixes #34128 2022-02-18 17:54:23 +01:00
pgenutil.pas + add support for forward declarations of generic classes and interfaces (any implicit pointer type really); fixes #34128 2022-02-18 17:54:23 +01:00
pinline.pas
pkgutil.pas
pmodules.pas Update build and link requirements for esp-idf v4.4. Refactor the version dependent linker fragments list into an array of version specific array of strings for easier updating in future. 2022-01-30 08:14:07 +00:00
pp.lpi
pp.pas
pparautl.pas
ppc68k.lpi
ppc8086.lpi
ppcaarch64.lpi
ppcarm.lpi
ppcavr.lpi
ppcjvm.lpi
ppcmips64el.lpi
ppcmips.lpi
ppcmipsel.lpi
ppcppc64.lpi
ppcppc64le.lpi
ppcppc.lpi
ppcriscv32.lpi
ppcriscv64.lpi
ppcsparc64.lpi
ppcsparc.lpi
ppcwasm32.lpi
ppcx64.lpi
ppcx64llvm.lpi
ppcxtensa.lpi
ppcz80.lpi
ppheap.pas
ppu.pas
procdefutil.pas
procinfo.pas Procedure-saved registers are now recorded for peephole optimizers to use 2022-01-08 22:43:41 +00:00
psabiehpi.pas
pstatmnt.pas * throw an error if raise is called in a noreturn subroutine outside of any exception frame, resolves #39514 2022-01-06 21:13:19 +01:00
psub.pas * m68k: disable the frame pointer optimization on subarchs that don't support long displacements for now, until the shortcomings of the cg can be addressed 2022-03-11 13:01:42 +01:00
psystem.pas
ptconst.pas
ptype.pas + add support for forward declarations of generic classes and interfaces (any implicit pointer type really); fixes #34128 2022-02-18 17:54:23 +01:00
raatt.pas
rabase.pas
rasm.pas
rautils.pas * hopefully final fix for absolute references to absolute symbols 2022-02-16 21:30:14 +01:00
README.txt
rescmn.pas
rgbase.pas
rgobj.pas
scandir.pas
scanner.pas * m68k-atari: override the exeext globally, not just at the final step of the linking. this fixes 'Linking <exename>.ttp' messages, when in fact <exename>.prg gets generated 2022-02-14 15:33:36 +01:00
switches.pas
symbase.pas
symconst.pas
symcreat.pas
symdef.pas Move member variable "section" to tprocdef. Type of "section" to agree with symansistr define. 2022-02-22 20:51:32 +00:00
symsym.pas
symtable.pas
symtype.pas
symutil.pas
syscinfo.pas * aros64: recent developments hanged the library call ABI, lets try to follow it (aros64 is experimental) 2022-02-06 16:30:04 +01:00
systems.inc + some basic stuff for MIPS64 2022-02-05 23:25:31 +01:00
systems.pas Add section directive for subroutines for embedded and freertos systems. 2022-02-22 20:51:32 +00:00
tgobj.pas
tokens.pas
triplet.pas
verbose.pas * throw an error if raise is called in a noreturn subroutine outside of any exception frame, resolves #39514 2022-01-06 21:13:19 +01:00
version.pas
wasmbase.pas
widestr.pas
wpo.pas
wpobase.pas
wpoinfo.pas

This directory contains the sources of the Free Pascal Compiler

If you want to compile/modify the compiler, please read first the
programmers manual.

To recompile the compiler, you can use the batch files :
 + mppc386.bat    if you want to build a cross compiler from i386 to m68k
 + mppcsparc      if you want to build a cross compiler from i386 to SPARC
 
 or
Use the make utility as following
  
      make OS_TARGET="compiler OS target" \
      CPU_TARGET="compiler CPU target" \
      FPCCPUOPT="Optimization level" \
      PP="compiler used to compile FPC" \
      COMPILER_OPTIONS="Options passed to compiler" \
      
      
If an option is omitted, then target CPU/OS will be same as current CPU/OS
 
Possibles targets are : linux go32v2 win32 os2 freebsd beos netbsd amiga haiku
atari sunos qnx netware openbsd wdosx palmos macos macosx emx
   
Possible compiler switches (* marks a currently required switch):
  -----------------------------------------------------------------
  GDB*                support of the GNU Debugger
  I386                generate a compiler for the Intel i386+
  x86_64              generate a compiler for the AMD x86-64 architecture
  M68K                generate a compiler for the M68000
  SPARC               generate a compiler for SPARC
  POWERPC             generate a compiler for the PowerPC
  VIS                 generate a compile for the VIS
  DEBUG               version with debug code is generated
  EXTDEBUG            some extra debug code is executed
  SUPPORT_MMX         only i386: releases the compiler switch
                      MMX which allows the compiler to generate
                      MMX instructions
  EXTERN_MSG          Don't compile the msgfiles in the compiler, always
                      use external messagefiles, default for TP
  NOAG386INT          no Intel Assembler output
  NOAG386NSM          no NASM output
  NOAG386BIN          leaves out the binary writer, default for TP
  NORA386DIR          No direct i386 assembler reader
  TEST_GENERIC        Test Generic version of code generator
                      (uses generic RTL calls)
  -----------------------------------------------------------------
  cpuflags            The target processor has status flags (on by default)
  cpufpemu            The target compiler will also support emitting software
                       floating point operations
  cpu64bitaddr        The targets use a 64-bit address space (pointers and
                       the default integer type are 64 bit)
  cpu64bitalu         The target cpu has 64-bit registers available (unless
                       cpu64bitaddr is also defined, pointers and default
                       integer type remain 32 bit, but the cpu can perform
                       64 bit calculations directly without needing helpers)
  -----------------------------------------------------------------

  Required switches for a i386 compiler be compiled by Free Pascal Compiler:
  GDB;I386

to build a compiler to SPARC target using a Win32/i386 you just use :
      make CPU_TARGET=SPARC