Commit Graph

4455 Commits

Author SHA1 Message Date
joost
13b73244b3 * Added tests for r35776 and r35777
git-svn-id: trunk@35778 -
2017-04-11 16:59:58 +00:00
joost
1119207fe3 * Added test-framework for fppkg
git-svn-id: trunk@35765 -
2017-04-10 15:47:30 +00:00
nickysn
256dc546ac + implemented the in_neg_assign_x and in_not_assign_x inline nodes, which will
be used (TBD in a future commit) for optimizing x:=-x and x:=not x on CPUs
  that support performing these operations directly in memory (such as x86)

git-svn-id: trunk@35749 -
2017-04-07 16:02:40 +00:00
maciej-izak
ff28d5c85d * Fix usage of class operators in generics types. If we have generic type declaration/implementation then constraint in comparison to not specialized generic is not "exact" nor "incompatible". Mantis #30534.
git-svn-id: trunk@35740 -
2017-04-05 13:47:21 +00:00
maciej-izak
e4565378db * Allow for "record constraint" in Delphi mode more types like: ordinal, float, classical objects, enumerations (instead of just record). Delphi compatibility. Fix for mantis #24073.
git-svn-id: trunk@35739 -
2017-04-05 13:12:30 +00:00
maciej-izak
8391b73206 * Virtual methods cannot be declared as static (static virtual method has no sense).
+ added tests

git-svn-id: trunk@35724 -
2017-04-03 20:45:52 +00:00
sergei
8ae0864c9a * x86 Intel asm reader: handle special variables "self" and "result" similar to regular ones in terms of subscripting. This makes fix from r34911 apply to these special variables. Resolves #31542.
git-svn-id: trunk@35669 -
2017-03-27 19:58:55 +00:00
nickysn
fc59649a98 + added inline nodes for handling and/or/xor in place (i.e. x:=x op y, where
op=and/or/xor). They generate more optimal code on certain architectures
  (including x86). The new inline nodes aren't generated by the compiler yet,
  but will be used in the future, at certain optimization levels, whenever the
  pattern x:=x op y is detected by the compiler.

git-svn-id: trunk@35666 -
2017-03-26 23:16:53 +00:00
florian
0897bd154a + align(<int64>,<int64>) and align(<qword>,<qword>), resolves an issue reported on the mailing list with large records
+ tests
* trecordsymtable.insertunionst takes a asizeint parameter
* changed one aint into a asizeint

git-svn-id: trunk@35662 -
2017-03-26 09:35:56 +00:00
svenbarth
34327000d8 + add test for Mantis #31521 which is already fixed, though I don't know which revision did it...
git-svn-id: trunk@35656 -
2017-03-25 13:41:27 +00:00
florian
0cf5ef459d + tcgtypeconvnode.second_class_to_intf supports LOC_CONSTANT as well, resolves #31596
git-svn-id: trunk@35655 -
2017-03-25 10:27:29 +00:00
florian
e8f7c9dfdd + test for large case statements
git-svn-id: trunk@35646 -
2017-03-23 17:57:31 +00:00
sergei
2357ca1fe6 * Fixed size suffix generated for CVTSI2SS, CVTSI2SD, VCVTSI2SS, VCVTSI2SD instructions. Mantis #31550.
* tasm2.pp already detected this bug if run with -al option. Added a copy of tasm2.pp and configured it with -al, so it is run daily on all suitable machines.

git-svn-id: trunk@35626 -
2017-03-19 10:29:28 +00:00
michael
cd03ec93fe * Patch from Karl-Michael Schindler (Bug ID 30402)
git-svn-id: trunk@35622 -
2017-03-18 18:11:18 +00:00
michael
b517ab7906 * Patch from Mattias Gaertner:
- ability to omit declarations
  - removed obsolete code
  + Test unit for optimizations

git-svn-id: trunk@35615 -
2017-03-17 21:28:11 +00:00
michael
5ca540f3c7 * LibUSB headers from Anton Kavalenka (Bug ID 31095)
git-svn-id: trunk@35599 -
2017-03-15 18:38:45 +00:00
michael
7d92b0bd63 * unused Identifier analyser
git-svn-id: trunk@35586 -
2017-03-14 10:59:18 +00:00
florian
ad557a1da6 * allow call dword ptr eax in delphi, resolves #18225
git-svn-id: trunk@35572 -
2017-03-12 16:37:48 +00:00
michael
5de5fa9b7b * Allow object generics, bug ID #31485
git-svn-id: trunk@35571 -
2017-03-12 12:11:12 +00:00
florian
bb8b8f2eae * do not set IsMultithread on windows, if no second thread is started, resolves #30535
git-svn-id: trunk@35567 -
2017-03-11 21:35:48 +00:00
michael
9787c44c78 * Additional tests from Karl-Michael Schindler
git-svn-id: trunk@35521 -
2017-03-04 17:06:27 +00:00
svenbarth
7dc4f16db3 * fix for Mantis #31431: allow specializations to allow private/protected variables that their generic could have accessed
git-svn-id: trunk@35510 -
2017-03-03 21:45:29 +00:00
svenbarth
ece13bcc5a * fix for Mantis #31465: only consider non-static fields when checking whether a record may be used with Default()
+ added test (Note: the test fails due to missing = operator, but without the fix there was a stack overflow)

