svenbarth
7089677a22
* change RecInitTable into a direct reference to avoid an unnecessary indirection as both the full and init RTTI of a record always reside inside the same unit
...
git-svn-id: trunk@35128 -
2016-12-14 18:40:16 +00:00
svenbarth
e580e22576
* extend ref_rtti() with the possibility to use a direct reference if really desired
...
git-svn-id: trunk@35127 -
2016-12-14 18:38:54 +00:00
svenbarth
12dba952f0
* integration of Part 2 patch of Mantis #30687 with a few adjustments:
...
- indentation in ncgrtti.pas
- fewer ifdefs in rtti.inc
- InitTable/Terminator field as first field to avoid padding on targets that require proper alignment and have SizeOf(Pointer) > 4
Original message by Maciej Izak:
Breaking change for rtti layout for record rtti. Init table
is always accessible from regular rtti. Rtti table contains indirect
reference to init table, additionally init table contains nil-terminator (for
rtl purposes - the only way to determine kind of info : init or rtti). Pros:
* will be possible to create more Delphi compatible code for RTTI, finally end-user can access to *real* managed fields of records (some work on TypInfo.pp is still required but is not necessary).
* important step forward for management operators (anyway this commit is not directly related to management operators)
* much more optimal memory allocation/initialization/finalization for records created/destroyed by InitializeArray/FinalizeArray, for example:
type
TBar = record
f1,f2,f3,f4,f5,f6,f7,f8,f9: byte;
s: string;
end;
previously:
GetMem(PB, SizeOf(TBar));
InitializeArray(PB, TypeInfo(TBar), 1); // FPC_INITIALIZE was executed 10 times
now:
GetMem(PB, SizeOf(TBar));
InitializeArray(PB, TypeInfo(TBar), 1); // FPC_INITIALIZE is executed just once
+ test attached
git-svn-id: trunk@35125 -
2016-12-13 23:03:11 +00:00
marco
d2fe24ae20
* fix some more occured->occured
...
git-svn-id: trunk@35120 -
2016-12-13 12:55:32 +00:00
Károly Balogh
d52c75ba17
powerpc: clean up and simplify the PPC version of the VASM writer (based on the 68k version), and also enable it for AmigaOS4/PPC and Linux/PPC
...
git-svn-id: trunk@35117 -
2016-12-12 23:36:06 +00:00
Károly Balogh
026f0e99f3
m68k: made the vasm writer use the right section attributes, but disabled named sections until some vlink issues are sorted out
...
git-svn-id: trunk@35116 -
2016-12-12 22:46:47 +00:00
Károly Balogh
f1f18d6f83
aggas: removed a bunch of amiga related hacks which are unnecessary if those systems use an aout GAS writer. made it possible to inject sectionattrs in a generic way
...
git-svn-id: trunk@35115 -
2016-12-12 22:44:36 +00:00
Károly Balogh
2dc1d681c2
m68k: inherit the aout assembler writer instead of the normal one for amiga and atari. this allows to remove some of the previously added hacks in the generic writer
...
git-svn-id: trunk@35114 -
2016-12-12 22:41:53 +00:00
svenbarth
22e579cc74
* fix for Mantis #31107 : disallow calling of ordinary record methods using the record's type.
...
git-svn-id: trunk@35113 -
2016-12-12 22:08:28 +00:00
Károly Balogh
4e51dc2298
m68k: enable named sections for vasm generated objects. have a separate as_m68k_as_aout for a.out objects which doesn't have named sections. amiga and atari gas defaults to a.out, so have it default on these systems. finally enable section smartlinking for amiga and atari, which will be used with vasm assembler
...
git-svn-id: trunk@35112 -
2016-12-11 23:27:24 +00:00
Károly Balogh
66e651bed0
m68k: build fix
...
git-svn-id: trunk@35111 -
2016-12-11 16:49:03 +00:00
Károly Balogh
1dd375cd61
powerpc: improved version of int_to_bool casting. now both also passes the improved version of tb0625
...
git-svn-id: trunk@35109 -
2016-12-11 16:00:27 +00:00
Károly Balogh
df38fd18e0
m68k/powerpc: improved version of int_to_bool casting. now both also passes the improved version of tb0625
...
git-svn-id: trunk@35108 -
2016-12-11 15:43:58 +00:00
Károly Balogh
288a39d86e
m68k: indentation fixes. no functional changes.
...
git-svn-id: trunk@35106 -
2016-12-11 03:58:41 +00:00
Károly Balogh
15f67e6f5b
m68k: in int to bool conversion, only try to zero/sign extend the value, if the destination is actually larger than the source
...
git-svn-id: trunk@35105 -
2016-12-11 03:57:55 +00:00
svenbarth
5fa181b5d9
* second fix for Mantis #31033 : also check for df_specialization instead of is_specialization for parameters to correctly handle nested types that aren't really true specializations themselves
...
+ added additional test
git-svn-id: trunk@35103 -
2016-12-10 19:47:09 +00:00
svenbarth
0c372f0beb
* fix compilation of Rtti unit on PowerPC: converting a Int64 to a Boolean failed (in this case with an internal error)
...
+ added a test though we should probably extend tcnvint2.pp to test converting ints to different sized boolean types...
git-svn-id: trunk@35101 -
2016-12-10 19:13:07 +00:00
svenbarth
d133f210ca
* correct comment, cause forward declarations for generic functions *do* indeed work (cause they use the same mechanism as forward definitions in the interface section)
...
git-svn-id: trunk@35093 -
2016-12-09 16:24:17 +00:00
svenbarth
52673d34f1
* fix for Mantis #31033 : don't check for is_specialization(), but for df_specialization (this way we also get pointers or nested types that aren't by themselves real specializations)
...
+ added test
git-svn-id: trunk@35092 -
2016-12-09 16:22:14 +00:00
svenbarth
f8c23c84b6
* have pointerdefs and classrefdefs "inherit" the df_generic and df_specialization flags from the def they point to and set the genericdef accordingly
...
git-svn-id: trunk@35091 -
2016-12-09 16:20:36 +00:00
Jonas Maebe
18077d9530
* when determining the best candidates for overloaded method calls, apply
...
the scope penalty relative to the nearest symtable that contains one of
the applicable overloads, rather than relative to the nearest symtable
that simply contains a method with this name (based on patch by
Maciej Izak, mantis #25607 )
git-svn-id: trunk@35089 -
2016-12-09 13:39:42 +00:00
Jonas Maebe
04f7e47df7
* create stubs for library exports on Unix at at the node tree level instead
...
of using thlcg.g_external_wrapper() for high level targets, because that
way the creation of a new procdef for this stub and adding appropriate
entry/exit code can be handled using the standard compiler infrastructure
(fixes webtbs/tw8730* for LLVM)
git-svn-id: trunk@35088 -
2016-12-09 13:39:38 +00:00
Jonas Maebe
d36fe53d85
* factored out the code to create an complete alias for a procdef to
...
symcreat.create_procdef_alias()
git-svn-id: trunk@35087 -
2016-12-09 13:39:35 +00:00
Jonas Maebe
8af85a16b3
* document finish_copied_procdef()
...
git-svn-id: trunk@35086 -
2016-12-09 13:39:31 +00:00
Jonas Maebe
472b5228fe
* changed ncgutil.has_alias_name(pd,s) to a method of tprocdef
...
git-svn-id: trunk@35085 -
2016-12-09 13:39:28 +00:00
florian
1e374df5b8
* correctly calculate the bit mask in thlcgobj.a_load_regconst_subsetreg_intern, resolves #31042
...
* convert immediates on x86 always to 32 (x86-64, i386) or 16 bit (i8086) signed values
git-svn-id: trunk@35082 -
2016-12-07 20:08:22 +00:00
sergei
8173efff3e
* x86 asm reader: Don't copy operand size to instruction size for MOVSS and VMOVSS, because it is different for source and destination. Fixes breakage caused by fixing memory size of those instructions (Mantis #29954 and Mantis #29957 ).
...
+ Tests are extended to check that both OPR_LOCAL and OPR_REF memory operands compile without warnings as source and destination, in both Intel and AT&T syntax.
git-svn-id: trunk@35081 -
2016-12-07 14:08:28 +00:00
svenbarth
a23cfd9a85
* regenerate msgidx.inc and msgtxt.inc after r35079; thankfully that didn't break the build this time since it was merely a text change ^.^'
...
git-svn-id: trunk@35080 -
2016-12-07 07:38:01 +00:00
svenbarth
d499163ef5
* provisional fix for Mantis #31076 : fail gracefully instead of with an internal error if a generic method is declared inside a generic class or record. This will change once we support nested generics however.
...
* adjusted error message to reflect that we're not only dealing with generic classes
+ added test; note: it's added in webtbs, cause the test will loose its %FAIL attribute in the future
git-svn-id: trunk@35079 -
2016-12-06 22:26:53 +00:00
svenbarth
70817baf98
* since we already allow inline specializations in mode ObjFPC due to generic functions it's only consequential to also allow specializations after pointers (they are already allowed in mode Delphi).
...
+ added tests
* tgeneric87.pp and tgeneric88.pp are no longer considered as tests that should fail
git-svn-id: trunk@35078 -
2016-12-06 21:37:22 +00:00
Károly Balogh
788c622307
amiga: pascal startup code for 68k and buildrtl refactor
...
git-svn-id: trunk@35068 -
2016-12-04 18:21:24 +00:00
marcus
bebef242d4
AROS: Initial ABIv1 Support
...
git-svn-id: trunk@35066 -
2016-12-04 15:41:35 +00:00
Jonas Maebe
f55d962e40
* use system.round() instead of LLVM's fptosui operation for converting a
...
floating point type to currency, as fptosui is defined as always rounding
to zero while on other platforms we use the FPU's current rounding mode
(fixes webtbs/tw21449 for LLVM, and also webtbs/tw24197 because LLVM's
code generated for fptosui temporarily changes the FPU control word so
it rounds to zero and also to disable FPU exceptions)
git-svn-id: trunk@35061 -
2016-12-04 11:15:22 +00:00
Jonas Maebe
8b1c90124e
* support encoding helper types for LLVM (encode the same type as the
...
extended class) (fixes webtbs/tw21457 for LLVM)
git-svn-id: trunk@35060 -
2016-12-04 11:15:19 +00:00
Jonas Maebe
a0b537bc7b
* fixed typed constants that use an integer number to initialise a procvar or
...
pointer on LLVM (fixes webtbs/tw21267)
git-svn-id: trunk@35059 -
2016-12-04 11:15:15 +00:00
Jonas Maebe
2e9c6f35ae
- disable -Ooregvar for the LLVM-based x86-64 code generator, as it causes
...
internalerrors there and fixing it doesn't make sense since LLVM will take
care of that anywaya
git-svn-id: trunk@35058 -
2016-12-04 11:15:12 +00:00
Jonas Maebe
a2017b2327
* don't keep tc_equal type conversions for LLVM in case the resultdef doesn't
...
change, since then we definitely don't have to insert a type conversion at
the LLVM level either (fixes webtbs/tw1901 for LLVM)
git-svn-id: trunk@35057 -
2016-12-04 11:15:09 +00:00
Jonas Maebe
a8e107bb4b
* fix memory leak: free rg[R_MMREGISTER]
...
git-svn-id: trunk@35056 -
2016-12-04 11:15:05 +00:00
Károly Balogh
f3e33a9dde
morphos: new pascal-written internal startup code. also refactored the rtl build process for morphos
...
git-svn-id: trunk@35054 -
2016-12-04 00:15:41 +00:00
Károly Balogh
8c4e5e0610
bump PPU version due to the latest syscall changes
...
git-svn-id: trunk@35048 -
2016-12-03 19:01:11 +00:00
Károly Balogh
0cb555c07c
syscalls: move the reference implementation of parseparaloc to paramgr. removes two identical copies from CPU specific code and enables basereg convention for AROS/x86_64. also, other minor fixes and cleanups in related code.
...
git-svn-id: trunk@35047 -
2016-12-03 19:00:41 +00:00
Jonas Maebe
ba33da711a
* fixed compilation after r35034
...
- removed commented-out uses statement
git-svn-id: trunk@35046 -
2016-12-03 08:48:01 +00:00
Jonas Maebe
8c167f4e40
* handle already quoted symbol names for LLVM (like for Objective-C)
...
git-svn-id: trunk@35045 -
2016-12-02 18:04:14 +00:00
Jonas Maebe
876e5eab56
* fixed "smart linking" parameters to llc
...
git-svn-id: trunk@35044 -
2016-12-02 17:45:12 +00:00
Jonas Maebe
f26ed10ba1
* same as r27223 for hlcgobj (fixes webtbs/tw25895 for llvm)
...
git-svn-id: trunk@35043 -
2016-12-02 17:45:09 +00:00
Jonas Maebe
02e4a27a35
* print internalerrors in case we still encounter stray constants not part of
...
a typed constants
* don't print superfluous newlines in typed constant definitions
git-svn-id: trunk@35042 -
2016-12-02 12:33:09 +00:00
Jonas Maebe
db40e1575d
+ support for handling the tcalo_no_dead_strip flag when targeting LLVM:
...
add such symbols to the pseudo-arrays llvm.compiler.used or llvm.used
depending on their nature (fixes compiling Objective-C programs with
optimization, and keeps the FPC ident in the linked binary)
git-svn-id: trunk@35041 -
2016-12-02 12:33:05 +00:00
Jonas Maebe
e62cb7917e
+ support for setting the "appending" flag of declaration generated via an
...
LLVM typed constant builder through a new appendingdef property
git-svn-id: trunk@35040 -
2016-12-02 12:33:02 +00:00
Jonas Maebe
97d6f17cc8
+ add support for marking an LLVM definition as using "appending" linkage
...
git-svn-id: trunk@35039 -
2016-12-02 12:32:58 +00:00
Jonas Maebe
d328d7d95d
* don't write an alignment for symbols in internal llvm sections (sections
...
whose name starts with 'llvm.')
git-svn-id: trunk@35038 -
2016-12-02 12:32:54 +00:00