path: root/ir/tr
Commit message (Collapse)AuthorAge
* riscv: add support for variadic functionsJohannes Bucher2019-10-24
| | | | | | lowering of builtin va_arg still uses the be_default_lower_va_arg function which is not correct due to the alignment requirements of variadic arguments; a RISC-V specific implementation is needed
* store the index of the first variadic parameter in method typesJohannes Bucher2019-10-18
* Fix typos in commentsChristoph Erhardt2017-12-15
* Reorganize include directivesMatthias Braun2017-02-17
* tr: Do not set pointer-mode-like attributes for new method types.Christoph Mallon2016-12-22
| | | | Methods are not pointers, so using mode_P and its size do not make sense.
* Add missing function arguments in type verifier.Manuel Mohr2016-12-22
* tr: Remove the concept of 'higher type'.Christoph Mallon2016-09-18
| | | | A higher type was set in a few places, but not used otherwise.
* Set the additional properties right when construction a method type.Christoph Mallon2016-07-11
* Set the calling convention right when construction a method type.Christoph Mallon2016-07-11
* Remove the unnecessary functions ↵Christoph Mallon2016-07-11
| | | | | | 'get_{class,segment,struct,union}_{ident,name}()'. Just use 'get_compound_{ident,name}()' instead.
* Remove the unused function 'find_pointer_type_to_type()'.Christoph Mallon2016-06-27
| | | | It was only used by the class casst optimization, which was removed almost four years ago.
* Remove 'tf_variable_size'.Christoph Mallon2016-06-27
| | | | Just check that the size of the array is 0 instead.
* Slightly simplify default_layout_compound_type().Christoph Mallon2016-06-27
| | | | 'align_all' always is at least 1.
* Remove the attribute 'visibility' from 'ir_type'.Christoph Mallon2016-06-14
| | | | It is unused.
* Remove the functions for 'atomic entities'.Christoph Mallon2016-06-12
| | | | | | | | | | * 'get_atomic_ent_value()' is a wrapper, which tries to unify the different kind of initalizers by wastefully creating nodes on demand. It had only a single user, which tried to use it for method entities, which does not work anymore (see 3rd bullet point). * 'set_atomic_ent_value()' is a thin and unnecessary wrapper to set a const node initializer. * 'is_atomic_entity()' classifies entities having (among primitive and pointer types) method type as having an atomic initializer. They do not for a long time (was an address of itself). Except for the two functions above, this function is unused. * 'Atomic' is a misnomer and should rather be 'scalar'.
* Avoid 'bool' in public headers.Christoph Mallon2016-05-25
* tr: Remove the write-only type flags 'tf_global_type' and 'tf_tls_type'.Christoph Mallon2016-05-23
* tr: Set variadicity directly when creating method types.Christoph Mallon2016-05-22
* tr: Simplify array types.Christoph Mallon2016-05-17
| | | | | The length is now set on creation. Neither length nor element type can be changed later on.
* Fix indentationSebastian Buchwald2016-05-12
* tr: Also set the ld_name in clone_entity().Christoph Mallon2016-05-05
| | | | | This prevents triggering the unique name check in add_compound_member(). This partially fixes opt/proc_cloning001.c.
* cleanup: Remove unnecessary calls to alter an entity right after creating it.Christoph Mallon2016-05-02
* tr: Reduce code duplication.Christoph Mallon2016-04-29
* bespillslots: Change spillslot collection API to take size+alignMatthias Braun2016-04-25
| | | | | | | | | | | | Taking explicit size+po2align makes things easier compared to the previously used ir_type: ir_type* is a middleend concept not everything in the backend is represented as a type/mode anymore (x86_insn_size_t). Furthermore we only respected size+alignment of that type anyway, additional semantics would be unexpectedly ignored. It also simplifies the code in some places. This should also naturally fix a problem in 188.amp where we wrongly passed the type for mode_Ls instead of the type for mode_D before.
* be: Rewrite stack frame handlingMatthias Braun2016-04-04
| | | | | | | | | | | | | | | | | | | | This is a bigger rewrite of stack frame handling in the backend: - Do the stack frame type layout late, after all the spill slots have been created. This way we can avoid (and remove) the brittle frame_alloc_area(). - Standardize the meaning of stack entity offsets. After stack frame type layout they are relative to the stack pointer position at the beginning of the function. It is all in one type now, no splitting into "arg", "between" and "stack_frame" type anymore. - Generalize the stack pointer simulation code to work with a single callback. Represent stack state as current offset and align_padding number. Now that callbacks can access and modify them both we do not need custom code in the sparc backend anymore. - Remove alignment specification on IncSP, only keep a ignore_align flag used for the last IncSP that has to remove all existing sp adjustments and may end up on a misaligned SP on ia32/amd64. - Align stack by default on ia32+amd64 backends.
* entity: Introduce spillslot entitiesMatthias Braun2016-04-04
| | | | They are not used yet as we need an adapted layout algorithm for them.
* Use ir_printf("%F") instead of printf("%s",get_entity_name())Matthias Braun2016-02-29
* entity: Don't set names for some internal entitiesMatthias Braun2016-02-14
| | | | | We can just as well make up names on the fly while printing the entities for debugging.
* entity: uint16_t ought to be enough for any bitfield descriptionMatthias Braun2016-02-14
* entity: Introduce INVALID_OFFSET constantMatthias Braun2016-02-14
| | | | | | The soon to be introduced spillslot entities can be at negative offset, so the previously used -1 as convention for invalid offsets is not a good idea anymore.
* entity: Rename kind to firm_tag and entity_kind to kindMatthias Braun2016-02-14
* Rename get_type_{size|alignment}_bytes() to get_type{size|alignment}()Matthias Braun2016-02-14
* avoid overly short names for type_t attribute union membersMatthias Braun2016-02-13
* Use round_up2() more often and cleanup its implementationMatthias Braun2016-02-13
* bejit: Introduce brand new jit infrastructureMatthias Braun2016-02-01
* tr: Replace copy_entity_own()/copy_entity_name() with a new clone_entity()Matthias Braun2016-01-30
* Correct typo introduced in 3e8544aa0a0f41a6700a829f50ec94d3b579b518.Andreas Fried2016-01-27
* verifier gives a little bit more infoAndreas Zwinkau2016-01-14
* Fix indentation.Sebastian Buchwald2016-01-08
* Fix typos: datastructure -> data structure.Sebastian Buchwald2015-12-21
* Refactor for less indentationAndreas Zwinkau2015-12-18
* Fix add_compound_memberAndreas Zwinkau2015-12-18
| | | | | | | | | | | | | The added unittest was failing and also x10i. Frontend moves global entity into class for native method calls. liboo lowering moves it back during vtable creation. The issue is that "pmap_insert(map,key,NULL)" does not delete an entry, so "pmap_contains(map,key)" afterwards does not return false. This changes add_compound_member to assert a NULL value instead of a NULL entry. A similar error might be in ir/be/bechordal.c.
* type: Ensure visibility/linkage are set on constructionMatthias Braun2015-12-14
| | | | | This is done by introducing a new new_global_entity() function for constructing globals/adding a visibility argument to new_alias_entity().
* Introduce globals mapMatthias Braun2015-12-14
| | | | | | | The map maps global symbols to the respective entities in the segment types. This should avoid hacks in some frontends, avoids a sepcial map for compilerlib entities and ensures that frontend and compilerlib entities are in sync.
* Segment types are an own kind of type nowMatthias Braun2015-12-14
| | | | | This is cleaner than having them being class types with a tf_segment flag set.
* trverify: Simplify checking of constructors,destructors,jcr segment constraintsMatthias Braun2015-12-14
* tr: Remove 'set_pointer_mode()'.Christoph Mallon2015-12-08
* Remove the whole type op conceptMatthias Braun2015-12-07
| | | | | The simple tp_opcode enum is enough, no need to have dispatch tables and information structs behind each type kind.
* Get rid of last tp_op_op and the callback structureMatthias Braun2015-12-07
* Get rid of tpop flags (we already have type flags)Matthias Braun2015-12-07