git-svn-id: trunk@35508 -
2017-03-03 17:03:46 +00:00
Károly Balogh
14ba99ea09 netbsd: bits of the m68k support I started to hack together. non functional yet.
git-svn-id: trunk@35501 -
2017-03-01 17:26:23 +00:00
maciej-izak
16a11c8b7a Bug fix for getting pointer to function result (mantis #10933 #19861)
git-svn-id: trunk@35495 -
2017-03-01 13:23:02 +00:00
Jonas Maebe
1adde89621 * copy tcallnode.right after copying the callinitblock, as right can be a
temprefnode referring to a temp from the init block (mantis #31421)

git-svn-id: trunk@35478 -
2017-02-24 19:57:40 +00:00
florian
b9dba41ad0 * intel assembler reader: scale factor in references can also be a constant symbol, resolves #31165
git-svn-id: trunk@35473 -
2017-02-22 20:59:52 +00:00
maciej-izak
533c89e128 * New test for management operators to detect regressions like regression fixed in r35461 (many times initialized global variables)
git-svn-id: trunk@35463 -
2017-02-21 14:20:15 +00:00
maciej-izak
92c0e57c59 * Test suite for management operators. We have management operators on trunk! Enjoy ^^
git-svn-id: trunk@35452 -
2017-02-19 14:34:09 +00:00
florian
3d6d5145bf * fix handling of const string symbols in preprocessor expressions
+ accept string constants in preprocessor expressions, resolves #31246

git-svn-id: trunk@35432 -
2017-02-12 17:29:45 +00:00
Jonas Maebe
265c8e7bbc + support for specifying ms_abi_default, ms_abi_cdelc, sysv_abi_default, and
sysv_abi_cdecl calling conventions on x86-64 to force using the SYSV/
    Microsoft ABI on platforms that don't use it by default (mainly to ease
    porting pure assembler routines)

git-svn-id: trunk@35425 -
2017-02-11 19:57:12 +00:00
maciej-izak
1d301b6dbe More consequent writing of Rtti. Part of code related to recorddef moved from recorddef_rtti to write_child_data_rtti(). When typeinfo is used in code init Rtti is a child of the full Rtti. Commit also contains correction for code commited for mantis #31249 (r35376) and mantis #31305 (r35377) for objects. Before was impossible to compile code with usage of typeinfo() function for object without managed fields ("Undefined symbol" error).
+ Test attached

git-svn-id: trunk@35403 -
2017-02-06 18:52:37 +00:00
florian
41b028ffc0 * unpcklp* require aligned memory, so do not spill replace their first operand by a memory location, resolves #31332
git-svn-id: trunk@35400 -
2017-02-05 20:59:54 +00:00
Jonas Maebe
6d5339cdb6 * CP819/IBM819 should be mapped to Windows code page 28591 (ISO8859-1)
(mantis #30639)

git-svn-id: trunk@35397 -
2017-02-04 22:44:36 +00:00
michael
eaa02f2f88 * Basic RTL for pas2js generated programs
git-svn-id: trunk@35384 -
2017-02-04 11:31:55 +00:00
svenbarth
11493de99b + add test from Mantis #31305 for completeness sake
git-svn-id: trunk@35377 -
2017-01-31 18:24:00 +00:00
svenbarth
c1390b3442 * fix for Mantis #31249: applied (adjusted) patch provided by Maciej Izak
Commit message:
[PATCH] More consistent RTTI (also better performance) for classic
 objects (reference to initrtti from fullrtti).

git-svn-id: trunk@35376 -
2017-01-31 18:21:53 +00:00
michael
a809705fb8 * New simple program to test if pparser parses some code
git-svn-id: trunk@35358 -
2017-01-29 14:50:34 +00:00
svenbarth
26135d605f + implement interface RTTI inspired by the changes from Steve Hildebrandt, yet not exactly the same. Like his implementation this one isn't Delphi compatible either.
+ added test

git-svn-id: trunk@35341 -
2017-01-27 17:00:15 +00:00
svenbarth
4742e826f6 + add test for Mantis #23702, just to be sure that we don't re-add that already solved problem
git-svn-id: trunk@35335 -
2017-01-27 13:58:54 +00:00
michael
27329429d9 * Fix possible buffer overflow (bug ID 31203)
git-svn-id: trunk@35330 -
2017-01-25 20:59:35 +00:00
Jonas Maebe
048666a25c * when freeing a procdef that hasn't been registered for writing to the ppu
at the end of compiling a unit, also remove it from its owning procsym
    in case the procsym does get written to the ppu (possible because you
    can have extra overloads in the implementation) (mantis #25283)
   o also fixes webtbf/tw4103 on the platforms where this still failed
     (on the platforms where it worked, it worked by accedent since the
      compiler was accessing memory of a freed procdef)

git-svn-id: trunk@35309 -
2017-01-15 17:41:27 +00:00
Jonas Maebe
382bbc1201 - removed gotderef from valid_for_assign(), and return true at every place
where it used to be set to true (dereferencing a pointer always means
    that regardless of what the pointer was, the resut is assignable)
    (mantis #22979)
   o also removed gotpointer, since it was only used in combination with
     gotderef

git-svn-id: trunk@35308 -
2017-01-15 16:32:51 +00:00
michael
180b93b326 * JSON2pas command-line tool added
git-svn-id: trunk@35297 -
2017-01-14 10:22:16 +00:00
michael
e6000e88d1 * Added JSON to pascal converter
git-svn-id: trunk@35296 -
2017-01-14 09:06:49 +00:00
michael
a33812f88c * Improved router implemented
git-svn-id: trunk@35292 -
2017-01-13 22:26:46 +00:00
Károly Balogh
a8325b763f fppkg: shortened the name of pkguninstalledsourcesrepository.pp
git-svn-id: trunk@35277 -
2017-01-12 13:35:08 +00:00
Jeppe Johansen
7e75457a3e Added more Nordic Semi controllers. Created a new unit for NRF52x controllers with a more precise register naming following Nordic SDK conventions.
Patch from Paul Mitchell.

git-svn-id: trunk@35274 -
2017-01-10 20:30:20 +00:00
florian
1bea9e36eb + entropy test for random
git-svn-id: trunk@35260 -
2017-01-08 10:26:12 +00:00
florian
29a2c433f7 * -Sr option for iso mode: in case no command line parameter is passed, the file name for program parameters is derived from their variable name
git-svn-id: trunk@35257 -
2017-01-07 14:50:58 +00:00
svenbarth
6b641394d0 * fix for Mantis #31201: don't write any RTTI for undefined defs (and while we're at it abort if an error def is encountered)
+ added test

git-svn-id: trunk@35256 -
2017-01-07 14:35:25 +00:00
Károly Balogh
58f85ed4e4 atari: dos unit skeleton for atari. to be implemented.
git-svn-id: trunk@35253 -
2017-01-07 01:15:45 +00:00
Károly Balogh
d084bd0d3b aros: implemented pascal sysinit, will be shared across all cpus. also refactored the RTL build
git-svn-id: trunk@35237 -
2017-01-05 00:21:59 +00:00
Károly Balogh
419629c9b7 atari: some initial proof-of-concept AES unit, so first GEM app works
git-svn-id: trunk@35216 -
2016-12-30 10:33:21 +00:00
Károly Balogh
114c90ecca tosunits: first bits of the Atari TOS/GEM interface package
git-svn-id: trunk@35214 -
2016-12-30 01:23:09 +00:00
Károly Balogh
51e28ac717 atari: reworked param handling once more, based on the Amiga code, fixes argv/argc
git-svn-id: trunk@35205 -
2016-12-27 17:12:49 +00:00
Károly Balogh
8760ff96e1 atari: new pascal startup code, reworked build, also ParamStr/ParamCount works now
git-svn-id: trunk@35201 -
2016-12-27 08:14:34 +00:00
svenbarth
150441627a + add test for Boolean RTTI
git-svn-id: trunk@35187 -
2016-12-23 16:05:57 +00:00
marcus
3f4e9cfcb7 Ami-Extra: example code for muihelper
git-svn-id: trunk@35165 -
2016-12-18 15:17:02 +00:00
marcus
b93a685ab8 Amiga: moved muihelper to ami-extra, added more macros, 64bit ready
git-svn-id: trunk@35163 -
2016-12-18 14:11:38 +00:00
svenbarth
d34acf3bc7 * fix for Mantis #31120: check current_genericdef only if the current_procinfo isn't used
+ added test

Note: the test is added to webtbs although it's right now still failing, cause I'll remove the restriction for nested procedures since the compiler now supports them correctly. Due to the way we handle generics we don't have problems with them unlike Delphi.

git-svn-id: trunk@35147 -
2016-12-17 21:20:44 +00:00
svenbarth
a9d14fe30b * extend TOrdType by entries for 64-bit values
* have tkInt64 and tkQWord entries also contain the OrdType field (basically the compiler can now use the same function to generate them only with different type kinds)

+ added test

git-svn-id: trunk@35135 -
2016-12-16 14:22:04 +00:00
svenbarth
460f309035 * fix for Mantis #31123, applied patch by Maciej Izak
* adjusted test trtti10.pp due to renamed RecInitTable field

Original commit message:

Public interface for init table for records in TypInfo:

* Rename RecInitTable to RecInitInfo (because it is special kind of PTypeInfo for init table of record). Has more sense in practical usage.
+ New structure TRecInitData (and related PRecInitData) to handle data for (init) type info for records (aka init table)
+ New structure TInitManagedField and pointer type PInitManagedField (for init table)
+ Special helper property RecInitData to get PRecInitData for tkRecord

+ test attached

git-svn-id: trunk@35134 -
2016-12-16 13:43:12 +00:00
svenbarth
121a857af8 * fix for Mantis #31118: applied patch by Maciej Izak to fix usage of wrong variable
+ added test

git-svn-id: trunk@35133 -
2016-12-15 13:47:26 +00:00
svenbarth
12dba952f0 * integration of Part 2 patch of Mantis #30687 with a few adjustments:
- indentation in ncgrtti.pas
  - fewer ifdefs in rtti.inc
  - InitTable/Terminator field as first field to avoid padding on targets that require proper alignment and have SizeOf(Pointer) > 4

Original message by Maciej Izak:

Breaking change for rtti layout for record rtti. Init table
is always accessible from regular rtti. Rtti table contains indirect
reference to init table, additionally init table contains nil-terminator (for
rtl purposes - the only way to determine kind of info : init or rtti). Pros:

* will be possible to create more Delphi compatible code for RTTI, finally end-user can access to *real* managed fields of records (some work on TypInfo.pp is still required but is not necessary).
* important step forward for management operators (anyway this commit is not directly related to management operators)
* much more optimal memory allocation/initialization/finalization for records created/destroyed by InitializeArray/FinalizeArray, for example:

type
  TBar = record
    f1,f2,f3,f4,f5,f6,f7,f8,f9: byte;
    s: string;
  end;

previously:

  GetMem(PB, SizeOf(TBar));
  InitializeArray(PB, TypeInfo(TBar), 1); // FPC_INITIALIZE was executed 10 times

now:

  GetMem(PB, SizeOf(TBar));
  InitializeArray(PB, TypeInfo(TBar), 1); // FPC_INITIALIZE is executed just once

+ test attached

git-svn-id: trunk@35125 -
2016-12-13 23:03:11 +00:00
svenbarth
17154fedaa * move rtti unit from common directory to inc directory as the former is basically for non-Windows files
git-svn-id: trunk@35123 -
2016-12-13 22:04:32 +00:00
svenbarth
22e579cc74 * fix for Mantis #31107: disallow calling of ordinary record methods using the record's type.
git-svn-id: trunk@35113 -
2016-12-12 22:08:28 +00:00
svenbarth
5fa181b5d9 * second fix for Mantis #31033: also check for df_specialization instead of is_specialization for parameters to correctly handle nested types that aren't really true specializations themselves
+ added additional test

git-svn-id: trunk@35103 -
2016-12-10 19:47:09 +00:00
svenbarth
0c372f0beb * fix compilation of Rtti unit on PowerPC: converting a Int64 to a Boolean failed (in this case with an internal error)
+ added a test though we should probably extend tcnvint2.pp to test converting ints to different sized boolean types...

git-svn-id: trunk@35101 -
2016-12-10 19:13:07 +00:00
svenbarth
3e5f8af01d + add RTTI unit from Joost's Attribute branch
* adjust unit to work without attributes
* adjust unit to work without unit list (TRttiContext.GetTypes is disabled due to this)
+ add ShortString support (due to an intermediary test I had done in $H-)
+ add unit test from Joost's Attribute branch
* adjust unit test accordingly (no attributes, no TRttiContext.GetTypes)
+ add ShortString tests
+ add testrunner for RTL-ObjPas tests using the new simpletestrunner

git-svn-id: trunk@35096 -
2016-12-09 20:45:46 +00:00
svenbarth
933e449848 + add a simple test runner for FPCUnit (no parameters, only plain output, sets ExitCode depending on any failures/errors) that can be used with FPC's testsuite
git-svn-id: trunk@35095 -
2016-12-09 20:22:33 +00:00
svenbarth
52673d34f1 * fix for Mantis #31033: don't check for is_specialization(), but for df_specialization (this way we also get pointers or nested types that aren't by themselves real specializations)
+ added test

git-svn-id: trunk@35092 -
2016-12-09 16:22:14 +00:00
michael
7ead78e71b * Forgot to add fpfonttextmapping.pp
git-svn-id: trunk@35090 -
2016-12-09 14:24:14 +00:00
Jonas Maebe
18077d9530 * when determining the best candidates for overloaded method calls, apply
the scope penalty relative to the nearest symtable that contains one of
    the applicable overloads, rather than relative to the nearest symtable
    that simply contains a method with this name (based on patch by
    Maciej Izak, mantis #25607)

git-svn-id: trunk@35089 -
2016-12-09 13:39:42 +00:00
michael
4406ec7e68 * Forgot to add subsetter font
git-svn-id: trunk@35084 -
2016-12-09 13:22:48 +00:00
michael
b7083402cf * Fix from Graeme adding Font subset embedding and underline/strikethrough
git-svn-id: trunk@35083 -
2016-12-09 12:51:06 +00:00
svenbarth
d499163ef5 * provisional fix for Mantis #31076: fail gracefully instead of with an internal error if a generic method is declared inside a generic class or record. This will change once we support nested generics however.
* adjusted error message to reflect that we're not only dealing with generic classes
+ added test; note: it's added in webtbs, cause the test will loose its %FAIL attribute in the future

git-svn-id: trunk@35079 -
2016-12-06 22:26:53 +00:00
svenbarth
70817baf98 * since we already allow inline specializations in mode ObjFPC due to generic functions it's only consequential to also allow specializations after pointers (they are already allowed in mode Delphi).
+ added tests
* tgeneric87.pp and tgeneric88.pp are no longer considered as tests that should fail

git-svn-id: trunk@35078 -
2016-12-06 21:37:22 +00:00
Károly Balogh
eb6fe91208 amiga: proof-of-concept untested implementation for OS4/PowerPC Pascal startup code
git-svn-id: trunk@35076 -
2016-12-05 21:12:23 +00:00
Károly Balogh
b356b18675 amiga: forgot to commit the actual buildrtl.pp in the previous commit
git-svn-id: trunk@35069 -
2016-12-04 18:37:47 +00:00
Károly Balogh
788c622307 amiga: pascal startup code for 68k and buildrtl refactor
git-svn-id: trunk@35068 -
2016-12-04 18:21:24 +00:00
Károly Balogh
f3e33a9dde morphos: new pascal-written internal startup code. also refactored the rtl build process for morphos
git-svn-id: trunk@35054 -
2016-12-04 00:15:41 +00:00
svenbarth
4fb77b71ec * fix for Mantis #31029, based on the patch provided by Silvio Clécio: PArrayOfByte is not necessary and in fact the purpose of TArrayOfByte is a different one from reference counting (namely to ensure correct passing of the parameter), so renamed accordingly (plus a comment); similar change in SetDynArrayProp. Also Get-/SetPropValue in Variants unit has been adjusted to make use of Get-/SetDynArrayProp.
+ added adjusted test

git-svn-id: trunk@35025 -
2016-11-30 19:32:41 +00:00
svenbarth
d9ea6aae4d * fix for Mantis #30761: always return the symbol found in the helper instead of doing this dependant on the presence of the overload attribute; for this the collection of all suitable overloads is done in tcallcandidates instead.
+ added test

git-svn-id: trunk@35024 -
2016-11-30 17:52:25 +00:00
svenbarth
6ba85c2a70 * second fix for Mantis #30626: also search in parent classes for a suitable pre-existing specialization
+ added test

git-svn-id: trunk@35014 -
2016-11-29 17:04:07 +00:00
svenbarth
ebfeb5b62a * fix for Mantis #30830: also remove unregistered specializations from the procsym's deflist when they're removed to avoid an access to freed data
+ added tests (adjusted original test plus a mode Delphi variant)

git-svn-id: trunk@35012 -
2016-11-29 14:12:02 +00:00
svenbarth
bfaa26d16a Commit r35010 also fixed Mantis #30524.
+ added tests

git-svn-id: trunk@35011 -
2016-11-28 18:37:20 +00:00
svenbarth
a535d54bcb * fix for Mantis #30939: Rework generation of the generic name to be less relying on the type hierarchy as a specialization inside the parameter declaration would want to have the full name of the procdef including its parameters, but those are still parsed at that stage (the pretty name is still a topic onto itself however...)
+ added tests (original test was only mode fpc, test for mode delphi is added as well)

git-svn-id: trunk@35010 -
2016-11-28 18:16:49 +00:00
svenbarth
3f77ce3b12 * leave parse_proc_head() (with some error recovery) if the interface could not be found instead of running straight into an access violation
+ added test

git-svn-id: trunk@35007 -
2016-11-28 17:54:48 +00:00
florian
7bb8873c83 * do not throw an internal error if in case of an previous error the parameter class of an errordef is requested, resolves #31016
git-svn-id: trunk@34984 -
2016-11-27 13:16:12 +00:00
florian
48fbd569fd * support for the CDQE instruction, by Emelyanov Roman, resolves #30978
git-svn-id: trunk@34982 -
2016-11-27 12:42:22 +00:00
florian
da7e1b3769 + tavraddrnode.pass_generate_code, avoiding unneeded moves
git-svn-id: trunk@34973 -
2016-11-26 19:31:33 +00:00
sergei
133fcb5ab2 * Fixed VMOVQ instruction encoding, now assembles correctly also in 32-bit code.
+ Test

git-svn-id: trunk@34949 -
2016-11-21 13:59:44 +00:00
Jonas Maebe
48ef33a8b3 * fixed interprocedural gotos for llvm
o ensure that the label's local "jumpbuf" variable gets moved to the
     parentfpstruct soon enough
   o don't generate global symbols for interprocedural labels: they're not
     necessary if they are only used via setjmp/longjmp (all references are
     local in that case), and if they are referenced via an assembler block
     then we'll have to handle them by passing a blockaddress() expression
     as parameter to that assembler block (which does not require a global
     symbol, but which is not yet implemented)

git-svn-id: trunk@34946 -
2016-11-21 07:39:13 +00:00
sergei
ebe134febc * Fixed memory reference size for MOVSS instruction, Mantis #29954.
git-svn-id: trunk@34943 -
2016-11-21 03:31:25 +00:00
Jonas Maebe
a89a4d905f + test for already fixed mantis #30948
git-svn-id: trunk@34928 -
2016-11-20 11:44:25 +00:00
florian
10132bfafa * removed accidently committed file
git-svn-id: trunk@34927 -
2016-11-20 11:26:48 +00:00
sergei
edf943a4f6 * Changed memory operand size for VMOVSS instruction to 32 bits, Mantis #29957.
git-svn-id: trunk@34918 -
2016-11-18 23:37:01 +00:00
florian
56252d59f0 + support for the PREFETCHTW1 instruction based on a patch by Emelyanov Roman, resolves #30933
git-svn-id: trunk@34917 -
2016-11-18 20:19:39 +00:00
svenbarth
63b0024e4c * fix for Mantis #30626: unset current_procinfo so that further specializations don't use a symtable to specialize themselves in that they shouldn't use (cause current_procinfo takes precedence)
git-svn-id: trunk@34916 -
2016-11-18 16:17:09 +00:00
svenbarth
0e7a9ad375 * partial fix for Mantis #30831 (partial, because no exception has been encountered yet): when checking whether the left node of a vmtaddrnode is a generic, don't rely on df_generic, but instead use is_generic which checks for a true generic (the other will also be true if it's merely a structured type declared (or specialized) inside another generic)
+ added test

git-svn-id: trunk@34915 -
2016-11-18 14:43:45 +00:00
svenbarth
fc5ce63134 * fix for Mantis #30832: instead of checking a procdef's struct for df_generic check the procdef itself, this way global generic methods or generic methods that are part of non-generic classes or records are caught as well.
+ added test

git-svn-id: trunk@34914 -
2016-11-18 14:01:03 +00:00
florian
67570a6262 + patch to support assigning class procedures to procedure variables by Ondrej Pokorny, resolves #30936
+ additional tests

git-svn-id: trunk@34909 -
2016-11-17 19:40:42 +00:00
florian
3f072b3e29 * workaround for issue #30348, FPC allowes now 65535 sections in coff object files, but as the section index is normally signed, this is only a dirty workaround
git-svn-id: trunk@34904 -
2016-11-15 22:06:00 +00:00
sergei
b4904deea8 * MIPS: Fixed code generation for PIC global symbols with large offset, resolves #30552.
git-svn-id: trunk@34902 -
2016-11-15 20:04:27 +00:00
florian
6d6a45c034 * add/sub nodes with nf_internal set should not do overflow checking, resolves #30889
* do not convert succ/pred into add/sub nodes if nf_internal is set

git-svn-id: trunk@34896 -
2016-11-13 21:18:39 +00:00
Jonas Maebe
b28221349e - removed aoptcs unit and (dummy) units that used it
o remenants of a long abandoned attempt at adding a generic
     assembler CSE optimiser

git-svn-id: trunk@34886 -
2016-11-13 16:06:14 +00:00
florian
9bff3ac624 * copy also pushedparasize when copying call nodes, resolves #30923
git-svn-id: trunk@34885 -
2016-11-13 14:46:55 +00:00
michael
5e6026b020 * Added KeepConnection by Silvio Clecio (Bug ID 30788)
git-svn-id: trunk@34875 -
2016-11-11 12:28:44 +00:00
michael
5af24e94ae * Patch from wp to add BOM detection to CSV reader (bug ID 30897)
git-svn-id: trunk@34871 -
2016-11-11 10:03:14 +00:00
Tomas Hajny
ff02b2dfb5 + added test based on bug #24504
git-svn-id: trunk@34850 -
2016-11-08 22:24:22 +00:00
marcus
f8a7708741 AROS: startupcode for arm-aros
git-svn-id: trunk@34820 -
2016-11-06 17:32:40 +00:00
florian
a27b07b342 + more restrictions on pred/succ to dec/inc optimization
o check if the argument can be used as a call by reference parameter
  o check if the argument has no side-effects
+ tests

git-svn-id: trunk@34816 -
2016-11-06 16:36:02 +00:00
pierre
89c1b68b14 * Delete regvars unit.
This unit was empty unless OLDREGVARS macro was set,
    but this does not compile and no change has been made since 2011.

  * Remove regvars from all _USES clauses.

git-svn-id: trunk@34808 -
2016-11-06 14:01:39 +00:00
florian
96858dd64d + additional tests which ensure that constant propagation is off
as the compiler optimizes the original tests too much with constant propagation
  to keep them useful

git-svn-id: trunk@34796 -
2016-11-05 23:05:57 +00:00
florian
8bbd2e4030 + test for issue #27744
git-svn-id: trunk@34790 -
2016-11-05 23:05:46 +00:00
marcus
31fe583ce2 morphunits: commodities library unit
git-svn-id: trunk@34769 -
2016-10-30 16:22:36 +00:00
marcus
3463e418f9 arosunits: Commodities library unit
git-svn-id: trunk@34768 -
2016-10-28 20:44:28 +00:00
florian
9c81e90e08 + extension to iso mode: reset/rewrite can take a file name as a second parameter
git-svn-id: trunk@34726 -
2016-10-16 07:55:08 +00:00
florian
ec54cb2a7a - unit not used anymore
git-svn-id: trunk@34723 -
2016-10-15 17:58:38 +00:00
svenbarth
d4e573c1e3 * fix for Mantis #27349: nested classes might also reside inside records
+ added test

git-svn-id: trunk@34714 -
2016-10-13 20:40:47 +00:00
svenbarth
254be82c43 * revert r34712: the behavior with the class constructors is indeed Delphi compatible. However only one class constructor/destructor per class is allowed no matter how it's named.
git-svn-id: trunk@34713 -
2016-10-13 20:11:35 +00:00
svenbarth
4e5ed5b0e2 Fix for Mantis #30729: don't allow other names for class constructors or destructors than Create and Destroy respectively.
+ added tests

git-svn-id: trunk@34712 -
2016-10-13 19:24:07 +00:00
Jonas Maebe
5efb32285a * fixed alignment for interface RTTI (patch by Alfred, mantis #30182)
git-svn-id: trunk@34695 -
2016-10-09 12:34:01 +00:00
Károly Balogh
0af22b9177 rtl-objpas: clean up all the identical varutils variants and made all platforms except Windows to use the common one
git-svn-id: trunk@34686 -
2016-10-09 06:37:54 +00:00
Károly Balogh
f6222e44ef rtl-objpas: remove system-specific varutils for Amiga-like systems which were in fact identical, added a common implementation and enable the package for atari as well
git-svn-id: trunk@34673 -
2016-10-08 18:00:20 +00:00
Károly Balogh
71a4087bc5 atari: new file for xbios defines
git-svn-id: trunk@34661 -
2016-10-08 13:24:40 +00:00
michael
95eb4ed2eb * Added jsminifier unit
git-svn-id: trunk@34652 -
2016-10-08 08:14:42 +00:00
Jonas Maebe
233622157c * don't attempt to load the VMT of a niln when taking the address of a
class method (mantis #30706)

git-svn-id: trunk@34641 -
2016-10-07 16:41:32 +00:00
joost
174163ad81 * Added ability to add the location of directories containing packages, to
make all packages in those directories available to fppkg.

git-svn-id: trunk@34625 -
2016-10-04 19:46:35 +00:00
Károly Balogh
7bf2055ef9 atari: added an include file containing GEMDOS calls and other defines, to be used in the RTL
git-svn-id: trunk@34609 -
2016-10-03 23:12:05 +00:00
Jonas Maebe
a3afefc6cb + test for mantis #27522 (fixed in r29811)
git-svn-id: trunk@34601 -
2016-10-02 21:51:31 +00:00
Jonas Maebe
868370d727 + InterlockedCompareExchangePointer() alias for InterlockedCompareExchange(pointer)
(mantis #29964)

git-svn-id: trunk@34599 -
2016-10-02 12:57:07 +00:00
Jonas Maebe
94d7a7274b * compare floating point default parameter values bytewise instead of as
floating point values, so that NaNs can also be compared (mantis #30299)

git-svn-id: trunk@34597 -
2016-10-02 12:56:49 +00:00
Jonas Maebe
de60bfab9c * make the string data of pchar constants read-only (mantis #30666)
git-svn-id: trunk@34594 -
2016-10-02 12:56:40 +00:00
Károly Balogh
bfe904fb16 atari: dummy sysutils unit. to be implemented.
git-svn-id: trunk@34590 -
2016-10-02 01:58:32 +00:00
Károly Balogh
175cc52e8d atari: added classes unit and a dummy threading implementation
git-svn-id: trunk@34589 -
2016-10-02 01:33:26 +00:00
Károly Balogh
39f043c7fd atari: removed the ancient readme, stating there's no Makefile, as there's one now apparently
git-svn-id: trunk@34586 -
2016-10-01 16:39:48 +00:00
svenbarth
246de84ef3 * ensure that a finalization section is parsed before the generation of specializations as otherwise specializations in such sections would result in unresolved forward declarations
git-svn-id: trunk@34582 -
2016-09-30 15:41:35 +00:00
marcus
f2b60d07d3 MorphOS: added locale library unit
git-svn-id: trunk@34539 -
2016-09-17 14:51:38 +00:00
svenbarth
386b7ac154 * fix for Mantis #28753: don't return generic dummys from single_type(); ensures that parameters correctly evaluate to error defs should generic dummies be used
git-svn-id: trunk@34534 -
2016-09-16 20:40:19 +00:00
svenbarth
ce18b10c81 * fix for Mantis #30530: when the global/static symtable is reached defowner is Nil, so respect that in the loop condition
+ added test

git-svn-id: trunk@34532 -
2016-09-16 15:39:03 +00:00
svenbarth
50f2aab0ef * fix for Mantis #22192: handle the case that a specialization has the same name as the generic it's based on as in that case the typedef of the symbol is an errordef; therefor we need to use the symbol's real name
+ added test

git-svn-id: trunk@34530 -
2016-09-16 15:13:27 +00:00
svenbarth
2ea587f746 * fix for Mantis #30537: also allow the parasymtable as a parent symtable when generating the mangled name as that is needed for generic functions
+ added test

git-svn-id: trunk@34527 -
2016-09-16 14:10:53 +00:00
svenbarth
0500c678e5 * fix for Mantis #30534: don't consider all types with generic constraints as equal, but at least ensure that they have the same basetype (Note: this still needs a bit more improvement)
+ added test

git-svn-id: trunk@34526 -
2016-09-16 13:24:28 +00:00
michael
a55c176bef * Patch from Mattias Gaertner: Record support, detect duplicate identifiers, bug fixes
git-svn-id: trunk@34520 -
2016-09-13 08:01:37 +00:00
marcus
97a4c7b9f7 AROS: added locale library unit
git-svn-id: trunk@34519 -
2016-09-12 20:53:58 +00:00
michael
7fec0f92af * Fix bug ID #30469 (allow quoting to start inside values)
git-svn-id: trunk@34509 -
2016-09-11 12:24:57 +00:00
michael
8c63be40f9 * Fix bug ID #24983: additional possibilities for boolean reading/writing
git-svn-id: trunk@34506 -
2016-09-11 08:04:36 +00:00
joost
79d2d05c58 * Replaced the local- and global-repositories with a list of repositories.
A repository can contain installed or packages available for installation.
   The repositories have a helper-class that contains information about
   where the packages are installed and such. Things like installing a 
   package from the current-directory are done using temporary 'fake'
   repositories. The TpkgFPpkg-class keeps track of all repositories
   and packages.

git-svn-id: trunk@34503 -
2016-09-10 21:15:26 +00:00
michael
29ed02d228 * utility unit to add 48-bit real math, bug ID #30460
git-svn-id: trunk@34501 -
2016-09-10 19:48:52 +00:00
michael
25d3ee2ce2 * New version of maskutils by Bart Broersma (+testcase), bug ID #30020
git-svn-id: trunk@34498 -
2016-09-10 19:26:28 +00:00
michael
e3076da0a1 * Testcase for bug #30310
git-svn-id: trunk@34488 -
2016-09-10 18:07:07 +00:00
michael
3b3d5ab8be * Undid last commit
git-svn-id: trunk@34479 -
2016-09-10 12:12:39 +00:00
michael
4fa2ec7740 * Patch from Karl-Michael Schindler to prepend TMP to temp filename../inc/iso7185.pp
git-svn-id: trunk@34478 -
2016-09-10 12:04:24 +00:00
michael
abc33b81cc * try to emulate backwards seek. Patch from p_daniel (bug ID 30428)
git-svn-id: trunk@34477 -
2016-09-10 11:52:55 +00:00
svenbarth
26a2ddd3d6 + extend Delete() intrinsics with Delphi compatible support for dynamic arrays. Also fixes Mantis #30306
git-svn-id: trunk@34455 -
2016-09-08 17:15:10 +00:00
Jonas Maebe
1e506ce1d5 * call beforedestruction if an exception happens in afterconstruction
(mantis #30570)

git-svn-id: trunk@34453 -
2016-09-08 14:18:59 +00:00
Jonas Maebe
5ffd06392d * don't optimize "x:=f(x)" whereby the function result of f() is passed
by reference in case x is a temp (mantis #30572)

git-svn-id: trunk@34445 -
2016-09-07 19:37:35 +00:00
Jonas Maebe
2d051f89f7 * don't increase refcounts for variants assigned to (ti_)const nodes, fixes
memory leak after r34288 and should have been done as part of r34287
    (mantis #30546)

git-svn-id: trunk@34440 -
2016-09-06 21:28:34 +00:00
Károly Balogh
464ecab542 huge syscall support refactor for Amiga-likes. removed large chunks of ancient duplicated code, and in general tried to make the entire thing more maintainable and cleaner. also added support for AROS EAXBase syscall convention
git-svn-id: trunk@34416 -
2016-09-03 07:57:23 +00:00
joost
9487b46b8a * Added new structure to hold the global options. The goal is to get rid
of all globals and to contain all fppkg-related stuff into this
   structure. So it will be easier to embed fppkg into other applications.

git-svn-id: trunk@34400 -
2016-08-30 20:09:34 +00:00
Károly Balogh
5dc55b362d ami-extra: moved amsgbox here from amunits, and therefore made it available across all Amiga-likes
git-svn-id: trunk@34398 -
2016-08-30 12:55:43 +00:00
Jonas Maebe
f64556c125 * when taking the address of a class method via an instance, create a procvar
with the VMT of the instance as self instead of the self instance pointer
    (mantis #29491)

git-svn-id: trunk@34395 -
2016-08-30 07:25:16 +00:00
svenbarth
aaceb5518f * fix Mantis #30494 by applying patch from Maciej Izak
+ added test

git-svn-id: trunk@34381 -
2016-08-26 14:23:23 +00:00
Jonas Maebe
3669419bb3 * fixed tcasenode.simplify() in case we have to pass via a "less" branch of
of a tcaselabel that also has a valid "greater" branch to arrive at the
    correct entry (mantis #30522)

git-svn-id: trunk@34379 -
2016-08-26 13:02:10 +00:00
michael
0ab6477081 * Patch from Mattias Gaertner:
pasresolver.pp: new unit, implements TPasResolver, already supports simple
  types, vars, const, arguments, some expressions, calls and used units.

  tcresolver: testing TPasResolver, 

  pastree: fixed some Free with Release calls, added comments, added ForEachCall methods.

  pscanner: added option po_resolvestandardtypes. Making built-in types configurable.

  pparser: added FinishScope, fixed some Free calls with Release, check proc default values, fixed some typos

  Updated tests.

  fppas2js: property UseLowerCase to choose between lowercase and declaration case (default true), 
  using TResolver data, added msg strings, improved error handling, added converter contexts, 
  function results, local vars, unit vars

git-svn-id: trunk@34357 -
2016-08-21 12:04:36 +00:00
yury
c2ba68df44 * android: Added functions GetSystemProperty() and SystemApiLevel().
git-svn-id: trunk@34346 -
2016-08-19 14:50:18 +00:00
svenbarth
8b853571c6 * don't generate a warning if a "generic" token follows while parsing procedure directives (let's hope we'll never have to add a "generic" directive :/ )
+ added test

git-svn-id: trunk@34343 -
2016-08-19 14:07:36 +00:00
yury
2630f3c498 * android: Properly initialize time zone information.
git-svn-id: trunk@34332 -
2016-08-18 14:03:34 +00:00
svenbarth
e0fd432c9d * use a Pascal tool instead of a Makefile to generate the list of test files; this way the testsuite works again with older versions of make that don't support $(info ...) (e.g. 3.80 and earlier)
git-svn-id: trunk@34310 -
2016-08-14 11:25:10 +00:00
svenbarth
2808be3e20 + add and use sysinit unit for Win64 (only one since we don't support cygwin and gprof there)
* switch Win64 to indirect entry information

git-svn-id: trunk@34307 -
2016-08-13 19:10:27 +00:00
Jonas Maebe
051317e82e * load the function result from the parentfpstruct to its original location
in exit nodes, because the wrapping code added in
    tnodeutils.wrap_proc_body() gets inserted before the exit label to which
    the exit node jumps

git-svn-id: trunk@34305 -
2016-08-13 14:47:50 +00:00
Jonas Maebe
20cbdf75ea + test for mantis #24189 (already works in trunk, still broken in 3.0)
git-svn-id: trunk@34290 -
2016-08-12 13:40:19 +00:00
Jonas Maebe
8e0ee6599c * store parameters to inline routines that are already in a temp into a new
temp if the original temp was marked as ti_const, and the new parameter
    gets modified (mantis #30015)

git-svn-id: trunk@34289 -
2016-08-12 13:35:56 +00:00
Jonas Maebe
b17f90d183 * test for mantis #26402 (already fixed in 3.1.1, still broken in 3.0)
git-svn-id: trunk@34282 -
2016-08-12 13:35:37 +00:00
Jonas Maebe
c752050728 * don't print "parameter not used" hints for abstract methods (mantis #30431)
git-svn-id: trunk@34281 -
2016-08-12 13:35:34 +00:00
Jonas Maebe
de97285393 * fixed conformsToProtocol() declaration (the protocol is not a changeable
parameter, and it's already declared as a pointer type)

git-svn-id: trunk@34246 -
2016-08-03 14:35:32 +00:00
michael
834881179a * dbus component added
git-svn-id: trunk@34239 -
2016-07-31 10:29:29 +00:00
svenbarth
3596809ab4 Fix for Mantis #27206. *Finally* add Maciej Izak's contribution of the Delphi compatible generic collections.
Two small changes were done:
* Generics.Defaults.pas does not require the Contnrs unit (it wasn't used anyway and thus the units can be added as rtl-generics instead of fcl-generics)
* the example files were changed to lowercase filenames 

git-svn-id: trunk@34229 -
2016-07-29 15:13:59 +00:00
yury
980c4741ac * Fixed conversion from PWideChar to ansistring.
+ test. 

git-svn-id: trunk@34219 -
2016-07-29 09:43:05 +00:00
olivier
49132b57dd - remove sysheap.inc override from the Haiku port. mmap is now fully supported under Haiku for a long time. sbrk is also under work and the current implementation limit the available memory.
git-svn-id: trunk@34200 -
2016-07-24 18:47:33 +00:00
Jeppe Johansen
6a1c1e4f29 Added support for NRF52832 controllers.
git-svn-id: trunk@34170 -
2016-07-22 10:01:10 +00:00
Jonas Maebe
a0efde8167 * automatically generate necessary indirect symbols when a new assembler
symbol is defined
   o removed all places where AB_INDIRECT symbols were explicitly generated
   o only generate AB_INDIRECT symbols for AT_DATA on systems_indirect_var_imports
   o for some symbols an indirect symbol is always required (because they are
     dereferenced by code in RTL units) -> use new AT_DATA_FORCEINDIRECT type

git-svn-id: trunk@34165 -
2016-07-20 20:53:03 +00:00
Jonas Maebe
c0ff55e95a * changed the abstract method wrapper generation from thlcgobj to synthetic
methods. Implementing a fully functional g_external_wrapper() for llvm is
    quite hard, and the regular wrapper method that calls FPC_ABSTRACTERROR can
    in principle be optimized to a plain jump by tail call optimisation on other
    targets (to the extent that this matters, because most of them will be
    smartlinked away, and the ones that are executed will trigger an exception)
   o this means that the synthetic method generation needs to be run for all
     objectdefs on all platforms now, rather than only for Java classes

git-svn-id: trunk@34127 -
2016-07-14 15:24:13 +00:00
michael
9115dc2521 * OData and Office365 REST API support
git-svn-id: trunk@34097 -
2016-07-11 14:39:59 +00:00
svenbarth
54b6cacf36 Fix for Mantis #30357.
Reset tstoredsymtable.init_final_check_done when a symbol is added or removed as otherwise property getters in a record *before* any managed field would trigger it, thus leading to the record being considered as "non-managed".

git-svn-id: trunk@34088 -
2016-07-08 18:20:47 +00:00
Károly Balogh
0e54f616b5 merged i386 int64 mod helper fix by Max Nazhalov (Mantis 30240)
git-svn-id: trunk@34059 -
2016-07-03 21:20:07 +00:00
Jonas Maebe
db77aad2cc * support LOC_MMREGISTER for paralocs when loading 128 bit function results
into integer registers (a record that consists of 4 32 bit floats is
    returned in 2 xmm registers on x86_64) (mantis #30329)

git-svn-id: trunk@34058 -
2016-07-03 21:18:23 +00:00
joost
48f8199659 * Revert r34055, which was automatically committed while testing an automated repository-system
git-svn-id: trunk@34056 -
2016-07-03 19:06:35 +00:00
joost
57d1cd5668 'Release of package googleapi version 3.1.1'
git-svn-id: trunk@34055 -
2016-07-03 18:40:39 +00:00
Jonas Maebe
8df1d1f9b8 * fixed compilation of tw15391 with range checking enabled after r34034:
support maybe_call_procvar() on internal block nodes, which return
    their result via the last statement

git-svn-id: trunk@34051 -
2016-07-02 21:09:59 +00:00
michael
ffe626fe6e * Patch from Graeme Geldenhuys to remove unneeded tools
git-svn-id: trunk@34037 -
2016-06-30 17:47:26 +00:00
Jonas Maebe
ec5dea1092 * don't perform the "/ const" to "* (1/const)" transformation for comp-typed
expressions, since comp cannot represent fractions (bug reported at
    http://lists.freepascal.org/pipermail/fpc-pascal/2016-June/048234.html )

git-svn-id: trunk@34035 -
2016-06-30 15:33:51 +00:00
Jonas Maebe
996e325175 * converted range checking for open arrays/array of const from the code
generator to the typecheck pass, so that it also works for platforms
    that use the parentfpstruct way to handle accesses to nested frames
    in case the array has been migrated to such a parentfpstruct
   o additionally, the number of comparisons for such range checks
     has been reduced from 3 (for signed indices) or 2 (for unsigned
     indices) to 1 in all cases
   o the range checking code is disabled for the JVM target, as the
     JVM automatically range checks all array accesses itself anyway

git-svn-id: trunk@34034 -
2016-06-30 15:33:47 +00:00
pierre
40292a476f Expicitly disable range check on old test and add new test with and changes
git-svn-id: trunk@34012 -
2016-06-21 08:14:43 +00:00
pierre
df7e562d94 Add explicit $R- or $Q- to avoid different results if -Criot option is used
git-svn-id: trunk@34010 -
2016-06-20 15:55:10 +00:00
svenbarth
266eccde9f Merge revision(s) 32484 from branches/svenbarth/packages
Move PascalMain external from the si_*.inc files to a new include file si_impl.inc that's included in the implementation sections of the si_*.pp units

git-svn-id: trunk@33970 -
2016-06-12 16:49:56 +00:00
Jonas Maebe
b8ed0fac5d * give an error when trying to get the address of an element of a dynamic
string in a typed constant, like Delphi (instead of generating a bogus
    address)

git-svn-id: trunk@33958 -
2016-06-12 09:20:57 +00:00
svenbarth
f406867100 Merged revision(s) 31929-31931,32547 from branches/svenbarth/packages:
Switch Mac OS X to indirect entry information.

compiler/systems/t_bsd.pas, TLinkerBSD:
  + implement InitSysInitUnitName
compiler/system.pas:
  * systems_internal_sysinit: add Darwin systems
compiler/hlcgobj.pas, thlcgobj:
  * gen_proc_symbol_end: for Darwin systems don't directly call PascalMain for libraries, but FPC_LIBMAIN instead
rtl/darwin:
  + add sysinit.pas unit which contains the executable and library entry points for Darwin
rtl/darwin/Makefile.fpc:
  * add sysinit unit
rtl/bsd/sysosh.inc:
  + add a Darwin specific TPlatformEntryInformation (could probably be used for all Unix systems...)
rtl/bsd/system.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin systems once we're no longer bootstrapping with 2.6.x
  + add EntryInformation variable (this could maybe moved to system.inc...)
  + add new procedure SysEntry that is called from the entrypoint and which sets up necessary information required by other parts of the RTL
  * the old FPC_SYSTEMMAIN is still in place for bootstrapping
rtl/inc/systemh.inc, TEntryInformation:
  * PascalMain is cdecl on non-Windows systems (ToDo: really?)
rtl/inc/system.inc:
  * initialstklen is provided by the indirect entry information, so no external here
........
Fix bootstrapping.

rtl/darwin/sysinit.pas:
  * enable the code only when no longer bootstrapping with 2.6.x
........
Fix bootstrapping.

rtl/objpas/objpas.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin only while not bootstrapping with 2.6.x
........
rtl/darwin/sysinit.pas:
  * reference PASCALMAIN correctly (I wonder how this even worked previously :/ )

git-svn-id: trunk@33949 -
2016-06-11 20:29:51 +00:00
Jonas Maebe
0ed6c3d80e * also use the last floating point parameter register on AArch64 in case of
a HFA type (which in practice also applies to plain floating point types)
    (patch by Alfred, mantis #30207)

git-svn-id: trunk@33922 -
2016-06-05 20:18:24 +00:00
florian
49f63d67b2 * correctly check left.location instead of left.expectloc when generating
code for not nodes, resolves #30208

git-svn-id: trunk@33906 -
2016-06-04 15:54:17 +00:00
svenbarth
aaff6d0b97 Allow Delete() and Insert() to be used with generic types as arguments.
+ added test

git-svn-id: trunk@33897 -
2016-06-03 21:45:23 +00:00
svenbarth
9fb2a8bba9 + added simple test to check whether Delete() and Insert() still work correctly (though a mistake there would probably have broken the cycling totally anyway...)
git-svn-id: trunk@33896 -
2016-06-03 21:38:29 +00:00
svenbarth
8c96fbed8f Fix for Mantis #28832
ninl.pas, tinlinenode:
  * pass_typecheck: let code pass on to simplify() for undefineddefs in Low() and High()
  * simplify: create a constant 0 as fallback

+ added test

git-svn-id: trunk@33884 -
2016-06-03 12:14:30 +00:00
svenbarth
04adcf2a12 Fix for Mantis #30179 and #30203.
pexpr.pas:
  * handle_factor_typenode: rework code for records and objects so that Delphi style specializations are handled as well
  * sub_expr.generate_inline_specialization: also do a typecheck pass on pload to be sure that we have a resultdef

+ added tests

git-svn-id: trunk@33876 -
2016-06-01 20:06:40 +00:00
svenbarth
c3c345d569 Fix for Mantis #30202.
pexpr.pas, sub_expr.generate_inline_specialization:
  * do_member_read() needs to happen independently of whether we're calling a method of the same object (was incorrectly copypasted code... :/ )

+ added test

git-svn-id: trunk@33875 -
2016-06-01 20:03:59 +00:00
Károly Balogh
a756609a27 m68k: added a simple VASM writer frontend for the GNU AS writer (as VASM has a compatiblity mode)
git-svn-id: trunk@33847 -
2016-05-29 15:52:43 +00:00
svenbarth
f27ce0b159 Rework the way the method bodies for specializations are generated: instead of walking the global and local symboltable all pending specializations are kept in a list of the current module which is (for now) walked at the end of a unit/program to generate the method bodies as before.
fmodule.pas, tmodule:
  + new list pendingspecializations which keeps track of all pending specializations of the current module
psub.pas:
  * move generate_specialization_procs and related routines to pgenutil
  + new procedure read_proc_body to read a routine's body, cause generate_specialization_procs needs it (unlike the already existing overload in the implementation section, this one can only handle bodies of non-nested routines) 
pgenutil.pas:
  * generate_specialization_phase2: add the newly specialized generic to the current module's pending specializations
  * generate_specialization_procs: reworked so that it uses the new pendingspecializations field instead of walking the global and local symboltable of the current unit
pmodules.pas:
  + add pgenutil to uses due to the moved generate_specialization_procs

+ added test

git-svn-id: trunk@33826 -
2016-05-26 18:56:16 +00:00
michael
300db70983 * Updated from latest service descriptions
git-svn-id: trunk@33777 -
2016-05-24 08:35:58 +00:00
florian
57f93ed40d * correctly generate accesses to jump tables if it contains negative entries, resolves issue #30119
git-svn-id: trunk@33760 -
2016-05-22 21:02:49 +00:00
Károly Balogh
963c4aa1f8 * fixed the sign handling of i386 fpc_div_int64 helper (Mantis 30166)
git-svn-id: trunk@33753 -
2016-05-22 16:57:30 +00:00
nickysn
bffe9480f4 + added the winapi functions, structures and constants for raw keyboard and mouse input
git-svn-id: trunk@33746 -
2016-05-22 01:59:27 +00:00
svenbarth
8927b8f6b1 * use the dummy DOS unit from the Embedded target so that we can use it for the ExtPas unit
git-svn-id: trunk@33711 -
2016-05-20 13:17:46 +00:00
Jonas Maebe
f1dad33217 * file forgotten to commit in r33708
git-svn-id: trunk@33710 -
2016-05-20 07:09:45 +00:00
Károly Balogh
25c34aedc2 m68k: implemented tcpucasenode.genlinearlist. 68k doesn't need cmp after sub, as sub sets the flags as expected. results in simpler, faster and more compact code
git-svn-id: trunk@33709 -
2016-05-19 21:33:45 +00:00
michael
5e3b22ab15 * Patch to Split AdvancedIPC and AdvancedSingleInstance, by Luiz Americo (Bug ID 30141)
git-svn-id: trunk@33699 -
2016-05-16 16:25:50 +00:00
michael
5f8fd810b8 * Test programs for crashing IPC server
git-svn-id: trunk@33698 -
2016-05-16 16:22:39 +00:00
michael
a5d38c7ba6 * Added TStringBuilder
git-svn-id: trunk@33695 -
2016-05-16 15:23:40 +00:00
marco
dd2aae023e * delete win9xwsmanager, conform bugreport #29108
git-svn-id: trunk@33687 -
2016-05-13 18:52:02 +00:00
marcus
a414a8bded os4units: support for Cybergraphics gfx
git-svn-id: trunk@33659 -
2016-05-06 19:07:14 +00:00
marcus
b6f73bf1cf os4units: support for Picasso96 gfx
git-svn-id: trunk@33658 -
2016-05-06 16:33:56 +00:00
marcus
acd7b1f128 AmigaOS4: Library unit for icon.library part 2
git-svn-id: trunk@33644 -
2016-05-03 20:17:50 +00:00
Jonas Maebe
14bab6c85d * fixed ppc jump table generation in case a jump table has cases for the
lowest and highest element of the type of the case expression, and the
    lowest element <> 0 (mantis #29906)

git-svn-id: trunk@33630 -
2016-05-03 09:00:52 +00:00
nickysn
a1621bd01c + XInput2.h header translation
git-svn-id: trunk@33625 -
2016-05-02 23:38:16 +00:00
nickysn
d06fb061db + added unit xfixes - header translation of X11/extensions/Xfixes.h
git-svn-id: trunk@33624 -
2016-05-02 21:32:27 +00:00
marcus
88a7915fb5 AmigaOS4: Added library units for asl, diskfont and workbench
git-svn-id: trunk@33623 -
2016-05-02 19:30:28 +00:00
nickysn
521790367d + new unit xge - header translation of X11/extensions/Xge.h
git-svn-id: trunk@33621 -
2016-05-02 17:25:20 +00:00
nickysn
5fa75f6037 + added unit xinput - a header translation of X11/extensions/XInput.h
git-svn-id: trunk@33620 -
2016-05-02 16:47:27 +00:00
nickysn
03dcc0f9ff + added header translation of X11/extensions/XI2.h
git-svn-id: trunk@33608 -
2016-05-01 23:53:18 +00:00
Károly Balogh
8d4e07c262 amunits: removed two Makefiles, which weren't actually in use for a good while
git-svn-id: trunk@33607 -
2016-05-01 22:46:26 +00:00
Károly Balogh
9e10e2fab4 ami-extra: moved pcq unit here from amunits/utilunits, so it's compiled for all Amiga-like platforms
git-svn-id: trunk@33606 -
2016-05-01 22:42:20 +00:00
michael
ad8e20efb7 * Moved hpack to fcl-web
git-svn-id: trunk@33602 -
2016-05-01 18:03:18 +00:00
Jonas Maebe
2bbab60c92 * when simplifying a constant string concatenation that gets assigned to a
rawbytestring, ensure the resulting constant string does not get CP_NONE
    as codepage, but the default system code page (mantis #30082)

git-svn-id: trunk@33597 -
2016-05-01 13:16:02 +00:00
Jonas Maebe
130d9fee91 * don't take the address of element 0 of a dynamic array in
tcallparanode.copy_value_by_ref_para() if the array is empty
    (mantis #30007)

git-svn-id: trunk@33595 -
2016-05-01 12:35:09 +00:00
florian
bd54a11f1c + TX86AsmOptimizer.OptPass1VMOVAP for i386 and x86-64
+ new unit aoptutils which helpers for the assembler optimizer

git-svn-id: trunk@33587 -
2016-05-01 09:37:21 +00:00
marcus
d9139219a9 os4units: mui added, DoMethod, DoSuperMethod and so on added.
git-svn-id: trunk@33585 -
2016-04-30 21:40:04 +00:00
marcus
77e47d21bb os4units: added iffparse, keymap, clipboard, graphics, intuition, activated some packages
git-svn-id: trunk@33581 -
2016-04-30 13:39:08 +00:00
michael
87be61c807 * Added HPACK implementation by José Mejuto (bug ID 30058)
git-svn-id: trunk@33579 -
2016-04-30 08:29:26 +00:00
michael
ecde605017 * Moved expression parser test to proper location, patch by Graeme Geldenhuys (bug ID 30037)
git-svn-id: trunk@33578 -
2016-04-30 07:53:36 +00:00
Jonas Maebe
44682f9f4d * ensure that if we create a temp for the funcretnode in a call node,
the funcretnode field keeps a reference to this temp even after we
    assign it to the call-by-reference return parameter if it is deleted
    by changing it into a normal temp (after which it will be freed when
    the result of the call node is used), because in that case getcopy
    for the callnode must copy this reference after copying the
    tempdeletenode in order to reset tempinfo^.hookoncopy (mantis #29891)

git-svn-id: trunk@33569 -
2016-04-28 20:33:12 +00:00
marcus
6e9e508091 os4units: inputevents and library unit for layer.library
git-svn-id: trunk@33560 -
2016-04-26 17:46:22 +00:00
marcus
d23ee52001 os4units: library unit for graphics.library
git-svn-id: trunk@33555 -
2016-04-25 21:27:30 +00:00
marcus
44a544d0f5 AmigaOS4: library units for utility.library, timer.device and dos.library
git-svn-id: trunk@33552 -
2016-04-24 16:30:36 +00:00
marcus
31b6e2df9b AmigaOS4: initial package checkin with exec.library unit
git-svn-id: trunk@33549 -
2016-04-23 14:55:20 +00:00
svenbarth
d07b49270f Fix for Mantis #30030.
pgenutil.pas:
  * parse_generic_specialization_types_internal: ignore the parasymtable of procvars (as before the addition of generic routines) and instead use the type's hierarchy name
  * generate_specialization_phase2: specialize types of procvars into the parameter symtable as they don't have a local one

+ added test

git-svn-id: trunk@33544 -
2016-04-22 13:07:48 +00:00
florian
3c2dab9878 * i386 peephole assembler uses largely the common peephole optimizer infrastructure, the resulting code is besides a few improvements the same
git-svn-id: trunk@33542 -
2016-04-21 20:14:01 +00:00
Jonas Maebe
1850cb4ccc * don't look at the resultdef, but at the defs of the operands to decide
whether a multiplication needs to be signed or unsigned (can be different
    in case of a 32x32->64 multiplication) (mantis #30035)

git-svn-id: trunk@33539 -
2016-04-20 22:17:15 +00:00
michael
ef564491b2 * Fixes from Graeme Geldenhuys for bug ID #30006 and bug ID #30008:
--------------------------------
  * pdf unittests: fixes failing test after fpPDF changes, plus newtest added.
  * pdf: fixes failing test due to recent changes in fpPDF.
  * pdf tests: new test for new behaviour.
  * pdf: Applies patch from Mantis 30006 - and replaced bitmasks with Sets.
  * pdf tests: Updates the README file with exact font details used by the tests.
  * ttf: fixes debug output directory.
  * pdf: FPC Mantis BugID 30008: fpTTF: wrong Ascender/Descender calculation
  * pdf: fix bug where return value was never set.
  * pdf: fixes compiler hint about uninitialised variables being used.
  * pdf unittests: fixes memory leak in one test.
  * pdf unittests: fixes compiler hint about unused units in uses  clause.

git-svn-id: trunk@33535 -
2016-04-19 07:10:59 +00:00
Jonas Maebe
f50dec5202 * don't allow implicit type conversions from pointers to c-style blocks in
Delphi mode, because unlike for procvars we need full type information
    to be able to generate a block (mantis #30022)

git-svn-id: trunk@33529 -
2016-04-17 19:07:26 +00:00