Commit Graph

39119 Commits

Author SHA1 Message Date
florian
3fff969ced * take care of instruction in between when doing ShiftShiftShift2ShiftShift optimizations
git-svn-id: trunk@23462 -
2013-01-20 14:58:03 +00:00
florian
f1b8fad6dc * make AndAnd2And working with other instructions in between
git-svn-id: trunk@23461 -
2013-01-20 14:57:59 +00:00
florian
fcef2dc3df * refactored some code and introduced usage of new method RegEndOfLife
git-svn-id: trunk@23460 -
2013-01-20 14:57:55 +00:00
florian
82f3ec7922 * if cs_opt_level3 is not set, limit lookahead of GetNextInstructionUsingReg to one instruction:
only -O3 means do the really slow optimizations

git-svn-id: trunk@23459 -
2013-01-20 14:57:51 +00:00
florian
a78af5b8fe + AndLslXsr2And and AndLsl2Lsl optimization
git-svn-id: trunk@23458 -
2013-01-20 14:57:46 +00:00
florian
ff522d7e18 * improve ShiftShiftShift2ShiftShift to look further ahead
* check register usage so the destination register can be different

git-svn-id: trunk@23457 -
2013-01-20 14:57:43 +00:00
florian
12d0c05ede * remove bic instructions after lsr if possible
git-svn-id: trunk@23456 -
2013-01-20 14:57:38 +00:00
michael
f566201a8d * Notification should be protected
git-svn-id: trunk@23455 -
2013-01-20 11:25:28 +00:00
svenbarth
632db2229f Fix for Mantis #23700 .
scanner.pas, parse_compiler_expr.read_factor:
  * initialize result value

git-svn-id: trunk@23454 -
2013-01-20 11:21:20 +00:00
michael
faba932549 * Added generic tree from Mario Ray Mahardhika (bug ID 33654)
git-svn-id: trunk@23453 -
2013-01-20 10:09:48 +00:00
florian
81e0e3114c * throw an error if threadvars are used but not supported
* fix building for arm-embedded

git-svn-id: trunk@23452 -
2013-01-19 15:17:47 +00:00
pierre
9e6a2b868c Fix -Cp option failure due to cputypestr array that must be uppercased
git-svn-id: trunk@23446 -
2013-01-18 17:09:28 +00:00
michael
5df0afb5c6 * Corrected statements for tables and system tables
git-svn-id: trunk@23445 -
2013-01-18 16:38:04 +00:00
pierre
bb418a1c94 Try to convert dllprt0.as code to PIC
git-svn-id: trunk@23444 -
2013-01-18 15:02:26 +00:00
pierre
5d3a94f9e4 Regenerated after: Use -KPIC option for dllprt0.as for mips/mipsel
git-svn-id: trunk@23443 -
2013-01-18 15:01:45 +00:00
pierre
84d21fad21 Use -KPIC option for dllprt0.as for mips/mipsel
git-svn-id: trunk@23442 -
2013-01-18 15:01:22 +00:00
michael
164c677cfd * Enable property setter by default
* Fixed index in list class

git-svn-id: trunk@23440 -
2013-01-18 14:43:34 +00:00
michael
49e3d2734e * Added possibility to force use of setter/getter for properties.
* Added possibility to add a line of text in the property setter. (%PROPNAME%)
* Fixed TCodeOptions.Assign, missing a couple of properties.
* Fixed name of setter routine

