Commit Graph

50569 Commits

Author SHA1 Message Date
michael
5cd12a2521 * Better m/mm format specifier docs (bug ID 31449)
git-svn-id: trunk@35892 -
2017-04-22 10:02:29 +00:00
florian
4868b83157 * do not generate always debug messages in the arm assembler optimizer
git-svn-id: trunk@35891 -
2017-04-22 09:37:18 +00:00
florian
6af656aaed + DebugMsg based debugging for the mips(el) assembler optimizer
git-svn-id: trunk@35890 -
2017-04-22 09:36:44 +00:00
michael
8983879aeb * Fix bug #31692
git-svn-id: trunk@35889 -
2017-04-22 09:26:00 +00:00
Mattias Gaertner
9464a009a8 pastojs: if jsvalue then, while jsvalue do, repeat until jsvalue
git-svn-id: trunk@35888 -
2017-04-22 09:16:37 +00:00
Mattias Gaertner
99990f3596 fcl-passrc: resolver: allow overrding test for if/while/repeat condition
git-svn-id: trunk@35887 -
2017-04-22 09:15:34 +00:00
michael
011a88b1fe * Remove mode objfpc (bug ID 31629)
git-svn-id: trunk@35886 -
2017-04-22 08:53:13 +00:00
pierre
6eee90ad3f Fix section alignment code for GNU assembler for smartlinked objects on aix system
git-svn-id: trunk@35885 -
2017-04-22 08:48:23 +00:00
michael
1f3e7442c1 * Fix bug ID #31671
git-svn-id: trunk@35884 -
2017-04-22 08:48:05 +00:00
Mattias Gaertner
21f1fd04e1 fcl-passrc: property accessor: allow alias types
git-svn-id: trunk@35883 -
2017-04-22 07:26:58 +00:00
nickysn
1146b7c12c + added detailed information for individual flag bits use for most x86
instructions. Not used by the compiler yet, but may allow more
  optimizations in the future.

