Commit Graph

40642 Commits

Author SHA1 Message Date
sergei
e82ecd66f3 - MIPS: removed target-specific real_to_real conversion, generic code handles it just well.
git-svn-id: trunk@25083 -
2013-07-11 08:28:24 +00:00
sergei
ac2006898f * Mark procedures with shortstring value parameters as non-leaf, because such parameters generate a call (to fpc_shortstr_assign).
git-svn-id: trunk@25082 -
2013-07-11 08:21:45 +00:00
michael
e992431bc4 * Do not decode Querystring yet. This is done when parsing it in name=value
git-svn-id: trunk@25081 -
2013-07-10 13:29:46 +00:00
sergei
8b97972482 * Typo in r25079.
git-svn-id: trunk@25080 -
2013-07-10 10:46:13 +00:00
sergei
0cea8466a2 MIPS RTL:
+ fixed missing result assignments in SetRoundMode and SetExceptionMask.
* GetRoundMode: provide correct mapping from FSR bits to TRoundingMode.
* SetExceptionMask: simplified.

git-svn-id: trunk@25079 -
2013-07-10 10:44:14 +00:00
sergei
1ca2a253e8 MIPS, improved integer to real conversions:
* Use fpc_[int64|qword]_to_double instead of [int64|qword]_to_float64, makes RTL no longer dependent on softfloat code.
* Move 32-bit values from integer registers to FPU registers without using memory.
* Fixed branching, was still using a macro and delay slot was missing.

git-svn-id: trunk@25071 -
2013-07-09 14:17:51 +00:00
svenbarth
6b34c84704 nadd.pas, taddnode.create_internal:
* Fix formatting of parameters

git-svn-id: trunk@25070 -
2013-07-09 08:51:49 +00:00
svenbarth
fc79d47b09 Fix for Mantis #24651. Allow pointer comparison for internal expressions (in this case check for valid VMT).
nadd.pas, taddnode:
  + add new constructor "create_internal" which adds "nf_internal" to the node's "flags"
  * pass_typecheck_internal: allow pointer comparisons other than "=" and "<>" for nodes which have "nf_internal" set
psub.pas, generate_bodyentry_block:
  * create the addnode using "create_internal" instead of "create" to allow the pointer comparison

+ added test 

git-svn-id: trunk@25069 -
2013-07-09 08:04:11 +00:00
svenbarth
407e9d173b Fix for Mantis #17598. When extended syntax is off allow the result of constructors to be dropped when the constructor is called as an instance method instead of a class method.
pstatmnt.pas, statement:
  * check whether the constructor is called as an instance or class method
nflw.pas, tlabelnode.pass_1:
  * don't check the owner of the labelsym when there is none (happens with internally created labels like for e.g. exception handling)

+ added test  

git-svn-id: trunk@25068 -
2013-07-09 07:56:45 +00:00
sergei
f3a1c749fb * tcgtypeconvnode.second_int_to_int: reuse 8 and 16-bit-sized register locations on targets with 32-bit-only registers when casting to larger size (except ShortInt to Word cast). This is possible because upper bits of such registers are always kept valid by code generators (see 'maybeadjustresult' method in cgcpu.pas). Removes a lot of useless register moves.
git-svn-id: trunk@25067 -
2013-07-08 13:27:03 +00:00
sergei
faa778b6c7 * MIPS: div/mod and 32-bit shifts: don't bother reusing argument locations, always allocate new register and emit 3-address instructions.
* Fixed possible overwrite of LOC_CREGISTER numerator in optimized division by power of 2.

git-svn-id: trunk@25066 -
2013-07-08 11:51:39 +00:00
lacak
35f74e86ad fcl-db: tests: Add test for Master-detail (see rev.25055)
git-svn-id: trunk@25065 -
2013-07-08 11:50:15 +00:00
lacak
a12a94eaff fcl-db: tests: move 1 test
git-svn-id: trunk@25064 -
2013-07-08 11:06:56 +00:00
lacak
8602706228 fcl-db: sqldb:
- do not allocate cursor when opening bufdataset from file
- when closing TSQLQuery do not deallocate cursor while can be prepared (fixes "[SETUP] unable to close due to unfinalised statements" bug for SQLite)
- when unpreparing statement take into account that there are also SQLConnections which does not support [un]preparation of statements ... bur for those we must still call UnRegisterStatement (fixes multiple "[TEARDOWN] Access violation" in tests)

