| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
including benchmark,
second part of #38806
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@49291 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@48317 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@43671 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
|
|
|
| |
generate unique calls every time we write to it
* replace calls to high(ansistring/dynarray) in the inner body of the pi
function with a variable that gets assigned once
-> the FPC version is now just as fast as the C version
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42695 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@41428 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@40710 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resolves #0034762
This patch improves the compiler where "case" statements are concerned, using jump tables more often and creating more efficient machine code in some situations:
* If a case block only contains one branch (not including the else block), the initial range check is removed, since this becomes wasted effort.
* If the else block is empty, the else label is set to the end label - though this doesn't decrease the code size, it takes a bit of strain off the peephole optimizer.
* On -O2 and above, some node analysis is now done on the branch labels. Most of the time this just redirects it to the end
label for empty blocks, but if the block contains a goto statement, it will redirect it to its destination instead,
thus increasing performance by not having multiple jumps (this won't get picked up by the peephole optimiser if the label addresses are in a jump table).
* Some checks now use what I call the 'true count' rather than the 'label count'. The true count includes each
individual value in a range - for example, 0..2 counts as 3. This increases the chance that a jump table will be
utilised in situations where it is more efficient than a linear list.
* For jump tables, if the case block almost covers the entire range (32 entries or fewer from full coverage),
the initial range check is removed and the gaps included in the jump table (pointing to the else label).
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@40676 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@40161 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@35235 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
| |
* write milliseconds correctly when not using epiktimer
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30471 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30470 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
| |
(and was never recommended)
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@24870 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
| |
+ added lpi
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@12749 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@12748 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11864 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11860 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11859 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11858 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11857 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11850 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11817 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11815 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11814 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11476 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11471 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@11091 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9691 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9677 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9676 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
|
|
|
| |
* read line in string and convert to integer using val, like gcc does
* cache input text file, to avoid calling fpc_get_input all the time.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9671 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9670 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9669 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9668 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9615 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9246 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9150 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9144 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9143 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9142 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8964 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8926 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8621 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8615 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8592 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7580 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7579 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7500 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7494 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7482 3ad0048d-3df7-0310-abae-a5850022a9f2
|
| |
|
|
| |
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@7459 3ad0048d-3df7-0310-abae-a5850022a9f2
|