git-svn-id: trunk@35882 -
2017-04-21 23:03:33 +00:00
florian
edc29ac6a3 * patch by Karl-Michael Schindler so fpmkunit compiles without threading support, resolves #31686
git-svn-id: trunk@35881 -
2017-04-21 19:53:35 +00:00
florian
50dba9ad66 * if both labels of a case label are equal, we still cannot skip the comparison in a jump tree, resolves #31589
git-svn-id: trunk@35880 -
2017-04-21 19:32:27 +00:00
michael
80c510b4aa * Patch by C Western to fix use of uninitialized lock (bug ID 31682
git-svn-id: trunk@35879 -
2017-04-21 19:25:53 +00:00
michael
6252a02fe1 * Fixed 24688
git-svn-id: trunk@35878 -
2017-04-21 19:11:10 +00:00
michael
6a5ed4ac5b * Fixed bug #31687
git-svn-id: trunk@35877 -
2017-04-21 18:44:49 +00:00
michael
b38a7fb852 * Fix bug #31691
git-svn-id: trunk@35876 -
2017-04-21 18:40:34 +00:00
Mattias Gaertner
c52668a0ed pastojs: improved error message typeinfo
git-svn-id: trunk@35875 -
2017-04-21 13:46:48 +00:00
Mattias Gaertner
3688141236 fcl-passrc: resolver: mark unary expression operand access, analyzer: typeinfo(function) publish only result type, not function
git-svn-id: trunk@35874 -
2017-04-21 13:46:09 +00:00
Mattias Gaertner
7cb1159f13 pastojs: typeinfo of function result, Result and Self
git-svn-id: trunk@35873 -
2017-04-21 12:39:31 +00:00
Mattias Gaertner
6a64b2f8a1 fcl-passrc: resolver: use canonical class-of for class functions
git-svn-id: trunk@35872 -
2017-04-21 12:38:32 +00:00
Mattias Gaertner
10df48a129 pastojs: rtti nativeint
git-svn-id: trunk@35871 -
2017-04-21 09:10:05 +00:00
Mattias Gaertner
5b98efe397 pasresolver: fixed const c=[enum..enum]
git-svn-id: trunk@35870 -
2017-04-21 09:09:31 +00:00
Mattias Gaertner
cbeead79ec pastojs: fixed compile
git-svn-id: trunk@35869 -
2017-04-21 08:31:07 +00:00
Mattias Gaertner
74899a889a fcl-passrc: resolver: allow overriding names of base types
git-svn-id: trunk@35868 -
2017-04-21 08:30:28 +00:00
Mattias Gaertner
798c1c71e6 pastojs: fixed typeinfo arg dyn array
git-svn-id: trunk@35867 -
2017-04-20 21:16:58 +00:00
Mattias Gaertner
1c3b8c70f7 fcl-passrc: added uintsingle, intsingle, uintdouble, intdouble
git-svn-id: trunk@35866 -
2017-04-20 21:16:35 +00:00
Mattias Gaertner
88600b71ef fcl-passrc: useanalyzer: mark enumvalue parent types
git-svn-id: trunk@35865 -
2017-04-20 19:14:00 +00:00
Mattias Gaertner
db6e47a22c pastojs: typeinfo(classofvar)
git-svn-id: trunk@35864 -
2017-04-20 18:14:02 +00:00
Mattias Gaertner
8da6a9fc84 fcl-passrc: fixed function type inside function
git-svn-id: trunk@35863 -
2017-04-20 18:13:33 +00:00
Mattias Gaertner
13bc0cfdd6 pastojs: typeinfo(classof)
git-svn-id: trunk@35862 -
2017-04-20 15:28:39 +00:00
nickysn
869f395a31 + added knowledge to the compiler for the x86 instructions, that don't read
their input registers, in case both parameters are the same register (e.g.
  xor eax, eax; sub eax, eax; etc.)

git-svn-id: trunk@35861 -
2017-04-20 15:11:56 +00:00
Mattias Gaertner
f91e72391d pastojs: fixed compilation
git-svn-id: trunk@35860 -
2017-04-20 13:26:55 +00:00
Mattias Gaertner
67369b38ba fcl-passrc: find overload with array lit param
git-svn-id: trunk@35859 -
2017-04-20 13:26:41 +00:00
nickysn
328d546155 + extend the i8086 peephole optimization that converts certain sequences to lds
and les instructions to also support the lss, lfs and lgs instructions on i386
  (won't be generated by the current code generator, but might become useful in
  the future, if we start using the fs and gs segment registers as well)

git-svn-id: trunk@35858 -
2017-04-20 13:00:26 +00:00
nickysn
ec11864272 * use a native sized int register for the shift count in in_sar_assign_x_y,
in_shl_assign_x_y,in_shr_assign_x_y,in_rol_assign_x_y,in_ror_assign_x_y

git-svn-id: trunk@35857 -
2017-04-20 12:38:54 +00:00
nickysn
af235cae86 * use TEST CL,32 instead of TEST ECX,32 in the beginning of a 64-bit shl/shr
sequence on i386

git-svn-id: trunk@35856 -
2017-04-19 21:30:31 +00:00
nickysn
12a1ad66b2 + added the Ch_RDirFlag change attribute to the STOSx instructions (previously
was missing, due to the 3 attributes per instruction limit)

git-svn-id: trunk@35855 -
2017-04-19 20:23:24 +00:00
Mattias Gaertner
6d2dbb564c pastojs: show jsvalue ninstead of custom in incompatible type messages
git-svn-id: trunk@35854 -
2017-04-19 20:13:13 +00:00
Mattias Gaertner
a63cdac0f3 fcl-passrc: allow override basetypenames, fixed analyzer tpasargument
git-svn-id: trunk@35853 -
2017-04-19 20:12:26 +00:00
Mattias Gaertner
511339d70a pastojs: check only allowed basetypes
git-svn-id: trunk@35852 -
2017-04-19 18:39:09 +00:00
Mattias Gaertner
8376f3c126 pas-fclsrc: emit element hints, type shortstring[]
git-svn-id: trunk@35851 -
2017-04-19 18:38:18 +00:00
nickysn
9303a8f61a * changed the x86 TInsProp.Ch structure from a 3-element array to a pascal set;
this removes the limit of 3 Ch_XXX flags per instruction (thus allowing adding
  more precise flags, e.g. for tracking only certain bits of the flags register,
  etc.) and avoids the ugliness of having the Ch_None filler, which makes
  x86ins.dat less readable.

git-svn-id: trunk@35850 -
2017-04-19 16:48:35 +00:00
nickysn
189e49998c * fixes to the x86 instruction flags tracking attributes:
* AAA and AAS also read flags (AF)
  * CMC reads and writes flags (it inverts CF)
  * CMPSx and SCASx write flags
  * CMPSx, SCASx, LODSx, STOSx, MOVSx read the direction flag
  * NOT doesn't affect flags
  * REP isn't affected by and doesn't affect flags
  * REPE/REPNE/REPZ/REPNZ/REPC/REPNC don't write flags, only read them
  * ROL and ROR don't read flags
  * SAL doesn't read flags
  * SHLD and SHRD don't read flags

git-svn-id: trunk@35849 -
2017-04-19 15:42:50 +00:00
nickysn
7ee0c07b8d + added flags register tracking for many i8086 operations
git-svn-id: trunk@35848 -
2017-04-19 13:46:20 +00:00
Mattias Gaertner
efe23d612b pastojs: proc type reference-to
git-svn-id: trunk@35847 -
2017-04-19 13:30:46 +00:00
Mattias Gaertner
863e0c1956 fcl-passrc: resolver: proc type reference-to
git-svn-id: trunk@35846 -
2017-04-19 13:30:32 +00:00
Mattias Gaertner
3f3f921b18 pastojs: eopPower
git-svn-id: trunk@35845 -
2017-04-18 22:49:35 +00:00
Mattias Gaertner
f93b706e82 fcl-passrc: resolver: eopDivide
git-svn-id: trunk@35844 -
2017-04-18 22:49:06 +00:00
Mattias Gaertner
dd9630b1d7 pastojs: external names can be char
git-svn-id: trunk@35843 -
2017-04-18 21:37:34 +00:00