Commit Graph

135 Commits

Author SHA1 Message Date
nickysn
940738a3a1 * synchronized with trunk
git-svn-id: branches/wasm@48846 -
2021-03-01 13:21:24 +00:00
Jonas Maebe
6beb28316e * Darwin targets that don't support link order sym files can't smart link
vectorized sections

git-svn-id: trunk@48765 -
2021-02-21 21:41:09 +00:00
nickysn
ae75c87d65 * synchronized with trunk
git-svn-id: branches/wasm@48515 -
2021-02-06 08:27:24 +00:00
florian
d0910b5ac8 * allow sub/add nodes in constant pointer expressions, resolves #34027
git-svn-id: trunk@48514 -
2021-02-05 22:10:27 +00:00
nickysn
60d21bcf0d * fix llvm-mc error for string constants missing a .size directive
git-svn-id: branches/wasm@48252 -
2021-01-21 02:59:59 +00:00
Jonas Maebe
1c61c30cd2 * added "const" to some string parameters
git-svn-id: trunk@47299 -
2020-11-03 21:34:15 +00:00
florian
637976e83f * patch by Marģers to unify internal error numbers, resolves #37888
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
yury
9e11f8122f * Corrected r46481. Use both tcalo_new_section and tcalo_make_dead_strippable flags since only the default implementation implies a new section creation when tcalo_make_dead_strippable is specified.
git-svn-id: trunk@46482 -
2020-08-18 12:27:46 +00:00
yury
17e75004c5 * Allow library based smartlinking of indirect symbol entries.
git-svn-id: trunk@46481 -
2020-08-18 12:02:20 +00:00
yury
764227193a * Added on option to implement library based smartlinking of the dead stripable vectorized lists (e.g. resource strings index). By default smartlinking of such lists only supported when the section based smartlinking (tf_smartlink_sections) is enabled for a target.
git-svn-id: trunk@46479 -
2020-08-18 11:31:39 +00:00
Károly Balogh
1df56495b7 * fix a typo in a comment. no functional change
git-svn-id: trunk@45364 -
2020-05-14 15:23:27 +00:00
svenbarth
b88107fa1d * due to an apparent bug in the clang assembler for COFF when assembling ADRP instructions we can't use symbols that are offset into their section
git-svn-id: trunk@44948 -
2020-04-21 06:06:31 +00:00
Jonas Maebe
4ba19f5418 * add support for creating non-address-only procvars to
cprocvar.getreusableprocaddr()

git-svn-id: trunk@44516 -
2020-04-02 21:21:36 +00:00
yury
1b3a3a7983 * Removed lot of unused local vars. It is useful to turn on the notes in options. :)
git-svn-id: trunk@44053 -
2020-01-28 18:45:33 +00:00
Jonas Maebe
1a9e246c29 * added is_normal_fieldvarsym() helper and use it
o fixes several places where there was a check whether something is a
     fieldvarsym, but not whether it's an instance rather than a class field

git-svn-id: trunk@43786 -
2019-12-24 22:12:44 +00:00
Jonas Maebe
d8903ce6b3 - removed maxcrecordalign parameter/field from recordsymtables, as this value
cannot be modified in the settings (so we can directly use the one from
    current_settings)

git-svn-id: trunk@42447 -
2019-07-14 19:24:32 +00:00
Jonas Maebe
3fa6838815 * basic llvm metadata support
git-svn-id: branches/debug_eh@41978 -
2019-05-02 19:45:26 +00:00
Jonas Maebe
079d616978 * fixed double free in LLVM code generator after r41963
git-svn-id: trunk@41976 -
2019-05-02 19:40:00 +00:00
Jonas Maebe
97a144ea6a - removed ttypedconstkind parameter from tai_simpletypedconst constructor,
as it always has to be tck_simple anyway

