fpc/compiler
J. Gareth "Curious Kit" Moreton ac0e641ce7 * Stripped down and refactored TAsmNode XML node dumps
for better platform-specific implementations.
2024-05-30 20:04:11 +00:00
..
aarch64 * a64: win64 implementation of jump table now 2024-05-27 06:31:15 +01:00
arm * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
armgen * arm / a64: Extended the AND; CMP -> ANDS family of optimisations to catch BIC as well as AND 2024-04-20 12:55:47 +00:00
avr * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
generic
html
i386 * patch by Marģers 2024-05-30 21:49:30 +02:00
i8086 * patch by Marģers 2024-05-30 21:49:30 +02:00
jvm * few types fixed 2024-04-26 22:54:27 +02:00
llvm * fix building of llvm compiler after node flag refactoring 2024-03-05 22:23:39 +01:00
loongarch64
m68k m68k-palmos: further fixes to assembly section. also actually use aout, as we have aout binutils for palmos 2024-05-25 00:14:11 +03:00
mips * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
msg Add -WP option to help for ppcrossrv32 2024-05-25 17:26:15 +00:00
powerpc
powerpc64
ppcgen * Flags specific to TAddNode have been moved to their own field 2024-03-02 21:31:21 +01:00
riscv * do no generated debug comment in assembler output of RiscV if not requested 2024-05-25 20:16:42 +02:00
riscv32 * do no generated debug comment in assembler output of RiscV if not requested 2024-05-25 20:16:42 +02:00
riscv64 * do no generated debug comment in assembler output of RiscV if not requested 2024-05-25 20:16:42 +02:00
sparc + cs_opt_consts for sparc 2024-05-08 23:13:05 +02:00
sparc64 + cs_opt_consts for sparc64 2024-05-11 23:41:33 +02:00
sparcgen * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
systems Move .data with fpc specific information to outside normal memory range. 2024-05-25 17:26:15 +00:00
utils
wasm32 + added WASI multithreading helper for setting the stack pointer for the linear stack 2024-05-13 14:00:36 +02:00
x86 * patch by Marģers 2024-05-30 21:49:30 +02:00
x86_64 * patch by Marģers 2024-05-30 21:49:30 +02:00
xtensa * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
z80
.gitignore
aasmbase.pas
aasmcfi.pas
aasmcnst.pas
aasmdata.pas + introduced TAsmData.WeakRefAsmSymbolByClass 2024-02-25 07:18:22 +02:00
aasmdef.pas
aasmsym.pas
aasmtai.pas Do allocate a new regset for top_regset for ARM compiler to avoid heap memory corruption 2024-05-02 13:52:04 +00:00
aggas.pas m68k-palmos: do not try to write section attributes, they're not really useful, and lead to assembler warnings 2024-05-24 23:52:53 +03:00
aopt.pas
aoptbase.pas
aoptda.pas
aoptobj.pas * compiler part of #35433 2024-05-01 23:05:06 +02:00
aoptutils.pas
assemble.pas
blockutl.pas
browcol.pas * Remove loaded_from in tmodule. The same unit can be loaded from different places 2024-03-05 07:56:14 +00:00
catch.pas
ccharset.pas
cclasses.pas
cepiktimer.pas
cfidwarf.pas
cfileutl.pas
cg64f32.pas
cgbase.pas + introduced cgbase.topcg2str and topcmp2str for converting TOpCg and TOpCmp to strings (useful for debug logging, etc) 2024-04-07 22:10:41 +03:00
cgexcept.pas
cghlcpu.pas
cgobj.pas * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
cgutils.pas
cmsgs.pas
comphook.pas * oc_blue properly named as noted by Don Siders 2024-05-20 20:43:14 +02:00
compiler.pas * (hopefully) more consistent message when the compiler is stopped during showing the help screen, resolves #39455 2024-04-25 22:12:31 +02:00
compinnr.pas * Added support for 64-bit min/max intrinsics 2024-03-26 14:18:31 +00:00
comprsrc.pas
comptty.pas
constexp.pas
COPYING.txt
cprofile.pas
crefs.pas
cresstr.pas
cscript.pas
cstreams.pas
ctask.pas * Fix access violation: module can be reset while loading dependent units. Fixes issue #40705 2024-03-26 16:06:27 +01:00
cutils.pas
dbgbase.pas
dbgcodeview.pas
dbgdwarf.pas * correct Dwarf-4 line info header as noted by Martin on the mailing list 2024-05-23 22:55:31 +02:00
dbgdwarfconst.pas
dbgstabs.pas
dbgstabx.pas
defcmp.pas
defutil.pas * Added support for 64-bit min/max intrinsics 2024-03-26 14:18:31 +00:00
dirparse.pas
dwarfbase.pas
elfbase.pas
entfile.pas
export.pas
expunix.pas
finput.pas * Handle finish state separately 2024-03-05 07:56:14 +00:00
fmodule.pas * remove do_compile, clearer flow when loading ppu/pas files 2024-05-04 16:58:04 +02:00
fpcdefs.inc * Replace object with record where possible 2024-05-04 16:44:32 +02:00
fpchash.pas
fpcp.pas
fpkg.pas
fppu.pas * remove do_compile, clearer flow when loading ppu/pas files 2024-05-04 16:58:04 +02:00
gendef.pas
globals.pas * Introduce task (Single main-level task at the moment, no change in behaviour). 2024-03-05 07:56:14 +00:00
globstat.pas * Restore messages state 2024-03-05 07:56:14 +00:00
globtype.pas
hlcg2ll.pas
hlcgobj.pas * use bit_set_reg_reg also to clear single bits in thlcgobj.a_load_regconst_subsetref_intern 2024-03-26 14:46:01 +01:00
htypechk.pas * Flags specific to TVecNode have been moved to their own field 2024-03-02 21:31:21 +01:00
impdef.pas
import.pas
ldscript.pas
link.pas
macho.pas
machoutils.pas
Makefile Avoid running cleanppulogs and ppulogs rules in parallel 2024-04-03 14:56:51 +00:00
Makefile.fpc Avoid running cleanppulogs and ppulogs rules in parallel 2024-04-03 14:56:51 +00:00
MPWMake
msgidx.inc Add -WP option to help for ppcrossrv32 2024-05-25 17:26:15 +00:00
msgtxt.inc Add -WP option to help for ppcrossrv32 2024-05-25 17:26:15 +00:00
nadd.pas * revert the changes from b0d61558e3, as 61397d40ae fixes it more correctly 2024-04-24 23:13:57 +02:00
nbas.pas * Stripped down and refactored TAsmNode XML node dumps 2024-05-30 20:04:11 +00:00
ncal.pas * more debug statments removed 2024-04-25 22:50:38 +02:00
ncgadd.pas * Flags specific to TAddNode have been moved to their own field 2024-03-02 21:31:21 +01:00
ncgbas.pas * Flags specific to TAsmNode have been moved to their own field 2024-03-02 21:31:21 +01:00
ncgcal.pas
ncgcnv.pas
ncgcon.pas
ncgflw.pas
ncghlmat.pas
ncginl.pas * second_abs: don't supply a separate 64 bit code path for high level cpu targets 2024-04-07 22:49:18 +02:00
ncgld.pas * Flags specific to TArrayConstructorNode have been moved to their own field 2024-03-02 21:31:21 +01:00
ncgmat.pas
ncgmem.pas * Flags specific to TDerefNode have been moved to their own field 2024-03-02 21:31:21 +01:00
ncgnstfl.pas
ncgnstld.pas
ncgnstmm.pas
ncgobjc.pas
ncgopt.pas
ncgrtti.pas * Atributes for class/record methods 2024-03-02 14:15:22 +01:00
ncgset.pas
ncgutil.pas * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
ncgvmt.pas
ncnv.pas * formatting 2024-03-02 21:31:21 +01:00
ncon.pas
nflw.pas * x86: Min/max intrinsic support 2024-03-26 14:18:31 +00:00
ngenutil.pas * cleanup tnodeutils.InsertThreadvars as suggested in #40538, resolves #40538 2024-04-28 22:38:28 +02:00
ngtcon.pas
ninl.pas * Inc/Dec nodes converted to Add/Sub now remove 2024-05-05 20:50:37 +00:00
nld.pas * formatting 2024-03-02 21:31:21 +01:00
nmat.pas + get_int_value 2024-04-16 23:11:16 +02:00
nmem.pas * Added missing "override" directive for XML node dump routine on TDerefNode 2024-03-26 13:25:46 +00:00
nobj.pas * avoid range check error in TVMTBuilder.intf_optimize_vtbls by early bailing out if a class has no interfaces 2024-04-21 19:26:01 +02:00
nobjc.pas
node.pas * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
nopt.pas * Flags specific to TArrayConstructorNode have been moved to their own field 2024-03-02 21:31:21 +01:00
nset.pas + in on an empty set is always false, resolves #40745 2024-04-19 23:43:35 +02:00
nutils.pas + get_int_value 2024-04-16 23:11:16 +02:00
objcasm.pas
objcdef.pas
objcgutl.pas
objcutil.pas
ogbase.pas
ogcoff.pas
ogelf.pas
oglx.pas
ogmacho.pas
ogmap.pas
ognlm.pas
ogomf.pas
ogrel.pas
ogwasm.pas
omfbase.pas
optbase.pas * patch by Rika: Don’t pretend optinfo^.index can be aword(−1), resolves #40405 2024-03-03 22:49:28 +01:00
optconstprop.pas + propagate also widechar/pointer constants 2024-04-14 10:34:37 +02:00
optcse.pas + do do_consttovar on RiscV 2024-05-25 20:09:02 +02:00
optdead.pas
optdeadstore.pas * patch by Rika: Don’t pretend optinfo^.index can be aword(−1), resolves #40405 2024-03-03 22:49:28 +01:00
optdfa.pas * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
options.pas Extend riscv32-freertos functionality for esp32c3 2024-05-25 17:26:15 +00:00
optloadmodifystore.pas
optloop.pas * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
opttail.pas
optutils.pas
optvirt.pas
owar.pas
owbase.pas
owomflib.pas
parabase.pas
paramgr.pas
parser.pas * Fix build of nativent 2024-03-19 10:27:30 +01:00
pass_1.pas * compilation with -dEXTDEBUG fixed 2024-03-28 15:07:35 +01:00
pass_2.pas * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
pbase.pas * Properly handle finish state 2024-03-05 07:56:14 +00:00
pcp.pas
pdecl.pas * extend read_anon_type() so that it can take a genericdef as well 2024-04-12 17:34:58 +02:00
pdecobj.pas * Atributes for class/record methods 2024-03-02 14:15:22 +01:00
pdecsub.pas * fix #40764: declare procsyms of a class/object also as sp_generic_dummysym if a symbol in a parent class has it set so that the parser will treat it as a potential generic 2024-05-06 23:39:18 +02:00
pdecvar.pas * fix #40721: correctly set up the generic defs when parsing fields, especially important when dealing with anonymous fields 2024-04-12 17:34:58 +02:00
pexports.pas
pexpr.pas * Flags specific to TArrayConstructorNode have been moved to their own field 2024-03-02 21:31:21 +01:00
pgentype.pas
pgenutil.pas * allow [] for constant set constraints, resolves #37020 2024-04-13 22:28:54 +02:00
pinline.pas * Flags specific to TDerefNode have been moved to their own field 2024-03-02 21:31:21 +01:00
pkgutil.pas
pmodules.pas Add support for esp-idf v4.4 2024-05-25 17:26:15 +00:00
pp.lpi
pp.pas
pparautl.pas * throw an error if varargs is used without appropriate calling conventions, resolves #40342 2024-05-14 22:44:12 +02:00
ppc68k.lpi
ppc8086.lpi
ppcaarch64.lpi
ppcarm.lpi
ppcavr.lpi
ppcjvm.lpi
ppcloongarch64.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 * nf_pass1_done, nf_error, nf_processing and nf_do_not_execute 2024-03-24 18:14:49 +00:00
procdefutil.pas
procinfo.pas
psabiehpi.pas
pstatmnt.pas * Block nodes are now marked as strippable when created from "begin" statements 2024-05-03 21:13:43 +00:00
psub.pas * Calling "internalstatements" now sets the "bnf_strippable" flag on the result 2024-04-29 18:17:55 +00:00
psystem.pas
ptconst.pas
ptype.pas * extend read_anon_type() so that it can take a genericdef as well 2024-04-12 17:34:58 +02:00
raatt.pas
rabase.pas
rasm.pas
rautils.pas
README.txt
rescmn.pas
rgbase.pas
rgobj.pas
scandir.pas * Introduce task (Single main-level task at the moment, no change in behaviour). 2024-03-05 07:56:14 +00:00
scanner.pas * handle unary minus in the preprocessor, resolves #40782 2024-05-13 22:36:40 +02:00
switches.pas
symbase.pas * Replace object with record where possible 2024-05-04 16:44:32 +02:00
symconst.pas * Fix creating thunk class when inherited interfaces are used 2024-05-04 16:44:32 +02:00
symcreat.pas * Wasm: generator for invoke helper now handles overloaded methods in interfaces 2024-05-06 15:49:28 +02:00
symdef.pas * Fix creating thunk class when inherited interfaces are used 2024-05-04 16:44:32 +02:00
symsym.pas * allow sp_generic_dummysym for procsyms even if there are no generic overloads 2024-05-06 23:39:18 +02:00
symtable.pas * check that the corresponding genericdef of the adjusted def is indeed valid 2024-04-12 17:34:58 +02:00
symtype.pas * Replace object with record where possible 2024-05-04 16:44:32 +02:00
symutil.pas
syscinfo.pas
systems.inc
systems.pas Do not set default target to system_sparc64_solaris on solaris OS for sparc64 compiler as this target is not yet supported 2024-05-14 06:44:39 +00:00
tgobj.pas
tokens.pas
triplet.pas
verbose.pas
version.pas
versioncmp.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