Commit Graph

19033 Commits

Author SHA1 Message Date
svenbarth
e4fa7928f9 Fix for Mantis #29527.
i386/popt386.pas, PeepHoleOptPass1:
  * disable the call to RegLoadedWithNewValue() as that method isn't implemented for any of the x86 optimizers (but add a ToDo so that it isn't forgotten)

git-svn-id: trunk@33273 -
2016-03-18 14:24:55 +00:00
Jonas Maebe
dcedd62049 * regenerated after r33249
git-svn-id: trunk@33269 -
2016-03-18 12:43:44 +00:00
Jonas Maebe
5919ca84bb * fixed string code page after setstring(rawbytestring,..) (mantis #29833)
git-svn-id: trunk@33268 -
2016-03-18 12:43:42 +00:00
Jeppe Johansen
632de58a5e Fixes #29853
git-svn-id: trunk@33267 -
2016-03-18 10:51:46 +00:00
Károly Balogh
e0c21b6f8b ARM: avoid some range check errors, while running a compiler compiled with -CR
git-svn-id: trunk@33257 -
2016-03-16 10:08:44 +00:00
nickysn
96f331038d * fixed crash in node_complexity() on the callparan nodes of SetLength() (and
perhaps calaparans of other inline nodes as well?)

git-svn-id: trunk@33256 -
2016-03-15 23:46:46 +00:00
florian
f01edc0a57 * copyright message updated to 2016
git-svn-id: trunk@33249 -
2016-03-13 19:37:57 +00:00
florian
45807056c5 * factored out SymbolCandidateForWarningOrHint
* do not issue a hint if a normal parameter is passed to another procedure by var
+ test

git-svn-id: trunk@33248 -
2016-03-13 19:14:26 +00:00
florian
4731ebeb50 * reset initcode after adding it to the statements list, so further iterations of loop optimization create a new one
git-svn-id: trunk@33245 -
2016-03-13 18:19:55 +00:00
florian
b59219b8e0 * when getting rid of a for loop by unrolling, simplify the block afterwards,
this requires also that the constant is first passed

git-svn-id: trunk@33244 -
2016-03-13 18:19:53 +00:00
florian
730a3c2666 + PrintNodeDFA writes also the defsum
git-svn-id: trunk@33243 -
2016-03-13 18:19:52 +00:00
sergei
578348817b * MIPS: some progress with linker:
* Fixed values of R_MIPS_GOT_HI16/LO16.
  + Implemented elf_mips_relocname
  + Check R_MIPS_PC16 relocations for overflows
  + Handle R_MIPS_JALR optimization hint.

git-svn-id: trunk@33240 -
2016-03-13 17:13:23 +00:00
florian
4e64fe77ac + define macros with information about the memory sizes of a MCU: FPC_FLASHBASE, FPC_FLASHSIZE, FPC_SRAMBASE, FPC_SRAMSIZE, FPC_EEPROMBASE, FPC_EEPROMSIZE, FPC_BOOTBASE, FPC_BOOTSIZE, resolves issue #29365
git-svn-id: trunk@33236 -
2016-03-13 15:50:55 +00:00
svenbarth
27ab1c61c5 Fix for Mantis #29745.
symdef.pas, getansistringdef:
  * use a temporary, non-defaware symtablestack to create the ansistringdef

+ added test

git-svn-id: trunk@33214 -
2016-03-10 19:43:45 +00:00
svenbarth
e58488dc3e Fix for Mantis #29792.
htypechk.pas, tcallcandidates:
  * create_candidate_list: check the correct tableoptions for sto_has_overload flag

+ added test

git-svn-id: trunk@33211 -
2016-03-09 20:45:26 +00:00
sergei
0f301b4c57 * Fixed spilling info for vcvt* instructions, part of Mantis #29783.
git-svn-id: trunk@33208 -
2016-03-09 16:36:30 +00:00
Jonas Maebe
741c91275a - removed "const" from first parameter of check_configfile(), because that
routine is called with the same variable passed as the first and second
    parameter, so the first one is not constand (since the second one is a
    "var" para) -- this caused errors when compiling the compiler with -gt

git-svn-id: trunk@33202 -
2016-03-07 19:58:59 +00:00
Jonas Maebe
38fd0efa3b * don't conditionalise BL on ARM, because it may have to be converted to
BLX at link time
   o related to the change introduced in r32788

git-svn-id: trunk@33199 -
2016-03-06 17:44:08 +00:00
Jonas Maebe
0e97811b50 + initialise managed string function results with an error string when
compiling with -gt (mantis #28948)

git-svn-id: trunk@33198 -
2016-03-06 17:22:11 +00:00
florian
3499c59872 * update of German messages files by Karl-Michael Schindler, resolves #29628
git-svn-id: trunk@33197 -
2016-03-06 17:11:33 +00:00
florian
cb4773432b + hardfloat directive (arm only): use hard float calling conventions regardless of the abi, resolves #29715
git-svn-id: trunk@33196 -
2016-03-06 15:47:31 +00:00
Jonas Maebe
7005dec9b4 * equivalent of r32602 for subscriptnodes; couldn't find a test that fails
without this patch, but just like with arrays, writing part of a record
    should mark the record itself as modified

git-svn-id: trunk@33195 -
2016-03-06 15:10:31 +00:00
Jonas Maebe
0da80d1a15 * use is_objccategory() instead of just checking for oo_is_classhelper when
looking for a category, as oo_is_classhelper is also set for Pascal
    class helpers (fixes crash caused by the fact that Object Pascal class
    helpers don't have childof set, while categories do -- mantis #29666)

git-svn-id: trunk@33193 -
2016-03-06 14:44:21 +00:00
Jonas Maebe
a0296d7311 * fixed indentation
git-svn-id: trunk@33192 -
2016-03-06 14:44:17 +00:00
Jonas Maebe
315b32918e + Tconstexprint-version of ispowerof2() to correctly deal with constants
> high(int64) (mantis #29620)

git-svn-id: trunk@33191 -
2016-03-06 14:16:47 +00:00
Jonas Maebe
3e59c05ecc * only check trecorddef(self).contains_cross_aword_field (for checking
whether the record can be kept in a register) after determining that the
    record is < 2*sizeof(aword) (it's a much more expensive check, especially
    for big records)

git-svn-id: trunk@33190 -
2016-03-06 14:16:38 +00:00
florian
c564acd378 * fix assembling of vfnm*
git-svn-id: trunk@33189 -
2016-03-06 13:33:29 +00:00
florian
e1546303f8 + enable use of vfma and friends on arm when doing fastmath optimizations
git-svn-id: trunk@33188 -
2016-03-06 13:33:27 +00:00
florian
ad71b8348e * S1..S15 do not need to be marked as volatile as they are sub-registers of double size registers
git-svn-id: trunk@33187 -
2016-03-06 13:33:26 +00:00
florian
6207a53f5d * never allocate odd numbered single-sized registers
git-svn-id: trunk@33186 -
2016-03-06 13:33:24 +00:00
florian
d13246cea4 + handle FMA instructions in taicpu.spilling_get_operation_type
git-svn-id: trunk@33183 -
2016-03-06 13:33:18 +00:00
florian
1c067e96bf * fix VFPv4 support
git-svn-id: trunk@33182 -
2016-03-06 13:33:16 +00:00
florian
43746685a5 + fma support for arm
git-svn-id: trunk@33181 -
2016-03-06 13:33:14 +00:00
Jonas Maebe
096e1c45d6 * don't keep records in registers if they contain a field that spans the
boundary between two awords, as our subscript code does not handle
    them correctly (second part of mantis #29669)

git-svn-id: trunk@33180 -
2016-03-06 13:20:25 +00:00
Jonas Maebe
7a966345e5 * don't recalculate the regable info when dereferencing a symbol's vardef:
o avoid having to save and restore the original info
   o avoids problems in case determining the regable state depends on variables
     that may not have been initialised yet at that point (such as
     voidpointertype/voidcodepointertype in case the size of procvardefs needs
     to be calculated by the regable-determining code)

git-svn-id: trunk@33179 -
2016-03-06 13:20:22 +00:00
Jonas Maebe
2483ad5939 * factored out code to set the "regable" information from setvardef, and
removed outdated comment regarding unsupported static fpu regvars

git-svn-id: trunk@33178 -
2016-03-06 13:20:19 +00:00
Jonas Maebe
9788bb1316 * fixed check regarding whether a field is in the first or second word of
of 2*sizeof(aword) bitpacked record that's kept in registers
    (mantis #29669)

git-svn-id: trunk@33177 -
2016-03-06 13:20:16 +00:00
Jonas Maebe
531ce3be61 * fixed initialising an array of ansichar typed constant using a string
constant: directly encode the character values in the constant, rather
    than letting unicodestr_to_chararray handle the conversion (which
    implies a codepage conversion)

git-svn-id: trunk@33158 -
2016-03-05 15:32:18 +00:00
Jonas Maebe
74eb0de460 * fixed mangled names for nested procedures on the JVM platform after r32153
git-svn-id: trunk@33156 -
2016-03-05 15:31:51 +00:00
nickysn
87baa8c43f * in the internal assembler writer, when starting a new object file, set the
cputype to current_settings.cputype, instead of cpu_none (which indicates no
  restrictions)

git-svn-id: trunk@33142 -
2016-03-02 01:12:56 +00:00
nickysn
c061a98e93 * made the i8086 internal assembler cpu instruction set checking follow the
asd_cpu directive (and thus, respect the {$asmcpu XXX} directive)

git-svn-id: trunk@33141 -
2016-03-02 01:03:52 +00:00
nickysn
843aee8f4a * base the CPU name, written in the beginning of each NASM assembler file on the
nasm_cpu_name const array, which is used by the asd_cpu directive as well.
+ also enable writing this directive on i386 and x86_64 as well.

git-svn-id: trunk@33140 -
2016-03-01 00:45:51 +00:00
nickysn
ca868b0bc6 * fixed indentation in TX86NasmAssembler.WriteHeader
git-svn-id: trunk@33139 -
2016-03-01 00:40:35 +00:00
nickysn
06b9789928 + implemented a new {$ASMCPU XXX} directive, allowing to specify a different
CPU target for inline assembler blocks. In addition to the different CPUs
  (as listed under 'Supported CPU instruction sets:' in the output of 'fpc -i'),
  it also supports the special values 'ANY' and 'CURRENT'. 'ANY' means no
  restrictions (i.e. all instructions are available). 'CURRENT' means the
  current CPU target (as specified with the '-Cp' command line option). For
  backward compatibility, the default value is 'ANY' for all CPU targets, except
  i8086, where it defaults to 'CURRENT'.

  This directive requires support for the new asd_cpu directive in the assembler
  writer. This is currently implemented only for NASM, but will be supported in
  some of the other assembler writers as well (incl. the x86 internal assembler
  writer).

git-svn-id: trunk@33138 -
2016-02-29 22:25:25 +00:00
nickysn
d0d940f119 * also declare Intel Nehalem and newer CPUs as 'IA64' in the NASM's 'CPU'
directive, because NASM still doesn't support anything newer than 'PRESCOTT'
  for its CPU directive, and 'IA64' is considered (internally by NASM) to be the
  highest CPU level.

git-svn-id: trunk@33137 -
2016-02-29 21:49:28 +00:00
nickysn
1a56a1a026 * make the asd_cpu directive (which is currently only implemented in the NASM
asm writer), when used with a cpu_none parameter, indicate no restrictions for
  the CPU type. Under NASM, this is achieved by specifying 'IA64' as the
  CPU type, since that's the highest CPU, supported by NASM's 'CPU' directive.

git-svn-id: trunk@33136 -
2016-02-29 21:44:55 +00:00
florian
73aeea73ed + VOpVMov2VOp optimization
git-svn-id: trunk@33135 -
2016-02-28 20:13:16 +00:00
florian
260ea81c82 * improve cse on record/array accesses
git-svn-id: trunk@33134 -
2016-02-28 18:44:45 +00:00
florian
8fe986ba11 + write also node complexity when dumping a node tree
git-svn-id: trunk@33133 -
2016-02-28 18:44:43 +00:00
florian
ce64d77256 * compilation fixed
git-svn-id: trunk@33132 -
2016-02-28 18:44:41 +00:00