Commit Graph

21568 Commits

Author SHA1 Message Date
florian
644c47e121 * when deciding about the case code generation in case of size optimization, the number of labels is relevant, not the covered range, resolves #34818
git-svn-id: trunk@40851 -
2019-01-13 10:32:00 +00:00
florian
b223d1c304 * modified patch by Gareth Moreton to make ie unique, resolves #34849
git-svn-id: trunk@40849 -
2019-01-12 14:44:54 +00:00
florian
8fceba4493 * properly allocate parameter registers for constants on avr, resolves #33932
git-svn-id: trunk@40848 -
2019-01-12 13:28:09 +00:00
pierre
1b16ff3629 Change default debugging format for x86_64-haiku to dwarf-2, as stabs is normally disabled on 64-bit systems
git-svn-id: trunk@40835 -
2019-01-10 14:40:05 +00:00
pierre
3e2b102a44 Add missing support for -PriscvXX and -Psparc64
git-svn-id: trunk@40833 -
2019-01-10 12:18:22 +00:00
pierre
22ea2bd624 Avoid warnings with -O4 option
git-svn-id: trunk@40821 -
2019-01-09 22:48:08 +00:00
Jonas Maebe
2b3fb18327 * fixed thlcg2ll.location_force_mmregscalar() after r40633
git-svn-id: trunk@40810 -
2019-01-08 19:23:20 +00:00
Károly Balogh
9ce876e2ae haiku: move i386 also to internal sysinit
git-svn-id: trunk@40791 -
2019-01-07 12:58:02 +00:00
Jonas Maebe
51e68eb302 * fixed several places where the interface crc could change:
o unsetting po_inline while parsing the implementation for various reasons
     (interprocedural goto/label, accessing a local in a parent frame,
      having nested procedures)
   o instead handle this via the pio_inline_not_possible flag
   o noreturn can no longer be specified only in the implementation

