Commit Graph

15198 Commits

Author SHA1 Message Date
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