git-svn-id: trunk@23439 -
2013-01-18 14:42:13 +00:00
paul
7c663af588 compiler: also don't allow record constructors with only default arguments
git-svn-id: trunk@23438 -
2013-01-18 11:59:25 +00:00
paul
fe338013a5 compiler: calculate offset of record fields in taddrnode also for bitpacked structures (Jonas comment in bug #0019357)
git-svn-id: trunk@23437 -
2013-01-18 01:56:55 +00:00
paul
1b8369dd99 compiler: don't allow parameterless constructors
git-svn-id: trunk@23436 -
2013-01-18 01:24:04 +00:00
svenbarth
83af4e93f7 rtl/m68k/m68k.inc:
* InterlockedIncrement & InterlockedDecrement: return the modified value, not the original one

git-svn-id: trunk@23432 -
2013-01-17 21:19:27 +00:00
svenbarth
f5e94a02cd rtl/m68k/m68k.inc:
* fillchar & fillword: check whether the count is 0 before filling anything

This fixes cases like "Writeln('')" which is used inside InternalExit if an unhandled exception happened.

git-svn-id: trunk@23431 -
2013-01-17 21:17:13 +00:00
Jonas Maebe
583eb3f9a4 * re-enabled loadvmtaddrnode for records on JVM targets, fixes
tests/test/jvm/tpvar.pp after r23417

git-svn-id: trunk@23430 -
2013-01-17 19:45:09 +00:00
paul
65cbb4e9ba compiler: calculate offset of record fields in taddrnode (based on patch of Jeppe Johansen, fixes bug #0019357)
git-svn-id: trunk@23428 -
2013-01-17 14:30:55 +00:00
paul
3a3c10a474 compiler: don't allow constants, methods, class members and properties for local or anonymous records (fixes bug #0023000)
git-svn-id: trunk@23421 -
2013-01-17 09:05:59 +00:00
marco
146011d523 * two constants added.
git-svn-id: trunk@23420 -
2013-01-17 08:46:39 +00:00
pierre
53b65300a6 + Add mips-linux gcc compiled objects
git-svn-id: trunk@23419 -
2013-01-17 08:24:07 +00:00
pierre
dcd3783c6e + mispel-linux gcc compiled objects added
git-svn-id: trunk@23418 -
2013-01-17 08:21:24 +00:00
paul
4d79a44e4c compiler: don't create loadvmtaddrnode for record references, they have no VMT (fixes bug #23130)
git-svn-id: trunk@23417 -
2013-01-17 07:30:00 +00:00
paul
890e91ab8c tests: fix test after allowing record helpers to have constructors
git-svn-id: trunk@23416 -
2013-01-17 01:45:05 +00:00
florian
cad1309935 * don't write directly to the function result destination if we are inlining and if the destination is too complex to evaluate (threadvar etc.)
git-svn-id: trunk@23415 -
2013-01-16 20:25:49 +00:00
florian
247d6dd394 + implemented a tcasenode.printnodetree printing all cases
git-svn-id: trunk@23414 -
2013-01-16 20:24:56 +00:00
florian
abfa6c1b43 * redo LsrAnd2Lsr optimization
git-svn-id: trunk@23413 -
2013-01-16 20:24:07 +00:00
sekelsenmat
0921df3191 Fixes a spelling mistake in TFPCustomFont
git-svn-id: trunk@23411 -
2013-01-16 15:10:42 +00:00
masta
fe520c215b New ARM Peephole optimizer FoldShiftLdrStr
This one folds
      mov r1, r2, lsl #2
      ldr/ldrb r0, [r0, r1]
into
      ldr/ldrb r0, [r0, r2, lsl #2]

There is still some room for improvement, maybe it would be better to do this before
the register allocator runs, as we'll currently waste a register (r1 in the above example)
in many cases. That would also allow to to fold more operations, because currently if r2
gets reused between the mov and ldr we'll not be able to do the optimization.

git-svn-id: trunk@23408 -
2013-01-16 14:37:28 +00:00
paul
e9615716c1 compiler: allow constructors in helpers for records
git-svn-id: trunk@23407 -
2013-01-16 13:47:22 +00:00
michael
cce67cf5ae * Fixed case where connection is closed gracefully (Bug ID 23386)
git-svn-id: trunk@23403 -
2013-01-16 10:57:47 +00:00
pierre
2b300ec2b4 Add breakpoint at Verbose.GenerateError procedure
git-svn-id: trunk@23399 -
2013-01-16 09:46:34 +00:00
pierre
6d8b1e03d7 Increase status.errorcount only inside GenerateError procedure, to simplify debugging
git-svn-id: trunk@23398 -
2013-01-16 09:45:57 +00:00
Almindor
235bda8746 * remove old cdecl record hack, fixes linker errors with aspell on mac os x
git-svn-id: trunk@23397 -
2013-01-16 04:44:49 +00:00
paul
38da152b11 tests: fixed test
git-svn-id: trunk@23396 -
2013-01-16 03:46:35 +00:00
paul
b2a613c17f compiler: implement record constructors + tests
git-svn-id: trunk@23395 -
2013-01-16 02:07:42 +00:00
paul
51825b6f2e compiler: change ret_in_param to accept tabstractprocdef instead of tproccalloption to allow check more options (required for record constructor implementation)
git-svn-id: trunk@23394 -
2013-01-16 01:14:23 +00:00
sergei
4c84febfae * InterlockedIncrement/Decrement must return the modified value, not the initial one. Fixes a number of interface memory leaks in MIPS test suite. The functions remain not thread-safe yet.
git-svn-id: trunk@23393 -
2013-01-15 19:17:57 +00:00
sergei
b35d04ffa8 * MIPS: methodpointers must be compatible with records; since records are never passed by address in this ABI, so must be methodpointers. Fixes webtbs/tw9141.pp.
git-svn-id: trunk@23392 -
2013-01-15 19:09:19 +00:00
sergei
d2758265e3 * MIPS int->real conversion: When converting unsigned to single, load it into 64-bit FP register, otherwise further subtracting a 64-bit offset leads to invalid result. Fixes tw17714.pp.
* The addend is endian-dependent, fixes tcnvint4.pp on big-endian targets.

git-svn-id: trunk@23388 -
2013-01-15 10:49:37 +00:00
sergei
b5eecab582 * Procvars (methodpointers) must be treated as records, too. Fixes tw12318.pp and tw14155.pp after r23377.
* Factored related code into a separate method, as it will probably need further refinement.

git-svn-id: trunk@23387 -
2013-01-15 10:39:14 +00:00
svenbarth
c7a9e17bc5 Patch by Vasiliy Kevroletin. Fixes Mantis #23655.
compiler/node.pas, tnode.printnodeinfo:
  * write flags to file "t" instead of stdout

git-svn-id: trunk@23384 -
2013-01-15 06:04:10 +00:00
svenbarth
ccecf2c13c Fix comparisons (aka usage of flag/CCR register)
m68k/aasmcpu.pas, taicpu.spilling_get_operation_type:
  * add all Sxx instructions as "operand_write" instructions

m68k/n68kadd.pas, t68kaddnode.getresflags:
  * use the correct operation in case of swapped nodes

m68k/cgcpu.pas, tcg68k.g_flags2reg:
  - don't move a 0 to the register, because this will CLR it and thus the flags won't be valid anymore...
  - NEG would have been the wrong operation (NOT would have been correct), but it isn't needed anyway...
  * simplify the method by handling the address register case only when necessary

git-svn-id: trunk@23383 -
2013-01-14 20:31:15 +00:00