fpc/compiler
2025-04-10 09:15:59 +00:00
..
aarch64 * according to Jonas iOS doesn't zero extend results in the callee either, so check removed 2023-09-14 11:48:03 +02:00
arm Disable overflow/range check in some part of the arm code 2023-10-30 12:59:19 +00:00
avr Only perform OpCp2Op optimization when the first Op is ANDI and comparison is against 0. 2023-03-10 23:27:48 +01:00
generic
html
i386 * x86: Code generation fixes where FLAGS 2024-06-04 22:53:51 +02:00
i8086 * x86: Code generation fixes where FLAGS 2024-06-04 22:53:51 +02:00
jvm
llvm * fixed LLVM compilation after r43860 2024-06-09 17:51:39 +02:00
m68k m68k: always use ELF objects with vasm for improved cross-compatibility with other tools and compilers 2022-09-29 12:08:04 +02:00
mips + sanity checks in mips and sparc register allocator 2023-06-09 07:53:29 +01:00
msg * copyright year for compiler logo updated 2024-01-20 21:17:34 +01:00
powerpc Add dwarf CFI for 32-bit powerpc cpu 2023-12-04 20:37:06 +00:00
powerpc64 Add dwarf CFI for powerpc64 cpu 2023-12-04 20:36:23 +00:00
ppcgen Add system_powerpc_wii to supported_targets of powerpc generic GNU assembler 2022-10-24 10:35:02 -05:00
sparc
sparc64
sparcgen + sanity checks in mips and sparc register allocator 2023-06-09 07:53:29 +01:00
systems windows: fix external linking with binutils >= 2.36, based on a patch by Pierre Muller 2025-04-10 09:15:59 +00:00
utils Update all Makefile's by running update fpcmake 2024-11-20 20:20:49 +01:00
x86 * fix compilation after last commit 2024-06-04 22:56:05 +02:00
x86_64 * x86: Code generation fixes where FLAGS 2024-06-04 22:53:51 +02:00
aasmbase.pas + gcc_except_table section 2022-08-06 14:16:18 +02:00
aasmcfi.pas
aasmcnst.pas * free the placeholder for the count of the dynamic array in end_dynarray_const() and document it as such 2022-04-09 15:05:32 +02:00
aasmdata.pas
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 21:34:20 +00:00
aggas.pas Extend ait_ua_elf_const2str to all aitconst_XXX to fix mips/mipsel RTTI generation 2023-05-25 21:37:47 +00:00
aopt.pas
aoptbase.pas
aoptda.pas
aoptobj.pas * manually fix unwanted stripping of exception frame info based on a patch by Gareth J. Moreton 2022-01-23 17:32:40 +01:00
aoptutils.pas
assemble.pas Avoid float_raise call in FPC_SOFT_FPUX80 code 2023-05-25 21:37:47 +00:00
blockutl.pas
browcol.pas
catch.pas
ccharset.pas
cclasses.pas
cfidwarf.pas * Fixed padding of CFI-structures on non-32bit architectures 2022-06-29 11:09:43 +02:00
cfileutl.pas
cg64f32.pas * handle LOC_(C)SUBSETREG/REF in second_NegNot_assign 2021-10-24 12:40:38 +02:00
cgbase.pas * don't convert the fpu parameters size from tcgsize -> int -> float_tcgsize 2022-02-13 12:02:28 +01:00
cghlcpu.pas
cgobj.pas * don't convert the fpu parameters size from tcgsize -> int -> float_tcgsize 2022-02-13 12:02:28 +01:00
cgutils.pas
cmsgs.pas
comphook.pas
compiler.pas
compinnr.pas
comprsrc.pas
constexp.pas Merge commit to fixes branch: 2021-07-13 09:44:53 +00:00
COPYING.txt
cpid.pas
crefs.pas
cresstr.pas
cscript.pas
cstreams.pas
cutils.pas
cwindirs.pp
dbgbase.pas
dbgcodeview.pas
dbgdwarf.pas * correct Dwarf-4 line info header as noted by Martin on the mailing list 2024-06-07 23:03:11 +02:00
dbgstabs.pas Second trial to fix commit 48688 2022-01-16 17:14:14 +00:00
dbgstabx.pas ------------------------------------------------------------------------ 2021-05-31 21:27:48 +00:00
defcmp.pas
defutil.pas * cleaning up tcgsize: it makes no sense to declare every combination and type 2022-02-13 12:00:45 +01:00
dirparse.pas
elfbase.pas
entfile.pas
export.pas
expunix.pas
finput.pas
fmodule.pas * Fix for issue by bart broersma 2021-09-30 19:41:44 +00:00
fpccrc.pas
fpcdefs.inc + -ib parameter to print the code generator backend type: FPC or LLVM 2023-09-28 16:50:34 +02:00
fpcp.pas
fpkg.pas
fppu.pas
gendef.pas
globals.pas + -ib parameter to print the code generator backend type: FPC or LLVM 2023-09-28 16:50:34 +02:00
globstat.pas
globtype.pas
hlcg2ll.pas * handle LOC_(C)SUBSETREG/REF in second_NegNot_assign 2021-10-24 12:40:38 +02:00
hlcgobj.pas * x86: Code generation fixes where FLAGS 2024-06-04 22:53:51 +02:00
htypechk.pas * nil =/<> dyn. array is a valid expression, so isbinaryoperatoroverloadable needs to take care of it, resolves 2022-10-04 22:18:35 +02:00
impdef.pas
import.pas
ldscript.pas
link.pas - removed unused leftovers from old t_bsd code 2025-02-02 15:55:41 +01:00
macho.pas
machoutils.pas
Makefile Update all Makefile's by running update fpcmake 2024-11-20 20:20:49 +01:00
Makefile.fpc Avoid running cleanppulogs and ppulogs rules in parallel 2024-04-09 08:41:02 +00:00
MPWMake
msgidx.inc Prevent usage of internal linker in cross-endian configuration. 2023-11-20 22:30:22 +01:00
msgtxt.inc * copyright year updated 2024-01-20 21:16:23 +01:00
nadd.pas * might_have_sideeffects gets flags: if mhs_exceptions is passed, nodes which might cause an exception are considered as having a side effect 2021-08-24 10:43:24 +02:00
nbas.pas
ncal.pas Short version of the mips code genration bug 2023-06-09 07:53:29 +01:00
ncgadd.pas
ncgbas.pas
ncgcal.pas Short version of the mips code genration bug 2023-06-09 07:53:29 +01:00
ncgcnv.pas * Patch by J. Gareth "Kit" Moreton (issue ). Added missing allocation 2021-09-07 21:37:19 +02:00
ncgcon.pas * fix proposed by Christo Crause: properly handle pointer constant nodes on avr, resolves 2021-10-24 12:40:38 +02:00
ncgflw.pas * use node unit so make the last commit work 2024-09-23 21:40:15 +02:00
ncghlmat.pas
ncginl.pas * handle LOC_(C)SUBSETREG/REF in second_NegNot_assign 2021-10-24 12:40:38 +02:00
ncgld.pas Fix for issue 39603, cherry-picked commits 6f749cf4, 98483496, cc7d67d0 and f562a8d9. 2022-09-16 18:57:25 +02:00
ncgmat.pas
ncgmem.pas
ncgnstfl.pas
ncgnstld.pas
ncgnstmm.pas
ncgobjc.pas
ncgopt.pas
ncgrtti.pas
ncgset.pas * fix false possitive tconstexprint range errors after r41441 (mantis ) 2021-08-27 10:02:15 +02:00
ncgutil.pas * if sub nodes of a commutative node contain conditionally executed nodes, these sub nodes might not be swapped 2021-08-16 23:11:06 +02:00
ncgvmt.pas TOC handling: clean up 2022-03-20 13:45:15 +01:00
ncnv.pas * even if currency is handled by torddef, it is a real number, so using / is perfectly right, resolves 2021-08-24 00:00:50 +02:00
ncon.pas
nflw.pas * The label which is generated by traisenode is not a jump target. Mark 2024-09-23 21:34:49 +02:00
ngenutil.pas
ngtcon.pas
ninl.pas * cherry picked commit did not compile, fixing it, resolves 2022-01-08 23:06:11 +01:00
nld.pas
nmat.pas
nmem.pas
nobj.pas
nobjc.pas
node.pas
nopt.pas
nset.pas
nutils.pas * might_have_sideeffects gets flags: if mhs_exceptions is passed, nodes which might cause an exception are considered as having a side effect 2021-08-24 10:43:24 +02:00
objcasm.pas
objcdef.pas
objcgutl.pas
objcutil.pas
ogbase.pas * patch by Alfred Glänzer (manually "cherry picked"): Fix for internal error 200603061 on fixes, resolves 2024-05-04 22:40:50 +02:00
ogcoff.pas + gcc_except_table section 2022-08-06 14:16:18 +02:00
ogelf.pas + gcc_except_table section 2022-08-06 14:16:18 +02:00
oglx.pas
ogmacho.pas
ogmap.pas
ognlm.pas
ogomf.pas ------------------------------------------------------------------------ 2021-05-31 13:01:23 +00:00
omfbase.pas + gcc_except_table section 2022-08-06 14:16:18 +02:00
optbase.pas
optconstprop.pas
optcse.pas
optdead.pas
optdeadstore.pas
optdfa.pas
options.pas Try to adapt to missing as_default in fixes branch 2023-11-20 23:03:15 +01:00
optloadmodifystore.pas
optloop.pas
opttail.pas
optutils.pas * explicitly reset successor if noreturn is set 2021-08-23 23:53:22 +02:00
optvirt.pas
owar.pas
owbase.pas
owomflib.pas
parabase.pas
paramgr.pas Merged revision(s) 49339 from trunk: 2021-05-07 05:17:17 +00:00
parser.pas
pass_1.pas
pass_2.pas
pbase.pas
pcp.pas
pdecl.pas * 0 is a valid label in iso mode, resolves 2022-12-04 11:43:48 +01:00
pdecobj.pas
pdecsub.pas - Adds intrinsics to save/restore SREG when disabling interrupts. 2021-10-24 12:40:36 +02:00
pdecvar.pas
pexports.pas
pexpr.pas
pgentype.pas
pgenutil.pas * fix : correctly check whether the recorded token stream still needs to be parsed (the replay depth of the scanner needs to be *larger* than what it was before starting the playback) 2022-08-26 16:10:43 +02:00
pinline.pas
pkgutil.pas
pmodules.pas Merged revision(s) 47390 from trunk: 2021-05-01 14:09:57 +00:00
pp.lpi
pp.pas
pparautl.pas
ppc68k.lpi
ppc8086.lpi
ppcaarch64.lpi
ppcarm.lpi
ppcavr.lpi
ppcjvm.lpi
ppcmips.lpi
ppcmipsel.lpi
ppcppc64.lpi
ppcppc.lpi
ppcsparc64.lpi
ppcsparc.lpi
ppcx64.lpi
ppcx64llvm.lpi
ppheap.pas
ppu.pas
procdefutil.pas
procinfo.pas
pstatmnt.pas * 0 is a valid label in iso mode, resolves 2022-12-04 11:43:48 +01:00
psub.pas
psystem.pas
ptconst.pas
ptype.pas
raatt.pas
rabase.pas
rasm.pas
rautils.pas Try to avoid clang error on global labels inside .cfi_start/.cfi_end pairs 2025-04-09 21:10:42 +00:00
README.txt
rescmn.pas
rgbase.pas
rgobj.pas * do not join register deallocations/allocations as it makes no use and causes later on trouble in 2021-11-28 15:22:20 +01:00
scandir.pas
scanner.pas * fix conversion of true/false macro definitions to boolean values 2023-12-07 23:16:49 +01:00
switches.pas
symbase.pas
symconst.pas
symcreat.pas
symdef.pas * an objectdef also requires an init for its members if a member (or a member of one of the parents) has a complex initialization 2022-08-26 16:12:29 +02:00
symsym.pas
symtable.pas * fix for by fixing various small issues in tabstractrecordsymtable.has_single_field: 2022-01-30 22:42:10 +01:00
symtype.pas
symutil.pas
syscinfo.pas
systems.inc + -ib parameter to print the code generator backend type: FPC or LLVM 2023-09-28 16:50:34 +02:00
systems.pas Remove trunk-only as_XXX values 2023-11-20 23:03:15 +01:00
tgobj.pas
tokens.pas
triplet.pas
verbose.pas
version.pas Remove "r" from FPC revision. 2021-08-13 22:40:57 +02: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