svenbarth
d908dbeec1
Fix for Mantis #25215 .
...
compiler/scanner.pas, tscannerfile.readtoken:
* after trying to read a _INTCONST check whether a valid first character for an identifier follows and give a syntax error if that is not the case
+ added test
git-svn-id: trunk@25835 -
2013-10-20 12:15:49 +00:00
svenbarth
d91d4afb0f
Fix for Mantis #25210 .
...
compiler/pdecobj.pas, object_dec:
* since revision 25518 the global symtable of the current module is no longer popped and pushed again so that the defaware symtablestack can add the helper; thus we need to do this not only for static symtables, but for global ones as well
* adjusted comment to reflect current situation
git-svn-id: trunk@25834 -
2013-10-20 11:33:01 +00:00
nickysn
645cd11b9d
* fixed the assignment of global functions to nested procvars in i8086 far code
...
models
git-svn-id: trunk@25831 -
2013-10-19 20:42:39 +00:00
nickysn
378afb69b2
* optimization in tcg386.g_intf_wrapper: use the much more efficient case 1
...
for virtual methods, that use the register calling convention, but have at
least one free register (i.e. not used as a parameter and not required to be
preserved by the function)
git-svn-id: trunk@25830 -
2013-10-19 17:40:38 +00:00
nickysn
bfd31e7516
* optimizations in tcg8086.g_copyvaluepara_openarray:
...
- when elesize=2, avoid the SHR CX,1 instruction
- use rep movsw even for odd elesizes, unless cs_opt_size is set
git-svn-id: trunk@25829 -
2013-10-19 15:07:55 +00:00
nickysn
aca22a59f7
* optimizations in tcg386.g_copyvaluepara_openarray in order to avoid the
...
second IMUL
git-svn-id: trunk@25828 -
2013-10-19 12:56:58 +00:00
nickysn
0f69362edd
- rm LEA reg,imm from x86ins.dat, as that's not a valid x86 instruction,
...
using it in inline asm causes an internal error and removing it didn't show
any regressions after running the testsuite on i386-linux.
git-svn-id: trunk@25827 -
2013-10-18 23:26:58 +00:00
nickysn
ff9ce0d20d
* tcg8086.g_copyvaluepara_openarray improvements:
...
- use a_op_const_reg for the multiplication, instead of emitting directly
instructions, which are 186+
- avoid using IMUL twice, when the element size is not power of two
- rm the system_i386_win32 leftovers
git-svn-id: trunk@25826 -
2013-10-18 22:35:51 +00:00
nickysn
8744fbefbb
* add $parentfp as a first parameter on i8086, instead of last. This makes
...
regular non-nested procedures compatible with nested var procvars and fixes
the tmaclocalprocparam*.pp tests on i8086
git-svn-id: trunk@25825 -
2013-10-18 21:37:06 +00:00
nickysn
7e7ab2fd4d
* also handle nested proc ptrs in thlcgcpu.location_force_mem on i8086
...
git-svn-id: trunk@25824 -
2013-10-18 20:09:01 +00:00
nickysn
ef51c8c5a2
* fixed the interface wrapper code generation for virtual methods on i8086 in
...
the medium memory model
git-svn-id: trunk@25817 -
2013-10-18 12:11:50 +00:00
nickysn
116d3746ca
* fixed the stack offset to the self parameter when generating an interface
...
wrapper for a virtual method in tcg8086.g_intf_wrapper
git-svn-id: trunk@25816 -
2013-10-18 10:56:04 +00:00
nickysn
83aa50de74
* emit a far jmp in the interface wrapper on i8086 in far code memory models
...
git-svn-id: trunk@25812 -
2013-10-17 21:55:45 +00:00
nickysn
4aa010eedc
+ support LEA with 16-bit operand size
...
git-svn-id: trunk@25808 -
2013-10-17 16:11:08 +00:00
Jonas Maebe
8dd956cbde
* convert unicode/widestring constants to ansistring in resourcestring
...
declarations (mantis #25198 )
git-svn-id: trunk@25807 -
2013-10-17 12:43:39 +00:00
nickysn
814e1297ed
* tcg8086.g_adjust_self_value fixed for far code memory models
...
git-svn-id: trunk@25798 -
2013-10-15 23:34:18 +00:00
nickysn
7ff97d9b7d
* specify AT_DATA when refering to the 'RESSTR' symbols; among other things,
...
this fixes resourcestring constants in the i8086 memory model.
git-svn-id: trunk@25796 -
2013-10-15 22:06:16 +00:00
nickysn
bf07fc077b
* specify AT_DATA in all references to the tobjectdef.vmt_mangledname symbol.
...
This fixes a lot of bugs, related to objects and classes in the i8086 medium
memory model
git-svn-id: trunk@25794 -
2013-10-15 18:56:27 +00:00
nickysn
e160dab697
+ added i8086 to the list of supported CPUs by FPC.exe
...
git-svn-id: trunk@25792 -
2013-10-15 13:29:51 +00:00
Jonas Maebe
a28917086b
* updated *crt1* linking logic for OS X 10.8+:
...
o don't link by default
o when generating profiling info, link gcrt1.o and specify "-no_new_main"
linker parameter
* don't use version-specific crt1.o files when targetting the
iPhoneSimulator platform
* don't link a crt1.o file when targetting iOS 6 or later
(all info from
http://llvm.org/svn/llvm-project/cfe/trunk/lib/Driver/Tools.cpp )
git-svn-id: trunk@25789 -
2013-10-14 21:38:38 +00:00
Jonas Maebe
10ae87f11c
* fixed LdrLdr2LdrMov optimisation in case the first and second ldr have
...
a different size (disable it in that case) + test
git-svn-id: trunk@25778 -
2013-10-14 12:49:34 +00:00
Jonas Maebe
5276159e77
* correct ofset for saving floating point registers + explanation behind
...
the calculation (fixes make cycle on ARMHF)
git-svn-id: trunk@25777 -
2013-10-14 12:49:31 +00:00
Jonas Maebe
31a3122b91
* fixed LsrAnd2Lsr test by replacing the existing buggy check with comparing
...
the outcome of the original and the optimised sequence and seeing whether
it's same + test
git-svn-id: trunk@25776 -
2013-10-14 12:49:28 +00:00
Károly Balogh
74af6d0dab
enabled hardware mul reg, reg codepath for ColdFire too, accelerates tfloattostr test (thus some of the SoftFPU code) by a magnitude...
...
git-svn-id: trunk@25770 -
2013-10-13 21:36:24 +00:00
sergei
142d20ca30
* MIPS: cleanup assembler reader, MIPS references allow only a single register in parentheses.
...
git-svn-id: trunk@25768 -
2013-10-13 21:22:04 +00:00
sergei
e10e383b8e
* MIPS: ".set macro"/".set nomacro" directives around ".cprestore" are necessary only when offset is outside smallint range. Otherwise they just clutter the assembler file.
...
git-svn-id: trunk@25767 -
2013-10-13 20:23:43 +00:00
Károly Balogh
97864d7cbd
trying harder to commit compilable code (manual merge fail)
...
git-svn-id: trunk@25764 -
2013-10-13 18:31:43 +00:00
nickysn
c51c75936b
* 16/8-bit ALU fixes in ncgutil.gen_free_symtable
...
git-svn-id: trunk@25762 -
2013-10-13 16:48:15 +00:00
nickysn
1dabaf5ded
* 16/8-bit ALU fixes in ncgutil.add_regvars
...
git-svn-id: trunk@25761 -
2013-10-13 16:41:32 +00:00
nickysn
d1f0eea902
* 16/8-bit ALU fixes in ncgutil.gen_alloc_regvar
...
git-svn-id: trunk@25760 -
2013-10-13 16:31:16 +00:00
Károly Balogh
3b99974847
set up register A6 to be saved as well. this will only happen in case A6 is not used as framepointer
...
git-svn-id: trunk@25759 -
2013-10-13 16:12:32 +00:00
Károly Balogh
e5eac1bd44
make the array of registers to use depending on wheter we have an FP or not, and which register we have as FP
...
git-svn-id: trunk@25758 -
2013-10-13 16:06:35 +00:00
nickysn
fd05d0c14e
* 16/8-bit ALU fix in maybechangeloadnodereg. This fixes the tbopr and trox2
...
tests on i8086.
git-svn-id: trunk@25752 -
2013-10-13 11:35:56 +00:00
nickysn
f6e846c574
+ added the NEC V20/V30 instructions
...
git-svn-id: trunk@25750 -
2013-10-11 21:27:56 +00:00
Károly Balogh
db49a169cb
handle more locations in tm68knotnode, fixes several tests failing to compile with 200203223
...
git-svn-id: trunk@25746 -
2013-10-11 02:51:23 +00:00
Károly Balogh
aedf2dc20d
fixed spilling operation type for A_LEA, fixes test tb0112 to compile, but still fails to run
...
git-svn-id: trunk@25745 -
2013-10-11 02:03:48 +00:00
Károly Balogh
275031a0dd
fix a bogus R_INTREGISTER to be R_ADDRESSREGISTER in getopstr()
...
git-svn-id: trunk@25744 -
2013-10-10 22:24:56 +00:00
Károly Balogh
fe3d11118c
add string version of the new instructions to the right place. removed one more duplicate table.
...
git-svn-id: trunk@25743 -
2013-10-10 22:12:40 +00:00
Károly Balogh
dfe2f253f9
added 68040 CPU type, MOVE16 and ColdFire V4 extra instructions
...
git-svn-id: trunk@25742 -
2013-10-10 22:01:58 +00:00
Károly Balogh
280ee919b7
removed several debug writeln()s
...
git-svn-id: trunk@25741 -
2013-10-10 21:20:20 +00:00
Károly Balogh
bcab04538c
removed unused table, cleanups
...
git-svn-id: trunk@25740 -
2013-10-10 21:19:15 +00:00
Károly Balogh
4c5f273bc5
removed redundant instruction table only used for ugly debug, and the ugly debug code itself
...
git-svn-id: trunk@25739 -
2013-10-10 21:16:07 +00:00
sergei
a5ae26da7e
* Moved SkipEntryExitMarker method from ARM optimizer to the base one, since it is not target-dependent. Now it can be reused by other targets.
...
git-svn-id: trunk@25738 -
2013-10-10 21:12:49 +00:00
sergei
90d66595c2
* typecheck_real_to_currency: generate inline round() node instead of direct call to fpc_round_real, this allows target-specific processing to take place and possibly emit more efficient code.
...
* Provide x86_64 SSE versions of fpc_trunc_real and fpc_round_real, strictly they are not necessary after the above change to code generation, but it still reduces size of system unit by avoiding compilation of related generic code.
git-svn-id: trunk@25735 -
2013-10-10 12:46:51 +00:00
svenbarth
6fef9a2c80
Correctly implement g_intf_wrapper. Fixes nearly 200 tests and now the cross compiled compiler is at least able to print the help (compiling a simple program does not work yet though).
...
m68k/cgcpu.pas, tcg68k:
+ override g_adjust_self_value as we don't do register allocation for the wrapper we need to adjust the Self value using the scratch registers (could be improved however) and we also can not use the offset that the original procedure in tcg uses
* fix g_intf_wrapper by using the correct operations and loading the correct (virtual) method offset
git-svn-id: trunk@25728 -
2013-10-09 19:56:17 +00:00
florian
babbc21afd
* fix handling of register sets on m68k: it is required that they are stored as two tcpuregistersets because address registers and data registers have different register types
...
git-svn-id: trunk@25726 -
2013-10-09 18:15:06 +00:00
paul
1c578de28c
compiler:
...
* don't allow to apply the same hint directive twice
* change parser_e_proc_dir_not_allowed to more generic variant parser_e_dir_not_allowed - they are similar and 'procedure' prefix does not give more information about the error.
* maybe_parse_hint_directives() uses procdef settings for initial values
+ add tests
git-svn-id: trunk@25720 -
2013-10-08 04:56:42 +00:00
Jonas Maebe
9619ed8b4b
- undo hack from r25713
...
* fix maybe_parse_hint_directives() when it is called multiple times for a
procdef that has a deprecation message specified (fixes crashes
reported in #25101/#25165)
git-svn-id: trunk@25719 -
2013-10-07 20:54:26 +00:00
nickysn
8fad859161
* the default packrecords setting changed to 1 on i8086 for Turbo Pascal 7
...
compatibility
git-svn-id: trunk@25718 -
2013-10-07 20:42:17 +00:00
nickysn
9d1ba65cec
* {$PackRecords NORMAL}, {$PackRecords DEFAULT} and {$ALIGN RESET} now set
...
packrecords to default_settings.packrecords, instead of 0
git-svn-id: trunk@25717 -
2013-10-07 20:41:19 +00:00