path: root/ir/be/betranshlp.c
Commit message (Collapse)AuthorAge
* be, ir: For consistency memory now is the first output of ASM and be_Asm.Christoph Mallon2018-05-28
* Reorganize include directivesMatthias Braun2017-02-17
* be: Make the function to get the output position of a node for given ↵Christoph Mallon2017-01-12
| | | | register backend-generic.
* be: Factor out code to collect all parameter entities.Christoph Mallon2016-12-22
* be: Add necessary #includes in 'betranshlp.h'.Christoph Mallon2016-12-22
* be: Set the transformer for Projs of Cond and Switch in the generic backend ↵Christoph Mallon2016-12-19
| | | | | | code. All backends just copy these Projs.
* be: Make 'gen_Proj_default()' of ia32 available for all backends as ↵Christoph Mallon2016-12-19
| | | | 'be_gen_Proj_default()'.
* be: Add and use 'be_mode_needs_gp_reg()'.Christoph Mallon2016-09-18
* Rename pdeq_new.h => pdeq.hMatthias Braun2016-06-27
* Use pdeq_new instead of pdeqMatthias Braun2016-06-27
* When making an 'Add', automatically infer its mode from its operands.Christoph Mallon2016-06-07
* be: Fix matching 'Add(Address/Relocation, Const)' in 'be_match_immediate()'.Christoph Mallon2016-05-04
| | | | | It checked for Const on the wrong side, so it always failed. Then the code further down used the wrong accessor functions.
* be: Automatically set the original node name during code selection.Christoph Mallon2016-04-26
| | | | | | Now the original node name is set for all backends, not just ia32. Further, no code in the backends is needed. All new nodes, which are reachable from the returned transformed node and do not have a original node yet, automatically get assigned the original node.
* Rename be_enqueue_preds to be_enqueue_operands.Sebastian Buchwald2016-04-04
* 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.
* ir: Change get_irn_in() so it returns the first operand, not the block, at ↵Christoph Mallon2015-12-05
| | | | | | | | index 0. Except for two users, all users add 1 immediately anyway. Of the two exceptions one of them (in kill_unused_stacknodes()) is wrong, so this is now corrected. The other one is exchange(), which now just uses ->in, which is fine, since it handles node interna anyway.
* Set appropriate modes when creating parameter stores.Sebastian Buchwald2015-12-04
| | | | This fixes backend/sparc_mode.c on SPARC and ARM.
* be: Factorise code to make Syncs.Christoph Mallon2015-12-03
* irmode: rename reference_mode_unsigned_eq to reference_offset_modeMatthias Braun2015-10-18
| | | | Also choose a signed integer type which is more typical for offsets.
* irhooks: Remove some unused hooksMatthias Braun2015-09-19
* Mark node as visited before actually transforming it.Sebastian Buchwald2015-09-14
| | | | | | | | This unifies the behavior in debug and optimize build, since be_set_transformed_node also marks the node as visited. Furthermore, nobody should call be_is_transformed for the current node, since this would mean we ran into a cycle (which is covered by an assert in the debug build).
* be: Order stack nodes by the height of the 'before', not 'after', nodes.Sebastian Buchwald2015-09-14
| | | | | | | | Heights are the longest chain of users, not operands, in the block. Therefore the after nodes all have the same height of 0, because they have no users, yet. This fixes several tests on SPARC.
* Introduce local variable.Sebastian Buchwald2015-09-14
* Indent some comments.Sebastian Buchwald2015-09-14
* Move ir_node struct from irtypes.h to irnode_t.h, remove irtypes.h, cleanupMatthias Braun2015-09-10
* be: Wire stack nodes after code selection.Christoph Mallon2015-09-09
| | | | | This resolves problems with hidden dependencies during code selection, which cause dependency cycles and therefore fixes backend/scheduled.c. Also it grants the code selection slightly more freedom by not arbitrarily restricting the order by stack dependencies.
* pdeq: Remove unnecessary waitq aliasesMatthias Braun2015-09-07
* be: Add and use be_new_Proj().Christoph Mallon2015-07-28
| | | | | It is like new_r_Proj(), but the mode is determined automatically from the out requirement of the predecessor. This probably resolves some mode mismatches in untested code paths -- AMD64 backend and SPARC hard float, I'm looking at you!
* be: Introduce a constraint for memory outputs.Christoph Mallon2015-07-27
* be: Give the none register requirement a register class.Christoph Mallon2015-07-27
| | | | | Now register requirements always have have a register class. This is more consistent and removes some null pointer checks.
* be: Remove the now unused function be_pre_transform_node().Christoph Mallon2015-07-22
* be_match_immediate: Bring back accidentally removed is_tls_entity() checkMatthias Braun2015-07-22
* ia32: Match Relocation nodeMatthias Braun2015-07-22
* be: Do not redundantly set the operands of the new anchor again.Christoph Mallon2015-07-08
| | | | The new anchor gets the transformed operands earlier already.
* be: Simplify transform_block() and transform_end() by using exact_copy().Christoph Mallon2015-07-08
* be: Do not explicitly copy the execution frequency in transform_block().Christoph Mallon2015-07-08
| | | | copy_node_attr() just a few lines before does that already.
* be: Add and use be_allocate_in_reqs().Christoph Mallon2015-06-26
* be: Simplify process_ops_in_block().Christoph Mallon2015-06-26
| | | | Use a flexible array, so we can iterate over the linked list only once instead of twice.
* Properly reserve and free link resource.Sebastian Buchwald2015-06-02
* be: Factorise the code for ia32 to match an immediate.Christoph Mallon2015-05-29
| | | | | Other backends can use this, too. This also corrects the bug, that for Address+Const immediates the check, whether it is a tls entity, was missing.
* be: Factorise code to skip same-width conversions.Christoph Mallon2015-04-19
* be: Factorise code to skip down converions while transforming.Christoph Mallon2015-04-19
* be: Factorise code to extract 32 bits from a tarval.Christoph Mallon2015-04-19
* be: Remove post-transform block moving of Projs.Christoph Mallon2015-01-14
| | | | All Projs should be transformed into to the correct block.
* be: Add and use be_transform_nodes_block().Christoph Mallon2015-01-14
* be: Transform the End node in one go instead of adding one keep edge at a time.Christoph Mallon2015-01-14
| | | | new_ir_node() handles dynamic ops correctly for quite some time now.
* ir: Remove dependency edges.Christoph Mallon2015-01-12
* be: Remove nodes, which should not appear while transforming, from ↵Christoph Mallon2014-12-26
| | | | be_start_transform_setup().
* be: Inline be_get_transformed_node() into its only caller.Christoph Mallon2014-12-06
* ir: Let get_irg_anchor() just return the anchor instead of its operands.Christoph Mallon2014-11-19
| | | | This also renders get_irg_n_anchors() obsolete, so remove it.