git-svn-id: trunk@25063 -
2013-07-08 10:40:27 +00:00
sergei
9e4cc57768 * MIPS: handle 8 and 16-bit arithmetic shifts internally, by shifting argument left by 24/16 bits, followed with 32-bit arithmetic shift right by appropriately adjusted amount.
This approach should be usable for other non-x86 targets as well.

git-svn-id: trunk@25062 -
2013-07-08 08:45:16 +00:00
lacak
87a0868606 fcl-db: tests: more complex test for r25036
git-svn-id: trunk@25061 -
2013-07-08 06:55:15 +00:00
florian
58610af9f0 * adapt max_linear_list on x86-64 as well
git-svn-id: trunk@25060 -
2013-07-07 20:01:10 +00:00
florian
d0db391d7c * cleanup of unused units
git-svn-id: trunk@25059 -
2013-07-07 20:00:33 +00:00
florian
91138a535a * default value for max_linear_list on i386
git-svn-id: trunk@25058 -
2013-07-07 19:51:25 +00:00
florian
507edb16de * use add/sub instead of inc/dec on modern CPUs when optimizing for speed
git-svn-id: trunk@25057 -
2013-07-07 19:50:13 +00:00
michael
af1d33767d * Inherited must be called for Internal(Dis)Connect for housekeeping
git-svn-id: trunk@25056 -
2013-07-07 18:19:23 +00:00
michael
087b6b4a39 * Fixed Master/Detail relation in SQLDB and fixed memory leak
git-svn-id: trunk@25055 -
2013-07-07 18:14:11 +00:00
florian
2cdb4adf39 + tai_const.Create_type_name and tai_const.Create_pint_unaligned
* some locations fixed, where dwarf generated assembler for aligned data accidently

git-svn-id: trunk@25054 -
2013-07-07 15:09:36 +00:00
marco
609f6255d4 * added layout constants.
git-svn-id: trunk@25053 -
2013-07-06 20:46:30 +00:00
Jonas Maebe
a73897f835 - removed svn:mergeinfo properties (please only merge into the top level
directory)

git-svn-id: trunk@25050 -
2013-07-05 14:08:27 +00:00
sergei
bea46f3403 MIPS RTL:
* Fixed InterlockedXXX routines, hopefully thread-safe now.
+ SarInt64 assembler implementations for both mips and mipsel.

git-svn-id: trunk@25049 -
2013-07-05 14:03:18 +00:00
florian
963a488ca2 * handle also LOC_CREGISTER/LOC_CMMREGISTER in tcgvecnode.pass_generate_code, resolves #24705
git-svn-id: trunk@25039 -
2013-07-04 19:36:28 +00:00
sergei
59d6df4fca * MIPS: replaced opcode mapping functions with array, much shorter that way. Separate "overflow" mapping is also no longer needed.
* Use SRAV/SRLV/SLLV opcodes for shifts by variable amount.

git-svn-id: trunk@25038 -
2013-07-04 14:26:44 +00:00
sergei
30a6432a17 + Assembler implementation of SarInt64 for i386.
git-svn-id: trunk@25037 -
2013-07-04 09:43:30 +00:00
lacak
7c110e9b42 fcl-db:
- for MSSQL map TINYINT to ftWord 
- for SQLite map TINYINT to ftSmallint 
- TestTinyint