git-svn-id: trunk@40789 -
2019-01-06 20:35:56 +00:00
Jonas Maebe
b2b34338e5 * give an error when trying to call an object instance method via a type node
(mantis #34821)

git-svn-id: trunk@40785 -
2019-01-06 15:21:36 +00:00
Jonas Maebe
170ec00348 - removed withnode (was no longer used since a very long time)
git-svn-id: trunk@40777 -
2019-01-05 22:28:37 +00:00
Jonas Maebe
91d5457b38 * moved around/replaced the following procedures to stop nflw from depending
on pdecsub (node units should not depend on parser units):
   o maybe_add_public_default_java_constructor()
   o handle_calling_convention()
   o create_finalizer_procdef() (replaced with create_outline_procdef())
   o insert_record_hidden_paras()
   o handle_calling_convention()
   o proc_add_definition()
   o build_parentfpstruct()
   o maybe_guarantee_record_typesym()
   o get_first_proc_str()
  * factored out the creation of a procinfo for a nested procdef based on a
    subnodetree of the current procdef into tprocinfo.create_for_outlining()

git-svn-id: trunk@40773 -
2019-01-05 16:26:33 +00:00
Jonas Maebe
28df55fe08 * moved handle_calling_convention() to pparautl
git-svn-id: trunk@40772 -
2019-01-05 16:26:29 +00:00
Károly Balogh
5182dc37af haiku-x86_64: regenerated all Makefiles, take 2
git-svn-id: trunk@40758 -
2019-01-04 03:18:42 +00:00
Károly Balogh
0d8ef46195 haiku: linker support code for internal sysinit and make the x86_64 port use it
git-svn-id: trunk@40756 -
2019-01-04 03:00:03 +00:00
Károly Balogh
2f7fe0e737 haiku-x86_64: add target to the compiler and ppudump, enable it in fpmake and fpcmake
git-svn-id: trunk@40753 -
2019-01-04 02:16:24 +00:00
Károly Balogh
1d7486748a tabs to spaces cleanup. no functional change
git-svn-id: trunk@40752 -
2019-01-04 01:35:36 +00:00
svenbarth
04bbfd1746 * fix for Mantis #27378: save and (more importantly) restore verbosity when switching a unit
+ added test

git-svn-id: trunk@40750 -
2019-01-03 20:31:34 +00:00
florian
10ab893de3 * improved explanation for warning 9034
git-svn-id: trunk@40749 -
2019-01-03 17:38:27 +00:00
florian
2ba239ea6d * more robust fix of #27543
git-svn-id: trunk@40746 -
2019-01-02 16:14:18 +00:00
florian
e7c4fccf41 * patch by Simon Ameis: adds mcu STM32F091* to compiler unit t_embed.pas; thus internal error 200902011 is not raised anymore, resolves #34570
git-svn-id: trunk@40742 -
2019-01-01 23:16:07 +00:00
Jonas Maebe
a72a12eef6 * don't emit 0-sized parameters for LLVM: clang doesn't either, and some
LLVM backends (like the AArch64 one) trigger internal errors when
    encountering them

git-svn-id: trunk@40736 -
2019-01-01 16:55:41 +00:00
Jonas Maebe
4d03f3a65e * fixed LLVM memory leaks
git-svn-id: trunk@40732 -
2019-01-01 16:22:31 +00:00
Jonas Maebe
ff8ccb06e5 * changed reverseparameters() from function into procedure: it does not make
sense as a function (the original input needed to be replaced by its
    result to make any sense), and someone already mistakenly used it like that
    in htypechk causing a bug/memory leak

git-svn-id: trunk@40729 -
2019-01-01 15:08:40 +00:00
florian
a2cee252e8 * when optimizing range checks in case nodes, unsigned comparisions must be used, resolves #34782
git-svn-id: trunk@40721 -
2019-01-01 01:11:13 +00:00
nickysn
635a6c7ef8 * fixed msdos .com file generation
git-svn-id: trunk@40720 -
2018-12-31 17:41:31 +00:00
florian
bd4b7a6bc4 * more case fixes
git-svn-id: trunk@40706 -
2018-12-29 21:53:52 +00:00
florian
f6e32ae90e * (modified) path by Gareth Moreton to fix case handling
git-svn-id: trunk@40686 -
2018-12-28 20:56:43 +00:00
Jonas Maebe
df598f1868 * update alignment values for Darwin
git-svn-id: trunk@40684 -
2018-12-28 19:01:11 +00:00
Jonas Maebe
7b313a2c15 * stop searching for methods to implement interfaces in parent classes after
encountering a method with the correct name that does not have the
    "overload" directive (same logic as when looking for a call candidate,
    to avoid errors when using a Pascal-level wrapper to call interface
    methods, and Delphi-compatible since it always required "overload" for
    overloaded methods)
   o also catches calling convention mismatches like in webtbs/tw27349

git-svn-id: trunk@40683 -
2018-12-28 18:25:58 +00:00
Jonas Maebe
dee1056546 * fixed wrong change of jumpalignmax from 10 to 16 in previous commit
o renamed jumpalignmax and coalescealignmax to jumpalignskipmax/
     coalescealignskipmax to better reflex the meaning of these setting
     (and the difference in meaning to e.g. constalignmax)

git-svn-id: trunk@40682 -
2018-12-28 13:22:50 +00:00
Jonas Maebe
9a797b9f49 * changed maxjumpalign:10 to 16
* changed (max)jumalign for Darwin/x86_64 from 0 to 16

git-svn-id: trunk@40681 -
2018-12-28 12:06:46 +00:00
florian
9c03c29856 * not all targets support the tls-model switch, use it only if section thread vars are used
git-svn-id: trunk@40680 -
2018-12-27 23:14:38 +00:00
florian
ce81e50907 * better code alignment for x86_64-win64 and x86_64-linux
git-svn-id: trunk@40679 -
2018-12-27 22:07:30 +00:00
florian
917de001d6 * patch (slighly modified) by Christo Crause to write 16 bit registers on avr in hi/lo order, resolves #34721
git-svn-id: trunk@40678 -
2018-12-27 21:41:36 +00:00
florian
a7c347fe56 * pass used tls model to the assembler
git-svn-id: trunk@40677 -
2018-12-27 20:54:14 +00:00
florian
7f5c2fa3aa * (modified) patch by Gareth Moreton: Speed improvement in case blocks, 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: trunk@40676 -
2018-12-27 18:31:55 +00:00
svenbarth
539ed761ba * a property access list must only consist of record or object fields; classes are not allowed
git-svn-id: trunk@40656 -
2018-12-26 11:26:01 +00:00
svenbarth
4afe3c6788 * regenerate msg*.inc files after addition of error message
git-svn-id: trunk@40655 -
2018-12-26 11:25:57 +00:00
svenbarth
425e9114f5 + add error message that a record or object type is required
git-svn-id: trunk@40654 -
2018-12-26 11:25:53 +00:00
Jonas Maebe
d75ba7cb11 * suppress notes about unused $nestedvars local variable
git-svn-id: trunk@40648 -
2018-12-25 18:22:41 +00:00
Jonas Maebe
9c6838ecca * do not allow implementing interface methods using methods that are not
visible in the current class

git-svn-id: trunk@40645 -
2018-12-25 17:51:30 +00:00
Jonas Maebe
b840db7228 * addition to r40631: also force inline self parameters that are already in
a temp into a new temp for LLVM, so their type gets updated

git-svn-id: trunk@40642 -
2018-12-25 15:36:28 +00:00
Jonas Maebe
f754978540 * handle constructor function results that have been migrated to the
parentfpstruct the same as regular function results (see r32687)

git-svn-id: trunk@40641 -
2018-12-25 15:36:24 +00:00
Jonas Maebe
70cadc7694 * fixed string constant length when going from utf-8 to single-byte code page
(mantis #33666, patch by engkin)

git-svn-id: trunk@40637 -
2018-12-24 22:21:40 +00:00
Jonas Maebe
c9a7afe053 * in constructors, free the temp holding self only after loading the function
result, as self is the function result there (follow up to 40501)

git-svn-id: trunk@40635 -
2018-12-24 22:10:09 +00:00
Jonas Maebe
acf02ab64b * when creating wrappers, add a prefix to parameter names to prevent them
hiding the method name of the wrapped routine
   o also add a few more '&' prefixes to the generated wrapper code to
     prevent issues when keywords are used as identifiers

git-svn-id: trunk@40634 -
2018-12-24 22:10:06 +00:00
Jonas Maebe
377d4e1b58 * make the size parameter of thlcgobj.location_force_mmregscalar() a
var-parameter, as the size sometimes gets changed in this routine and
    high level code generators don't use the location.size but the def

git-svn-id: trunk@40633 -
2018-12-24 22:10:02 +00:00
Jonas Maebe
f3d831b480 * fixed result cgsize of LLVM's second_nothing type conversion node (new
size instead of original size, which can be different in case of going
    from void to something else)

git-svn-id: trunk@40632 -
2018-12-24 22:09:58 +00:00
Jonas Maebe
eb769e3859 * force pointer-based self parameters of inlined routines in temps for LLVM
to ensure that their type gets updated

git-svn-id: trunk@40631 -
2018-12-24 22:09:55 +00:00