git-svn-id: trunk@41975 -
2019-05-02 19:39:56 +00:00
Jonas Maebe
213b87fe91 * optimized and simplified tai_aggregatetypedconst destruction
git-svn-id: trunk@41963 -
2019-04-30 19:36:46 +00:00
Jonas Maebe
d150869dea * record symbols that need to remain in their original order, and on Darwin
pass them to the linker so it does not reorder them
   o fixes resource strings on Darwin when using LTO (this used to reorder the
     resource string symbols, so they no longer all appeared between the START
     and END symbols for their compilation module)

git-svn-id: trunk@41907 -
2019-04-20 18:18:10 +00:00
Jonas Maebe
4d03f3a65e * fixed LLVM memory leaks
git-svn-id: trunk@40732 -
2019-01-01 16:22:31 +00:00
Jonas Maebe
f87304f5ca * fixed LLVM code generator not taking into account constalignmin/max
settings for typed constants

git-svn-id: trunk@40605 -
2018-12-21 20:57:22 +00:00
Jonas Maebe
97b40dc16d * fixed dynamic array constants for llvm
git-svn-id: trunk@40383 -
2018-11-28 19:23:25 +00:00
yury
4357caaad8 * Removed unused local vars.
git-svn-id: trunk@40183 -
2018-11-02 18:44:29 +00:00
svenbarth
8bf3661f7f + add a method to emit a reference to a pooled shortstring constant (aka one per unit); very useful for new RTTI tables to avoid poluting the binary with string constants
git-svn-id: trunk@39683 -
2018-08-29 19:20:20 +00:00
pierre
a1bbd4c02d Try to avoid inserting all RTTI symbols into executables on targets not supporting smartlinked sections
git-svn-id: trunk@39121 -
2018-05-25 20:44:24 +00:00
svenbarth
2bf5c28077 + add methods begin_dynarray_const and end_dynarray_const which can be used to emit the data of a dynamic array
inbetween
+ add method emit_dynarray_offset to emit a reference to that data with the correct offset

git-svn-id: trunk@39040 -
2018-05-20 11:50:13 +00:00
svenbarth
e863245021 + add method get_dynarray_symofs to retrieve the platform specific offset of the dynamic array data from its
meta data record

git-svn-id: trunk@39039 -
2018-05-20 11:50:11 +00:00
svenbarth
d3d9221c8d + add method get_dynarray_header_size to retrieve the size of the dynamic array meta data record
git-svn-id: trunk@39038 -
2018-05-20 11:50:09 +00:00
svenbarth
2eac60cd87 * use a unique internal error
git-svn-id: trunk@39024 -
2018-05-18 14:43:31 +00:00
florian
2ad265505b * properly align unicode- and ansistring constants
git-svn-id: trunk@36545 -
2017-06-19 21:18:03 +00:00
Jonas Maebe
f3ebde999f * extracted the code to generate the indirect symbols from
finalize_asmlist() into its own method. finalize_asmlist() must not
    generate new data, as it is /the/ method that gets overridden by
    descendent classes to generate the symbol data in the format needed
    by the platform
   o fixes generation of indirect symbol data for LLVM