git-svn-id: trunk@25036 -
2013-07-04 08:25:33 +00:00
lacak
206e5eb475 fcl-db: odbc: map ftWord fields to TWordField (avoid potential problem with Big Endian systems)
git-svn-id: trunk@25035 -
2013-07-04 06:46:45 +00:00
nickysn
3505ba4ee6 + added CPU detection code in the msdos rtl startup in order to properly initialize the Test8086 variable
git-svn-id: trunk@25034 -
2013-07-03 15:43:01 +00:00
sergei
1c84c3edbf * Fixed label optimizer to work with MIPS, and enabled level 1 optimization for MIPS targets.
The difference in branch instruction formats is isolated in function JumpTargetOp, it is a plain function rather than a virtual method, so it can be easily inlined and, after inlining, produces the same code for non-MIPS targets as it was before change.

git-svn-id: trunk@25033 -
2013-07-03 14:40:24 +00:00
lacak
7a46ebd7f1 fcl-db: odbc: map UNSIGNED SMALLINT to ftWord fields. TestSupportWordFields
git-svn-id: trunk@25032 -
2013-07-03 08:24:51 +00:00
florian
162cb30528 * another patch by Max Nazhalov to fix shifting and rounding of float128
git-svn-id: trunk@25031 -
2013-07-02 21:03:39 +00:00
sergei
8823574fe2 * MIPS: get rid of DIV and DIVU macros.
git-svn-id: trunk@25030 -
2013-07-02 14:28:10 +00:00
sergei
d0ae800da6 + MIPS: Use INS and EXT instructions for bit manipulations when target CPU type is set to mips32r2.
git-svn-id: trunk@25029 -
2013-07-02 14:21:29 +00:00
pierre
eb1ff90de1 Fix jvm compiler compilation failure after rev 25013
git-svn-id: trunk@25028 -
2013-07-02 12:52:32 +00:00
lacak
1ffcb9c1e6 fcl-db: mssql: add comments
git-svn-id: trunk@25027 -
2013-07-02 11:38:33 +00:00
lacak
f2464fbf3d fcl-db: mysql: formatting (remove unused variables)
git-svn-id: trunk@25026 -
2013-07-02 11:29:15 +00:00
lacak
029eb92bd0 fcl-db: mysql: map UNSIGNED SMALLINT to ftWord fields. TestSupportWordFields
git-svn-id: trunk@25025 -
2013-07-02 11:20:04 +00:00
sergei
828309e61d - MIPS: removed opcodes that are not in any known documentation.
git-svn-id: trunk@25023 -
2013-07-01 06:09:53 +00:00
florian
a0292b8962 * patch by Max Nazhalov to fix more conversion issues of the C code translation, resolves #24691
git-svn-id: trunk@25022 -
2013-06-30 18:07:40 +00:00
marco
ee5ce52d4c * Simple Add/remove firewall rule wrapper by d4nn13 (forum)
git-svn-id: trunk@25021 -
2013-06-30 16:19:01 +00:00
florian
6ab95815d8 * try to optimze (p-/+const)^ by putting const into the offset of the generated reference
git-svn-id: trunk@25014 -
2013-06-29 22:20:34 +00:00
florian
be2ab84474 * make actualtargetnode a normal procedure using pointers to node so it can be used also when replacing nodes
+ replacenode to replace nodes inline

git-svn-id: trunk@25013 -
2013-06-29 22:20:30 +00:00
nickysn
7e70a5f763 * i8086 fix after r25010: i8086 doesn't support lea sp,[sp-XXX]
git-svn-id: trunk@25012 -
2013-06-29 12:21:15 +00:00
Tomas Hajny
67b3017751 * RealMaxPathLen added - value queried from the system on startup
git-svn-id: trunk@25011 -
2013-06-28 21:02:04 +00:00
florian
94cf650d9a * use lea to adjust stack pointer, this is equal or faster on all modern CPUs than add/sub
git-svn-id: trunk@25010 -
2013-06-28 17:06:57 +00:00
sergei
7810d6637a * MIPS: improved 64-bit comparisons by using cg.a_cmp_reg_reg_label, uses less instructions and registers when comparing with zero.
git-svn-id: trunk@25008 -
2013-06-28 15:46:17 +00:00