summaryrefslogtreecommitdiff
path: root/compiler
Commit message (Collapse)AuthorAgeFilesLines
* * moved the recording of aggregate type information during typed constantjonas2014-10-063-131/+400
| | | | | | | | | | parsing from nllvmtcon to aasmcnst o added automatic insertion of padding bytes when fields need to be aligned, so that once ncgvmt (and hopefully ncgrtti) are converted to the typed constant builder class, we can get rid of all the explicit alignment directives (only supported for non-bitpacked records for now) git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28763 3ad0048d-3df7-0310-abae-a5850022a9f2
* * mark the typesyms generated in trecorddef.create_global_internal() as usedjonas2014-10-061-4/+12
| | | | | | so that they don't cause hints about unused types git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28762 3ad0048d-3df7-0310-abae-a5850022a9f2
* * put the symtable(s) of the current unit back on the symtablestack beforejonas2014-10-061-1/+8
| | | | | | | generating the resource strings, so that the defs generated by the typed constant builder get added to the correct unit git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28761 3ad0048d-3df7-0310-abae-a5850022a9f2
* * store the vmt field rather than only its offset in tobjectdef, so we canjonas2014-10-062-17/+24
| | | | | | | easily find it again later (since it's hidden and doesn't have a fixed name, it's hard otherwise). Needed for the typed constant builder. git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28760 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fixed copy/paste error in r28322jonas2014-10-061-1/+1
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28759 3ad0048d-3df7-0310-abae-a5850022a9f2
* * don't emit padding bytes if there was an error parsing a typed constantjonas2014-10-061-8/+11
| | | | | | record git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28758 3ad0048d-3df7-0310-abae-a5850022a9f2
* * factored out adding a single field to a record based on a defjonas2014-10-061-6/+12
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28757 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fixed whitespacejonas2014-10-061-0/+1
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28756 3ad0048d-3df7-0310-abae-a5850022a9f2
* * emit alignment directive in the typed constant builder when starting a newjonas2014-10-061-1/+3
| | | | | | constant without putting it in a separate section git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28755 3ad0048d-3df7-0310-abae-a5850022a9f2
* * return the next field from tabstractrecordsymtable.findfieldbyoffset() ifjonas2014-10-061-1/+8
| | | | | | | there is no field at that exact offset, so we can also use it to find the next field in case there is alignment padding git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28754 3ad0048d-3df7-0310-abae-a5850022a9f2
* * split up specifying the type of the section of a typed constant and whetherjonas2014-10-064-20/+28
| | | | | | it should be put in a new section git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28753 3ad0048d-3df7-0310-abae-a5850022a9f2
* * record the alignment in taillvmdecl, as it can be different from thejonas2014-10-065-12/+14
| | | | | | default git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28752 3ad0048d-3df7-0310-abae-a5850022a9f2
* * pass alignment to tnodeutils.insertbsssym()jonas2014-10-062-5/+5
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28751 3ad0048d-3df7-0310-abae-a5850022a9f2
* * create the recorddef at the start when building an anonymous recorddef,jonas2014-10-064-29/+42
| | | | | | | so that we can already refer to its def while we are sill parsing individual elements git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28750 3ad0048d-3df7-0310-abae-a5850022a9f2
* + added missing begin_anonymous_record() for widestring constants (undetectedjonas2014-10-061-0/+1
| | | | | | | before because it only matters for the llvm target, and fpc+llvm+windows is not yet supported/tested) git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28749 3ad0048d-3df7-0310-abae-a5850022a9f2
* * syncrhonised with trunk up till r28471jonas2014-08-1930-86/+743
|\ | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28495 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * removed unnecessary "as" expressionsjonas2014-08-191-8/+8
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28471 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: improved version of the previous commit, pass the stripping option to ↵karoly2014-08-191-17/+5
| | | | | | | | | | | | the linker instead, seems to work. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28466 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: stripping of executables on i386 works nowkaroly2014-08-191-7/+19
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28465 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: syscall (library call) support for based on the Amiga/68k and ↵karoly2014-08-194-5/+120
| | | | | | | | | | | | MorphOS/PPC versions git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28463 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * fixed copy/paste error that caused all warnings to be disabled afterjonas2014-08-181-1/+1
| | | | | | | | | | | | | | | | compiling the symdef unit while building a compiler for a non-64 bit code generator git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28462 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * fixed warning about always-true comparison when compiling a 16 bit targetjonas2014-08-181-0/+2
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28461 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * fixed warning about signed integer to pointer conversionjonas2014-08-181-1/+1
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28460 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * aint -> asizeint (immediate operand vs offset size)jonas2014-08-181-1/+1
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28459 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * changed forcesize parameter of tgobj.gethltemp() from aint into asizeint,jonas2014-08-182-4/+4
| | | | | | | | | | | | | | | | as that one represents memory sizes while aint represents code generator immediate operands git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28458 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * removed nested commentsjonas2014-08-182-4/+4
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28457 3ad0048d-3df7-0310-abae-a5850022a9f2
| * * fixed compilation with range checking enabledjonas2014-08-181-1/+1
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28447 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: added remark about collect-aros issue, fixed ld name for x86_64 targetkaroly2014-08-181-2/+6
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28444 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: use collect-aros to link. also support binutils prefixes.karoly2014-08-181-2/+4
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28443 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: assembler fixeskaroly2014-08-182-2/+2
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28439 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: regenerated Makefiles to support i386-aroskaroly2014-08-172-7/+62
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28438 3ad0048d-3df7-0310-abae-a5850022a9f2
| * AROS: and also add the system info/target units which were forgotten in the ↵karoly2014-08-172-0/+466
| | | | | | | | | | | | previous commit git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28433 3ad0048d-3df7-0310-abae-a5850022a9f2
| * merged/updated AROS/i386 target to trunk from AROS branch, to support Marcus ↵karoly2014-08-1712-55/+66
| | | | | | | | | | | | Sackrow's work on AROS support which will hopefully benefit all Amiga-like targets (classic, MorphOS) on the long run. Compiler only, RTL comes in the next run. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28432 3ad0048d-3df7-0310-abae-a5850022a9f2
| * m68k: plain 68000 also needs extra handling for large offsetskaroly2014-08-161-2/+2
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28423 3ad0048d-3df7-0310-abae-a5850022a9f2
| * m68k: do not generate CLR instructions to memory references on plain 68k. ↵karoly2014-08-161-1/+1
| | | | | | | | | | | | there this instruction also causes reads from the address, which is slow and can have side effects. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28422 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * fixed calldef specified in case of calling a varargs C functionjonas2014-08-191-1/+5
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28494 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * correctly handle make_simple_ref() for voidpointersjonas2014-08-191-2/+7
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28493 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * moved g_external_wrapper() to the hlcg, and also g_intf_wrapper() becausejonas2014-08-1927-1157/+1205
| | | | | | | | | | | | for some platforms it depends on that routine git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28492 3ad0048d-3df7-0310-abae-a5850022a9f2
* | + temp_to_ref() implementation for llvmjonas2014-08-191-2/+13
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28491 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * record the alignment of temps, and set it when creating a reference basedjonas2014-08-193-1/+5
| | | | | | | | | | | | | | on a temp instead of assuming it's always aligned to a multiple of the stackpointer size git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28490 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * changed all alignment parameters in the temp manager to shortintjonas2014-08-194-14/+14
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28489 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * changed all size parameters in the temp manager from longint to asizeintjonas2014-08-194-32/+32
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28488 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * moved creating a reference based on a ttemprecord to a new virtual methodjonas2014-08-191-4/+13
| | | | | | | | | | | | called temp_to_ref() git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28487 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * spelling fixjonas2014-08-191-1/+1
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28486 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * separate tracking the def of a temp and whether or not it needs to bejonas2014-08-195-21/+30
| | | | | | | | | | | | finalised (for llvm, we always keep track of the def) git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28485 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * renamed (hl)gettemptyped() to (hl)gettempmanaged() to better indicate thejonas2014-08-194-14/+7
| | | | | | | | | | | | meaning git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28484 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * channged gettemptyped() into gethltemp() call, as gettemptyped() is onlyjonas2014-08-191-2/+2
| | | | | | | | | | | | intended/required for managed types git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28483 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * converted tcgtryexceptnode.pass_generate_code() andjonas2014-08-191-41/+41
| | | | | | | | | | | | tcgtryfinallynode.pass_generate_code() to thlcg git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28482 3ad0048d-3df7-0310-abae-a5850022a9f2
* | * moved all g_exception_*() methods to hlcgobj and cleaned them up (no morejonas2014-08-199-175/+162
| | | | | | | | | | | | | | | | | | hardcoded registers for the most part) + added extra g_exception_discard_reason() that can be called when we only want to get rid of the currently pushed exception reason, and don't have to load it (so it can do nothing on platforms that don't use push/pop) git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28481 3ad0048d-3df7-0310-abae-a5850022a9f2
* | + support for a_call_reg() on the llvm target (can call simple procvars now)jonas2014-08-192-3/+23
| | | | | | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/hlcgllvm@28480 3ad0048d-3df7-0310-abae-a5850022a9f2