sergei
7cfc737866
* MIPS: rewrote 32-bit code generation methods, reducing code duplication.
...
+ Implemented overflow checking for unsigned 32-bit addition and subtraction.
* Use optimize_op_const instead of custom optimizations.
* Change AND/OR/XOR into ANDI/ORI/XORI if they use immediate operands, and use correct range for these immediate operands, must be 0..65535 unlike -32768..32767 for arithmetic operations.
* Don't treat AND/OR/XOR as macros, no longer necessary.
* Don't treat BEQ/BNE as macros either.
git-svn-id: trunk@24445 -
2013-05-05 05:55:03 +00:00
paul
da35b3c601
compiler, rtl: write CodePage for AnsiString RTTI (Delphi compatible), change TTypeData appropriately + test
...
git-svn-id: trunk@24444 -
2013-05-05 05:05:08 +00:00
paul
714511a4d9
compiler: typo
...
git-svn-id: trunk@24441 -
2013-05-05 03:46:42 +00:00
paul
5cd3f9d8fb
compiler: don't write rtti for objc classes/protocols (a trial to fix build on mac)
...
git-svn-id: trunk@24440 -
2013-05-05 03:18:59 +00:00
florian
e6489ed7d2
* arm thumb: do not generate illegal ror instructions
...
git-svn-id: trunk@24439 -
2013-05-04 22:00:17 +00:00
marco
09e742f243
* add a -dfpc define to the resource compiler commandlines, which allows to make FPC specific exceptions in resource scripts. Mantis #24044
...
git-svn-id: trunk@24438 -
2013-05-04 21:25:36 +00:00
florian
ccdd4437d6
* arm thumb: do not cause bxx getting too long ranges when inserting constant blocks
...
git-svn-id: trunk@24437 -
2013-05-04 20:36:08 +00:00
sergei
a0d3750b81
+ MIPS: implemented direct 32x32 to 64 bit multiplication.
...
git-svn-id: trunk@24436 -
2013-05-04 20:35:24 +00:00
florian
7bea00e5fb
* arm thumb: allow interface trampolines to non-virtual methods with large offsets
...
git-svn-id: trunk@24434 -
2013-05-04 19:54:03 +00:00
florian
1682e9a2b1
* detabbed
...
git-svn-id: trunk@24433 -
2013-05-04 19:39:12 +00:00
florian
ed2825fbb0
* arm thumb: handle constants in second_cmpsmallset correctly
...
git-svn-id: trunk@24432 -
2013-05-04 19:38:12 +00:00
florian
c087d97b96
* typo fixed
...
git-svn-id: trunk@24431 -
2013-05-04 19:37:34 +00:00
paul
2cbc061707
compiler: write rtti for pointeddef before classrefdef and pointerdef rtti
...
git-svn-id: trunk@24429 -
2013-05-04 17:12:52 +00:00
paul
d18f273f67
compier, rtl: revert 24424 since it fails on some platforms
...
git-svn-id: trunk@24425 -
2013-05-04 16:16:30 +00:00
paul
e23534eec4
compiler, rtl: some rtti related changes:
...
- write pint instead of 32 bit for record field offset (compiler uses aintsize = pint in TRecordDef), use PtrInt in RTL for record reading
- add tkRecord to TTypeData (field and type names are taken from Delphi help)
- add tkProcedure as alias to tkProcVar
git-svn-id: trunk@24424 -
2013-05-04 16:05:04 +00:00
paul
d90445e5ee
compiler, rtl, tests: write Delphi compatible (more or less) type information for Class Reference and Pointer types (mantis #0024367 )
...
git-svn-id: trunk@24421 -
2013-05-04 12:47:05 +00:00
svenbarth
930b76e8fb
Fix compilation of WinCE. Change the fixed UNICODE define of WinCE to FPC_OS_UNICODE, so that it won't be undefined when changing the mode/string type and that the usage of a UNICODE API is independant of the mode.
...
Also adjusted all Windows (Win32/64/CE) units to define a "UNICODE" if "FPC_OS_UNICODE" is defined (except the Jedi units).
Also the common RTL units that checked for UNICODE now check for FPC_OS_UNICODE.
git-svn-id: trunk@24420 -
2013-05-04 11:06:32 +00:00
florian
1de40c8de7
* arm thumb: fix spilling with offsets >1020
...
git-svn-id: trunk@24419 -
2013-05-04 10:51:01 +00:00
sergei
504b6754b7
* MIPS small improvements:
...
* TCGMIPS.a_load_reg_reg: generate CPU instructions instead of macros
* TCGMIPS.a_cmp_const_reg_label: load constant using a_load_const_reg instead of LI macro (it may also end up with LI, but tries to optimize when possible).
- removed unused variables.
git-svn-id: trunk@24418 -
2013-05-04 07:33:34 +00:00
sergei
1f8bd4a2d1
+ MIPS: initial target-specific unary minus node.
...
git-svn-id: trunk@24417 -
2013-05-04 07:19:08 +00:00
paul
17e7ef0d28
ppudump: fix help message
...
git-svn-id: trunk@24416 -
2013-05-04 02:23:39 +00:00
florian
6197330bad
* arm thumb: take care of constant restrictions when creating interface wrappers for non-virtual methods
...
git-svn-id: trunk@24415 -
2013-05-03 21:12:16 +00:00
florian
f3b7f6197b
* arm thumb: generate proper code for rol
...
git-svn-id: trunk@24414 -
2013-05-03 20:53:58 +00:00
florian
cec28ef512
* when inserting pc relative data blocks on arm thumb, avoid negative pc offsets, if needed, the data is copied
...
a short test with the rtl shows that this happens exactly once in the rtl, so it is feasible to do so
git-svn-id: trunk@24413 -
2013-05-03 20:45:26 +00:00
florian
1f8192b6da
* indention fixes
...
* detabbed
git-svn-id: trunk@24412 -
2013-05-03 20:41:55 +00:00
yury
15b3695a0e
* ppudump: Proper tag for a source file in XML.
...
git-svn-id: trunk@24411 -
2013-05-03 15:13:28 +00:00
yury
eb26ccfbe7
* ppudump: Proper output of Unicode string constants.
...
git-svn-id: trunk@24410 -
2013-05-03 15:04:50 +00:00
yury
906cd9d365
+ ppudump: XML output.
...
git-svn-id: trunk@24409 -
2013-05-03 14:27:17 +00:00
yury
65d832420e
* ppudump:
...
- Check PPU version to be the same as the current PPU version of the compiler. It prevents reading errors if a unit has wrong PPU version. The version check can be turned off using -S switch.
- User WriteError() in appropriate places in the code.
git-svn-id: trunk@24408 -
2013-05-03 13:03:22 +00:00
yury
ad8f42cd29
* ppudump: JSON output of float, string, file, variant, undefined, formal definitions.
...
git-svn-id: trunk@24407 -
2013-05-03 12:28:19 +00:00
yury
44a0b61224
* ppudump: Write errors to StdErr and write warnings to StdErr when output to JSON.
...
git-svn-id: trunk@24406 -
2013-05-03 11:12:15 +00:00
yury
3a8ed11e23
* ppudump: JSON output of pointers and ordinal definitions.
...
git-svn-id: trunk@24405 -
2013-05-03 11:04:18 +00:00
nickysn
4527fe8fa2
+ added 8086 workaround for the 'imul reg,const' 186+ instruction. The compiler can now generate strict 8086/8088 code.
...
git-svn-id: trunk@24404 -
2013-05-01 19:18:12 +00:00
nickysn
fe275c4f47
* set nasm cpu type according to the current cpu level set by -Cp
...
git-svn-id: trunk@24402 -
2013-05-01 15:47:23 +00:00
nickysn
4c95592e08
* don't use 'fnstsw ax' if the current cpu level is below 286
...
git-svn-id: trunk@24401 -
2013-05-01 15:42:02 +00:00
florian
19c8abac0b
+ enable jump optimizer for i8086
...
git-svn-id: trunk@24400 -
2013-05-01 13:54:13 +00:00
sergei
8c91cddfc8
* Win64 SEH: Fixed handling control flow statements also in 'except' and 'on' parts of try..except statements.
...
git-svn-id: trunk@24398 -
2013-05-01 01:47:01 +00:00
florian
5e0585c0d0
+ introduce tf_no_objectfiles_when_smartlinking so object file generation on i8086-msdos can be turned off
...
* object file generation on i8086-msdos can be turned off if smartlinking is enabled
git-svn-id: trunk@24396 -
2013-04-30 19:11:55 +00:00
yury
679a8d9dd6
* ppudump: JSON output of sets and set constants.
...
git-svn-id: trunk@24394 -
2013-04-30 15:09:05 +00:00
yury
026200d75a
* ppudump: JSON output of enums.
...
git-svn-id: trunk@24393 -
2013-04-30 14:09:37 +00:00
sergei
c7937f6736
* Win64 exception handling: don't reset fc_unwind control flow flag at the beginning of try..except blocks. Resolves #24342 .
...
git-svn-id: trunk@24385 -
2013-04-30 03:56:58 +00:00
nickysn
8fddb1361b
* got rid of push const also in tcg8086.a_loadaddr_ref_cgpara
...
git-svn-id: trunk@24384 -
2013-04-29 23:13:09 +00:00
nickysn
cfc3c6ec5d
- cleanup tcg8086.a_loadaddr_ref_cgpara from unused code left over from i386
...
git-svn-id: trunk@24383 -
2013-04-29 23:08:12 +00:00
nickysn
e4f3dd1264
* do not emit shl/shr with a const different than 1 on 8086
...
git-svn-id: trunk@24382 -
2013-04-29 23:02:09 +00:00
nickysn
76e3dd5cef
* do not generate push const on the i8086, go through a register instead, unless it's 186+
...
git-svn-id: trunk@24381 -
2013-04-29 22:29:26 +00:00
nickysn
06f1b6a4e8
* moved the i8086 'push const' instructions to a new method, so they can be abstracted on pre-186 processors
...
git-svn-id: trunk@24380 -
2013-04-29 21:53:55 +00:00
florian
0e9b8adb7a
patch by Michael Ring:
...
+ support of several armv6m MCUs for arm-embedded
* renamed lpc1343 unit to lpc13xx
+ more lpc13xx MCUs added
git-svn-id: trunk@24379 -
2013-04-29 19:57:08 +00:00
nickysn
7c0679efdb
* use the 'leave' instruction on 80186+
...
git-svn-id: trunk@24378 -
2013-04-29 19:45:39 +00:00
florian
d4c7afbfe8
+ generate thumb_func directives for thumb as well
...
git-svn-id: trunk@24377 -
2013-04-29 18:23:01 +00:00
pierre
6d3121078d
Regenerate all Makefiles with an up-to-date fpcmake binary
...
git-svn-id: trunk@24373 -
2013-04-29 12:48:11 +00:00