fpc/compiler
2022-05-26 21:43:00 +02:00
..
aarch64 * more readable fix for the missing ait_instruction check 2022-05-15 19:32:27 +02:00
arm * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
armgen + Aarch64: SxthSxtw2Sxth optimization 2022-01-20 22:15:14 +01:00
avr * AVR: trgcpu.do_spill_read must load ofs 2022-05-05 19:35:38 +02:00
generic * cleanup of 2.7.0 defines 2021-10-31 13:20:28 +01:00
html
i386 * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
i8086 * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
jvm * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
llvm llvmdbg: emit uppercase symbol names unless C++-style debug info is selected 2022-05-21 22:32:35 +02:00
m68k * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
mips * cleanup: cs_opt_loopunroll is a generic optimization for a long time already 2022-03-08 23:03:18 +01:00
msg + apply patch by Blaise.ru: allow initialisation of method pointers with class methods (when class types are 2022-05-26 21:42:55 +02:00
powerpc * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02: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 Fix check that third parameter of ADDI hp1 instruction is a constant 2021-06-02 19:58:38 +00:00
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 + sanity checks in mips and sparc register allocator 2021-12-17 21:25:17 +01:00
systems * increase default dwarf version for linux targets where current distributions exist 2022-05-16 22:56:30 +02:00
utils + initial support for anonymous functions, for now as essentially nested functions 2022-05-26 21:43:00 +02:00
wasm32 + support different versions of llvm-mc (version 10 seems to be the earliest that works) 2022-05-26 15:06:35 +03:00
x86 * fix #39730 as suggested by Jonas 2022-05-23 22:28:59 +02:00
x86_64 * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +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 * Corrected label reference counts caused by TAsmLabel.GetName incrementing refs 2022-05-14 18:57:05 +00:00
aasmcfi.pas
aasmcnst.pas * Corrected label reference counts caused by TAsmLabel.GetName incrementing refs 2022-05-14 18:57:05 +00:00
aasmdata.pas llvmdbg: build hashtable to lookup llvmdecl belonging to a global variable 2022-05-21 22:32:35 +02:00
aasmdef.pas
aasmsym.pas
aasmtai.pas Add missing reference increases for ait_jvar labels 2022-05-20 21:18:44 +02:00
aggas.pas Use '.rodata' for read-only data section for aarch64 CPU 2022-01-08 00:18:47 +01:00
aopt.pas * do not remove register deallocations/allocation pairs if the register is written 2021-04-06 19:16:17 +00:00
aoptbase.pas
aoptda.pas
aoptobj.pas * x86: New jump/label tracking in CrossJump optimisations 2022-04-24 16:42:35 +00:00
aoptutils.pas * patch by J. Gareth Moreton: x86 JccMovJmpMov2MovSetcc improvement, resolves #38761 2021-05-26 21:03:56 +00:00
assemble.pas LLVM: separate as_clang_llvm_darwin 2022-05-14 22:38:49 +02:00
blockutl.pas * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
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 * don't generate high-level CFI statements when the selected assembler 2021-04-08 19:50:27 +00:00
cfileutl.pas
cg64f32.pas - Bug fix to new ADD/SUB optimisation where conditions are concerned 2021-11-17 20:18:57 +00:00
cgbase.pas - clean up 2021-05-24 09:26:44 +00:00
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 + print full file path if -vb is passed even if no line number is known, resolves #39419 2021-10-26 21:37:28 +02:00
compiler.pas * m68k-sinclairql: fix the inclusion of the target proper 2022-01-25 12:04:49 +01:00
compinnr.pas
comprsrc.pas * patch by Cyrax: Quote path - which is passed to Windres or alike program, resolves #36526 2022-04-08 22:42:05 +02:00
comptty.pas
constexp.pas * revert accidently committed code 2022-02-06 20:15:00 +01:00
COPYING.txt
cprofile.pas
crefs.pas
cresstr.pas Typed const builder: store tsym 2022-05-13 22:49:02 +02:00
cscript.pas Add fForceUseForwardSlash to TLinkRes class, used for vlink linker on hosts using backslashes 2021-04-17 22:17:46 +00:00
cstreams.pas * patch by Rika to pass some strings by reference, resolves #39338 2021-11-09 22:41:52 +01:00
cutils.pas cutils: also use minalign, when varalign equals it, not only when varalign is less than it (21 years old bug?) 2022-04-29 23:45:45 +02:00
dbgbase.pas LLVM: enable DWARF debug info generation 2022-05-13 22:49:02 +02:00
dbgcodeview.pas
dbgdwarf.pas * moved a bunch of constants from dbgdwarf to dbgdwarfconst 2022-05-13 22:49:02 +02:00
dbgdwarfconst.pas * moved a bunch of constants from dbgdwarf to dbgdwarfconst 2022-05-13 22:49:02 +02:00
dbgstabs.pas Call increfs manually to avoid removal of stabs debug related labels 2022-05-16 15:12:07 +00:00
dbgstabx.pas
defcmp.pas * better fix for #39634 which avoids breaking existing code 2022-04-22 22:08:46 +02:00
defutil.pas + add utility function to check whether an invokable can be invoked without explicit parameters 2022-05-26 21:42:57 +02:00
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 o based on a patch by Rika, resolves #39401: 2021-10-10 10:09:22 +02:00
fpcp.pas
fpkg.pas
fppu.pas Check mf_symansistr is compatible with current compiler mode and issue a message before failing PPU loading 2022-04-11 22:10:48 +00:00
gendef.pas
globals.pas + some basic stuff for MIPS64 2022-02-05 23:25:31 +01:00
globstat.pas
globtype.pas + add modeswitch for anonymous functions 2022-05-26 21:43:00 +02: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 * x86: Code generation fixes where FLAGS 2022-04-27 20:46:32 +00:00
htypechk.pas * only abort due to a missing overload directive if there indeed was any procdef found (due to implicit specializations there might be none), fixes compilation of tests webtbs/tw38310b and webtbs/tw38310c 2022-04-21 18:01:30 +02:00
impdef.pas
import.pas
ldscript.pas
link.pas * Increased the bounds of TBooleanArray to prevent a range check error while linking Lazarus. 2021-12-12 15:50:12 +02:00
macho.pas
machoutils.pas
Makefile * regenerate makefiles with latest fpcmake 2022-05-24 14:01:59 +03:00
Makefile.fpc Add x86_64 CPU to list requiring fpux80 support 2022-03-30 15:10:30 -06:00
MPWMake Remove unused, obsolete -dBROWSERLOG option 2021-04-22 15:26:15 +00:00
msgidx.inc + added "(experimental)" to the compiler help screen for the WebAssembly compiler options that are still unstable/experimental 2022-05-26 18:20:07 +03:00
msgtxt.inc + added "(experimental)" to the compiler help screen for the WebAssembly compiler options that are still unstable/experimental 2022-05-26 18:20:07 +03:00
nadd.pas Optimized the comparison of a widestring variable with '' 2022-04-27 21:12:47 +00:00
nbas.pas Revert " * patch by J. Gareth Moreton: Nothing (NOP) node optimisation, resolves #38194" 2021-09-25 21:02:29 +02:00
ncal.pas * Delphi-mode calling without parenthesis 2022-05-26 21:43:00 +02:00
ncgadd.pas * MIPS64 can 2022-02-08 23:08:32 +01:00
ncgbas.pas * Added support for the old Turbo Pascal INLINE(data/data/...) statement. 2021-08-16 00:40:34 +03:00
ncgcal.pas * overleft cosmetics 2022-03-01 22:55:27 +01:00
ncgcnv.pas * Patch by J. Gareth "Kit" Moreton (issue #39343). Added missing allocation 2021-09-07 19:50:28 +03:00
ncgcon.pas * patch by Rike: Use reverse_longword instead of manually reversing longword, resolves #39720 2022-05-13 22:38:03 +02:00
ncgflw.pas * Removed obsolete OLDREGVARS ifdefs. 2021-11-02 17:08:08 +02:00
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 * fixed WebAssembly method pointer assignment 2021-10-03 02:27:19 +03:00
ncgmat.pas - Bug fix to new ADD/SUB optimisation where conditions are concerned 2021-11-17 20:18:57 +00:00
ncgmem.pas * fix range checking for zero based strings, resolves #39323 2021-09-05 21:03:31 +02:00
ncgnstfl.pas
ncgnstld.pas
ncgnstmm.pas
ncgobjc.pas
ncgopt.pas
ncgrtti.pas * use an anonymous symbol for the record operator table as its typing is different for each incarnation anyway 2021-12-26 16:36:16 +01:00
ncgset.pas Avoid range check error inside tcgcasenode.pass_generate_code method 2022-01-05 16:38:54 +00:00
ncgutil.pas
ncgvmt.pas * make the VMT symbol and type def of the corresponding class or object instead of having them be global 2022-05-26 21:42:51 +02:00
ncnv.pas * Delphi-mode calling without parenthesis 2022-05-26 21:43:00 +02:00
ncon.pas * patch by Rike: Use reverse_longword instead of manually reversing longword, resolves #39720 2022-05-13 22:38:03 +02:00
nflw.pas * fix #32034 and fix #39656: in a for-in-loop with an array constructor enforce the type of the loop variable for the elements 2022-04-08 17:40:36 +02:00
ngenutil.pas * Delphi-mode calling without parenthesis 2022-05-26 21:43:00 +02:00
ngtcon.pas + apply patch by Blaise.ru: allow initialisation of method pointers with class methods (when class types are 2022-05-26 21:42:55 +02:00
ninl.pas Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
nld.pas * Delphi-mode calling without parenthesis 2022-05-26 21:43:00 +02:00
nmat.pas + fold "a shl n1 shl n2" and "a shr n1 shr n2" into "a shl (n1+n2)" and "a shr (n1+n2)", resolves #39629 2022-04-20 22:16:32 +02:00
nmem.pas * disallow offsetof trick for types involving implicit dereferences, resolves #39667 partially 2022-04-14 17:06:15 +02:00
nobj.pas * make the VMT symbol and type def of the corresponding class or object instead of having them be global 2022-05-26 21:42:51 +02:00
nobjc.pas
node.pas * Removed unused and confusing tnode.parent and tnode.concattolist(). 2021-11-02 16:55:59 +02:00
nopt.pas
nset.pas * WebAssembly code generation for 'case' nodes changed to use labels 2021-10-22 17:31:04 +03:00
nutils.pas * Delphi-mode calling without parenthesis 2022-05-26 21:43:00 +02:00
objcasm.pas * cleanup of VER3_0 defines 2021-11-17 22:19:57 +01:00
objcdef.pas
objcgutl.pas * Corrected label reference counts caused by TAsmLabel.GetName incrementing refs 2022-05-14 18:57:05 +00:00
objcutil.pas
ogbase.pas * patch by Rika: Better Align()'s #2, resolves #39512 2022-01-05 19:50:21 +01:00
ogcoff.pas Set string length before calling move to avoid problems with global data analysis on systems using C library 2021-04-27 14:52:22 +00:00
ogelf.pas Fix gotpcrel relocation for TESTQ x86_64 instruction 2021-04-23 21:52:24 +00:00
oglx.pas
ogmacho.pas
ogmap.pas
ognlm.pas
ogomf.pas * fix x86 compilation after my last commit 2021-10-10 10:21:21 +02:00
ogrel.pas
ogwasm.pas * the WebAssembly internal assembler renamed WASM (previously it was OMF, which was the ID of the MS-DOS .obj writer, which I forgot to rename) 2022-05-26 14:12:10 +03:00
omfbase.pas
optbase.pas
optconstprop.pas * continue const. propagation after a for loop when possible 2022-05-22 22:52:18 +02:00
optcse.pas + store references to global variables in registers if benefical (currrently used for aarch64 only) 2021-12-11 22:46:27 +01:00
optdead.pas
optdeadstore.pas * fixes to deadstore optimization 2021-04-03 21:28:09 +00:00
optdfa.pas * add const 2022-01-16 17:24:48 +01:00
options.pas LLVM: separate as_clang_llvm_darwin 2022-05-14 22:38:49 +02:00
optloadmodifystore.pas * Before r35961 (back in 2017) some simple assignment optimizations, such as "x:=x+y" to "inc(x,y)", were performed when -O2 in tassignmentnode.simplify. In r35961 these optimizations were moved to a separate pass which is enabled only when -O3 by cs_opt_use_load_modify_store. This separate pass can benefit from other optimization. But worse code is generated with -O2 since then. 2021-08-13 13:53:40 +03:00
optloop.pas * Strength reduction optimization: - Use a temp for complex loop start values to prevent double evaluation. 2021-10-08 18:04:03 +03:00
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 * cleanup of VER3_0 defines 2021-11-17 22:19:57 +01:00
parser.pas
pass_1.pas * fix typo in comment 2022-01-09 13:30:46 +01:00
pass_2.pas
pbase.pas
pcp.pas o based on a patch by Rika, resolves #39401: 2021-10-10 10:09:22 +02:00
pdecl.pas + add support for parsing function references 2022-05-26 21:42:59 +02:00
pdecobj.pas * if an interface is declared inherit the invokable flag from the parent interface 2022-05-26 21:42:59 +02:00
pdecsub.pas + initial support for anonymous functions, for now as essentially nested functions 2022-05-26 21:43:00 +02:00
pdecvar.pas + add support for parsing function references 2022-05-26 21:42:59 +02:00
pexports.pas
pexpr.pas + initial support for anonymous functions, for now as essentially nested functions 2022-05-26 21:43:00 +02: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 - apply patch by Blaise.ru: pdflags are no longer required in generate_specialization_phase2() after parse_proc_directives() was done, so remove its unused modification after that call 2022-05-26 21:42:54 +02:00
pinline.pas * patch by Rika to pass some strings by reference, resolves #39338 2021-11-09 22:41:52 +01:00
pkgutil.pas
pmodules.pas TSymStr: more consistent usage 2022-05-08 15:03:44 +02:00
pp.lpi
pp.pas * set minimum compiler to compile the compiler to 3.2.0 2022-05-07 23:13:16 +02:00
pparautl.pas * ensure insert_self_and_vmt_para can deal with a preexisting self symbol as long as it has the expected type 2022-05-26 21:42:58 +02:00
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 + enable the WebAssembly internal assembler and object writer 2021-09-26 20:46:47 +03:00
ppcx64.lpi
ppcx64llvm.lpi
ppcxtensa.lpi
ppcz80.lpi
ppheap.pas
ppu.pas * make the VMT symbol and type def of the corresponding class or object instead of having them be global 2022-05-26 21:42:51 +02:00
procdefutil.pas + add support for parsing function references 2022-05-26 21:42:59 +02:00
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 Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
psub.pas + initial support for anonymous functions, for now as essentially nested functions 2022-05-26 21:43:00 +02:00
psystem.pas Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
ptconst.pas
ptype.pas + add support for parsing function references 2022-05-26 21:42:59 +02:00
raatt.pas * simplifications by Rika (*2 loops => shl/Bsr), resolves #39717 2022-05-12 22:56:36 +02:00
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 * simplifications by Rika (*2 loops => shl/Bsr), resolves #39717 2022-05-12 22:56:36 +02:00
scandir.pas * do not crash in case of too many $push directives, resolves #39652 2022-04-07 22:51:30 +02:00
scanner.pas Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
switches.pas
symbase.pas Fix for variables longer than 127 chars 2022-05-10 23:18:01 +02:00
symconst.pas + initial support for anonymous functions, for now as essentially nested functions 2022-05-26 21:43:00 +02:00
symcreat.pas * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
symdef.pas * extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not 2022-05-26 21:42:59 +02:00
symsym.pas Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
symtable.pas * don't check for a duplicate internal symbol in inherited symtables 2022-05-26 21:42:51 +02:00
symtype.pas * cleanup 2022-05-23 22:28:59 +02:00
symutil.pas Rename tsymtable.insert and delete methods to insertsym ands deletesym 2022-05-03 23:00:28 +02:00
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 + support different versions of llvm-mc (version 10 seems to be the earliest that works) 2022-05-26 15:06:35 +03:00
systems.pas LLVM: separate as_clang_llvm_darwin 2022-05-14 22:38:49 +02:00
tgobj.pas * make tgobj.pas less verbose in extdebug mode, use separate define DEBUG_FREETEMP for the really 2021-12-15 23:05:18 +01:00
tokens.pas * Added support for the old Turbo Pascal INLINE(data/data/...) statement. 2021-08-16 00:40:34 +03:00
triplet.pas
verbose.pas - remove duplicate paraprintnodetree to ensure that there the right paraprintnodetree is used (namely the one from globals) 2022-05-26 21:42:51 +02:00
version.pas Remove "r" from FPC revision. 2021-08-13 11:18:42 +01:00
wasmbase.pas + added support for exception tags and for the 'throw' and 'catch' instructions 2021-09-27 21:44:09 +03:00
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