git-svn-id: trunk@36265 -
2017-05-19 21:52:42 +00:00
svenbarth
822d96776b * extend tai_typedconstbuilder with the ability to add an indirect symbol to the same section as the one that's generated for the constant data (at least if it's also rodata)
git-svn-id: trunk@35365 -
2017-01-29 17:39:52 +00:00
Jonas Maebe
a0c50336f3 * initialize tguid typed constants by searching for the named fields we need,
rather than assuming they appear in a fixed order in the symtable (so that
    adding e.g. record methods doesn't mess things up)

git-svn-id: trunk@35190 -
2016-12-23 20:17:09 +00:00
Jonas Maebe
827e980351 * fixed comment typo
git-svn-id: trunk@35036 -
2016-12-02 12:32:48 +00:00
Jonas Maebe
9727f289b1 + tcalo_apply_constalign option to specify that the alignment should be
modified by applying user alignment settings (so it can be only done for
    user-defined data, not not for internally generated data)
   o set this option for user-defined data

git-svn-id: trunk@34633 -
2016-10-06 06:25:05 +00:00
nickysn
6eeb6ee95a * also use sizesinttype, instead of ptrsinttype for the string reference count
and length in ttai_typedconstbuilder.get_dynstring_rec

git-svn-id: trunk@34622 -
2016-10-04 14:31:49 +00:00
nickysn
b3deb8a152 * use sizeint, instead of pint/ptrsinttype for emitting the reference count and
length of string constants

git-svn-id: trunk@34621 -
2016-10-04 14:23:44 +00:00
Jonas Maebe
4ca50bc9eb * removed optimisation to reduce the number of unnecessary section headers
in the high level typed constant builder, as it does not work if the
    passed list to start_internal_data_builder() is used for multiple
    nested builders (you can't know what the last section was) -> always
    emit a section header for a nested typed const builder

git-svn-id: trunk@34391 -
2016-08-28 22:08:00 +00:00
Jonas Maebe
a7c893064a * only don't insert passing alignment immediately for anonymous records
rather than for any anonymous aggregate, since for arrays we do know
    the alignment even if we don't know the element count (because it only
    depends on the elementdef, which is/will be set immediately)

git-svn-id: trunk@34390 -
2016-08-28 22:07:57 +00:00
Jonas Maebe
6c40105037 * fixed typo
git-svn-id: trunk@34389 -
2016-08-28 22:07:54 +00:00
Jonas Maebe
d664038aa4 * don't add ".reference" assembler directives on Darwin for symbols that are
in sections marked as "no_dead_strip"

git-svn-id: trunk@34387 -
2016-08-28 22:07:49 +00:00
Jonas Maebe
4a42d67b72 + ttai_typedconstbuilder.get_dynstring_rec() class method to get a recorddef
that represents an ansi/unicode/widestring constant of a particular length

git-svn-id: trunk@34372 -
2016-08-24 16:41:02 +00:00
Jonas Maebe
e91ba32b7c * changed the result of get_dynstring_rec_name() to TSymStr
git-svn-id: trunk@34371 -
2016-08-24 16:40:59 +00:00
svenbarth
131a7bbc67 Fix cycling.
* correctly handle tcalo_data_force_indirect in finalize_vectorized_dead_strip_asmlist()
* correctly handle tcdssso_use_indirect in get_vectorized_dead_strip_section_symbol()

git-svn-id: trunk@34193 -
2016-07-23 16:34:26 +00:00
svenbarth
4df4449933 Extend the ttypedconstbuilder's dead_stripe_section handling (get_vectorized_dead_strip_section_symbol() and finalize_vectorized_dead_strip_asmlist()) with the ability to
- register a symbol in the unit's public or extern asm symbol list
 - add an indirect symbol when defining the symbol
 - use an indirect symbol instead of the direct one
This will be needed to correctly handle resourcestrings for packages

git-svn-id: trunk@34182 -
2016-07-22 15:55:14 +00:00
Jonas Maebe
1cb8c0d00c * specify the def of assembler level symbols defined via
tasmdata.DefineAsmSymbol() and all routines that call it
   o will be used to automatically generate AB_INDIRECT sybols when
     necessary

git-svn-id: trunk@34164 -
2016-07-20 20:52:59 +00:00
Jonas Maebe
8fea7344c9 * added an extra parameter to ttai_typedconstbuilder.emit_pchar_const() to
indicate whether it should create a copy of the pchar or not

git-svn-id: trunk@34153 -
2016-07-19 14:30:36 +00:00
Jonas Maebe
8ca9ece66a * fixed buffer overrun in tai_aggregatetypedconst.add_to_string()
git-svn-id: trunk@33988 -
2016-06-15 18:31:42 +00:00