Commit Graph

13782 Commits

Author SHA1 Message Date
Jonas Maebe
3ba801d37c * fix loading 64 bit floating point parameters passed half in an integer
register and half on the stack into a VFP register on ARM (mantis
    #21917)

git-svn-id: trunk@21286 -
2012-05-13 12:14:34 +00:00
Jonas Maebe
ef2d665a50 + support for REV and several other ARMv6/ARMv6T2+ opcodes (mantis #21888)
git-svn-id: trunk@21285 -
2012-05-13 12:14:26 +00:00
Jonas Maebe
f95925dd91 * don't push/pop current_module.localsymtable when adding explicitly created
pointer/arraydefs, because these operations can have side-effects in case
    of helpers (will add/remove helpers, so popping after the insertion
    removed all helpers in the static symtable of the current unit)

git-svn-id: trunk@21282 -
2012-05-12 22:24:27 +00:00
Jonas Maebe
85a3fd3357 + ossinttype/osuinttype defs that correspond to OS_SINT/OS_INT for use in
the high level code generator

git-svn-id: trunk@21279 -
2012-05-12 16:03:15 +00:00
Jonas Maebe
c1b1eadb98 * factored out the intialization of uinttype/sinttype/ptruinttype/ptrsinttype
from create_intern_types and load_intern_types (+ the version from
    load_intern_types was out-of-date)

git-svn-id: trunk@21278 -
2012-05-12 16:03:02 +00:00
paul
62a91ef626 compiler: don't search symbol in other symtables than in found nested class, fix wrong test + add another one
git-svn-id: trunk@21275 -
2012-05-12 08:21:50 +00:00
paul
62b59235ca compiler: fix accessing typed constants inside class declaration (bug #21941)
git-svn-id: trunk@21273 -
2012-05-12 01:09:56 +00:00
svenbarth
b3595893c8 pgenutil.pas, generate_specialization: set the correct module index, so that warnings, etc. that are generated for a type declaration are printed using the module where the generic came from (this is already done for method bodies, but not for declarations)
git-svn-id: trunk@21271 -
2012-05-11 06:44:12 +00:00
svenbarth
810bd7ddab + symtable.pas, tspecializesymtable.create: SymList and DefList do not need to own the symbols and defs as they are moved to another symtable before the specialize symtable is destroyed (avoids the need to call "extract" on those lists)
* pgenutil.pas, generate_specialization: Correctly change the ownership of extracted symbols and defs by calling ChangeOwner on the symbol/def which does all the magic of changing the owner and adding it to the corresponding list of the given symtable. This fixes Mantis #21550
* Adjusted tw21550.pp so that it enforces the generation of debug information which (as this was the option which caused the above mentioned bug to show)

git-svn-id: trunk@21270 -
2012-05-10 06:27:32 +00:00
paul
d79eee8ed1 compiler: write a warning if unit should be compiled with built-in system codepage for ansistring constants but this codepage is not known by the compiler
git-svn-id: trunk@21269 -
2012-05-10 01:24:18 +00:00
svenbarth
4fc7515591 * pdecsub.pas, parse_proc_dec: always parse operator overload heads as block type bt_body so that operators like ">", "=>" or "<>" are resolved to the correct tokens ("<>" would be a sequence of "_LSHARPBRACKET _RSHARPBRACKET" instead of _NE otherwise). Fixes Mantis #21127
git-svn-id: trunk@21266 -
2012-05-09 12:32:34 +00:00
svenbarth
def357287e * revert revision 21251 for pdecvar.pas: not generating the bss-data for the static symbol for a generic breaks linking with debug info enabled; I'll need to find a better solution to avoid unneeded use of space (luckily it wasn't needed to fix any bug ^^)
git-svn-id: trunk@21264 -
2012-05-09 12:02:41 +00:00
Jonas Maebe
641b259aed * adjusted thlcg.g_rangecheck() implementation so it can be used for all
targets and removed (the almost identical) tcg.g_rangecheck()

git-svn-id: trunk@21262 -
2012-05-08 20:02:36 +00:00
Jonas Maebe
11e9f95580 * fixed (not harmless) class cast error when indexing an array[orddef] using
a non-orddef (e.g., a variant)

git-svn-id: trunk@21261 -
2012-05-08 20:02:26 +00:00
Jonas Maebe
95b8b95c9c * fixed (harmless) class cast error
git-svn-id: trunk@21260 -
2012-05-08 20:02:18 +00:00
Jonas Maebe
41d86f2b26 * fixed (harmless) class cast error when checking whether an aggregate
has the same size as one of its members to determine whether we can
    exchange two temps rather than copying one to the other

git-svn-id: trunk@21259 -
2012-05-08 20:02:04 +00:00
Jonas Maebe
003a30db6b - reverted r21246, it breaks tcalext3/5 on x86
git-svn-id: trunk@21258 -
2012-05-08 17:17:01 +00:00
Jonas Maebe
24be42d509 * changed "crc" variable from longint to cardinal to avoid (harmless) range
check errors

git-svn-id: trunk@21257 -
2012-05-08 17:16:56 +00:00
Jonas Maebe
ab914a8ae3 * the code page of unicodestring/widestring on big endian targets is
UTF-16BE, not UTF-16LE

git-svn-id: trunk@21255 -
2012-05-08 13:38:16 +00:00
svenbarth
5b1b194b47 * pdecvar.pas, read_record_fields: don't generate BSS-data for generic static fields (doesn't fix any specific bug, but we don't need space reserved for the field)
* pgenutil.pas, generate_specialization: fix a stupid "don't iterate upwards if deleting/extracting" mistake (twice!); this fixes Mantis #21550 and Mantis #21654 (tests added)

git-svn-id: trunk@21251 -
2012-05-08 07:31:37 +00:00
Jonas Maebe
64f3ba3299 * clarified description of -Xd, it is not always required for
cross-compiling (mantis #21963)

git-svn-id: trunk@21248 -
2012-05-06 15:44:52 +00:00
Jonas Maebe
50d2fa7134 * after changing a modeswitch, only change related module/localswitches that
depend on the modeswitch that was just changed (so that e.g. changing
    the nested procvars setting has no effect on the state of $h+/$h-)
    (mantis #21951)

git-svn-id: trunk@21247 -
2012-05-06 14:56:49 +00:00
Jonas Maebe
9568693664 * removed superfluous sign extension from a_load_subsetreg_reg() (the value
is already sign extended at that point if required)

git-svn-id: trunk@21246 -
2012-05-06 14:50:38 +00:00
florian
edbb826521 * generate correct entry code on mips for subroutines with a stack frame >2^15-1
git-svn-id: trunk@21238 -
2012-05-05 18:34:31 +00:00
florian
5cfc865889 * version update
git-svn-id: trunk@21237 -
2012-05-05 18:33:15 +00:00
florian
77ae218556 * safer calculation of pool placement on arm
git-svn-id: trunk@21226 -
2012-05-04 19:10:30 +00:00
paul
aad9294c27 compiler: when explicit codepage modeswitch is installed and compiler has no codepage map for the DefaultSystemCodepage use default compiler codepage
git-svn-id: trunk@21223 -
2012-05-04 06:09:35 +00:00
sergei
78c0215447 Preparations to native threadvar support:
- i386/cgcpu.pas: removed segment check, rejecting references with segment here is too early. These references are passed to tcgx86.a_loadaddr_ref_reg, which can generate required code for them (or reject if they are not allowed for the target).
- ncgld.pas: removed "not tf_section_threadvars in target_info" condition, it is inverse to one on the following line, making non-generic branch impossible to execute.
+ Define FPC_SECTION_THREADVARS macro if corresponding flag is set for the target.

git-svn-id: trunk@21210 -
2012-05-03 16:26:44 +00:00
Jonas Maebe
0841ee6e4f * GNU ld only supports double quotes in its response file -> requote there
as well under Unix (mantis #21928, caused by r21069)

git-svn-id: trunk@21208 -
2012-05-03 12:41:16 +00:00
svenbarth
3d6e08ed59 + Add support for the JVM architecture to the compiler driver "fpc"
git-svn-id: trunk@21204 -
2012-05-03 06:26:30 +00:00
svenbarth
7ebbebc877 - removed a duplicated include statement
git-svn-id: trunk@21203 -
2012-05-03 06:24:52 +00:00
Jonas Maebe
9c0ec8ee8c * part of r21120, forgot to commit
git-svn-id: trunk@21128 -
2012-04-29 22:27:05 +00:00
Jonas Maebe
dd03bc3e66 * i386 version of fix from r21113
git-svn-id: trunk@21127 -
2012-04-29 22:27:00 +00:00
Jonas Maebe
8a7123eed8 * override a_call_reg() with an internalerror rather than a_call_ref(),
since it's the former that is abstract in the base class

git-svn-id: trunk@21126 -
2012-04-29 22:26:51 +00:00
florian
366e2027fc * rename TMIPSELParaManager into TMIPSParaManager
git-svn-id: trunk@21124 -
2012-04-29 21:32:52 +00:00
florian
31f54a7810 * use separate build directory for mipsel
git-svn-id: trunk@21122 -
2012-04-29 21:30:46 +00:00
florian
25e82bb1af * fix stack frame generation on mips(el)
git-svn-id: trunk@21121 -
2012-04-29 21:29:06 +00:00
Jonas Maebe
14cfe770a4 * replaced most (if not all) remaining fields/parameters in the compiler
that deal with paths/filenames with TPathStr (= ansistring) to prevent
    cutting off long paths (no change in speed when compiling the compiler,
    1% extra memory usage)

git-svn-id: trunk@21120 -
2012-04-29 17:36:23 +00:00
florian
aadeba4d1a * started to fix stack frame generation on MIPS(EL)
git-svn-id: trunk@21118 -
2012-04-29 16:58:19 +00:00
Jonas Maebe
1345b7d107 * changed ref parameter of thlcgobj.a_call_ref() into a const parameter
git-svn-id: trunk@21115 -
2012-04-29 13:13:42 +00:00
Jonas Maebe
3abd5d3882 * changed inlinelevel (which is used to track whether or not we have to
generate line number information) from longint into cardinal, since it
    should never become < 0 (allows catching errors by enabling range
    checking)

git-svn-id: trunk@21114 -
2012-04-29 13:13:36 +00:00
Jonas Maebe
7742dc0006 * don't remove ait_markers between unconditional jumps and the next label,
to prevent removing the start/end of assembler blocks, and the start/end
    of nolineinfo blocks (solves the problem that with -O2 -al most of the
    source lines were missing from classes.s)

git-svn-id: trunk@21113 -
2012-04-29 13:13:31 +00:00
Jonas Maebe
06b17111da * also recognize scurrency as an "originally was a 64 bit value" in
try_make_mul32to64()
  * when inserting a 32x32->64 multiplication, change the typeconversions
    of the original nodes into internal type conversions, because they
    may have been currency (e.g., in case of an integer-to-currency
    conversion, which is performed via integer*currency(10000)) and
    since r21097 implicit conversions from currency to ordinal are no
    longer allowed

git-svn-id: trunk@21112 -
2012-04-29 13:13:22 +00:00
sergei
7f96fee752 + Added a comment on tcgprocinfo.generate_exceptfilter operation.
git-svn-id: trunk@21111 -
2012-04-29 10:34:29 +00:00
sergei
a85bb08a74 * Save/restore high-level code generator when processing exception filters, fixes building in Win64 with -dTEST_WIN64_SEH, Mantis #21879.
git-svn-id: trunk@21110 -
2012-04-29 07:35:19 +00:00
Jonas Maebe
6850653296 * replaced "set1<=set2" expression with "(set1*set2)=set1", because the
SPARC code generator of 2.6.0 compiles the former expression wrongly
    (which was fixed in r21095)

git-svn-id: trunk@21109 -
2012-04-28 22:38:14 +00:00
Jonas Maebe
562b968b16 * now that copy() expressions are only translated into calls during the
first pass, we have to manually set the varstate of its parameters during
    the typecheck pass (mantis #21878)

git-svn-id: trunk@21106 -
2012-04-28 21:33:29 +00:00
sergei
be5a5d6ae6 - Removed redundant fillchar() calls, class instances are cleared on construction.
git-svn-id: trunk@21101 -
2012-04-28 17:16:33 +00:00
sergei
c08ab0f745 * Re-raising exceptions must be allowed only in 'except' block itself, not in 'try' block of a nested try..except statement. Mantis #21873.
git-svn-id: trunk@21100 -
2012-04-28 15:59:34 +00:00
Jonas Maebe
4fced5d142 + generic implementation of thlcgobj.a_call_ref()
* override thlcg.a_call_reg() in JVM hlcgcpu with dummy that calls
    internalerror

git-svn-id: trunk@21099 -
2012-04-28 14:27:45 +00:00