path: root/ir/ir
Commit message (Collapse)AuthorAge
* ir: Allow ASM nodes as control flow nodes.Christoph Mallon2019-04-05
| | | | This is done by treating them as fragile.
* api: Pass ir_cons_flags to new_*_ASM(), so the pin state is set atomically.Christoph Mallon2019-04-05
* api: Pass the asm text before the constraints and clobbers to new_*_ASM().Christoph Mallon2019-04-05
| | | | This does better fit the syntax of an inline asm statement and also matches the order in irio.
* Generate the new_*_ASM() functions.Christoph Mallon2019-04-05
| | | | It is not necessary to implement them manually.
* dump: Dump throwing nodes also in the control flow color (red).Christoph Mallon2019-04-01
* improved readability/code quality according to clang-tidy readability checksJohannes Bucher2019-01-24
| | | | | | | resolved warnings for these checks: - readability-non-const-parameter - readability-avoid-const-params-in-decls - readability-named-parameter
* Move irn_copy_into_irg and exact_copy into the public interface.Andreas Fried2019-01-16
* Fix topological walker.Andreas Fried2019-01-16
| | | | | | | | It could be the case that a node whose operand is a Phi was visited before that Phi. This was because the visited flag was both used to limit the recursion and to keep track of which nodes still needed to be visited (i.e. have the walker called with them). This commit introduces a nodeset to keep track of both separately.
* Fix dumper with flags ir_dump_flag_iredges and ir_dump_flag_all_anchors.Andreas Fried2019-01-10
* Dump graphs when dumpfilter is a substring (not prefix) of the graph name.Andreas Fried2018-11-28
| | | | | | This behaviour is already documented in the debug extension ( It is also more useful when name mangling comes into play.
* irio: Handle differences in initial types.Andreas Fried2018-08-29
| | | | | | | When exporting from one compiler and importing into another, the initial types may not fully match (e.g. if one compiler uses liboo). In this case, there are two things to do: (1) Do not freak about about the divergence, (2) stop deduplicating types.
* irio: Don't squash all imported frame types togetherSebastian Graf2018-08-08
| | | | | | | | | | | | | | | | | | | | The previous attempt to reduce redundancy in imported and then exported IR files in 26140a7 led to all imported IR graphs referencing the same (global) frame type. This commit partly reverts the aggressive deduplication of 26140a7, while still combining identifying initial types added by `ir_init()` by their `type_nr`. This would again result in many redundant frame types, because the call to `new_ir_graph` generates a new frame type each time it is called, which is not freed when replaced by another frame type (the one we read from the IR file to import) through a call to `set_irg_frame_type`. The solution is of course to free the initially allocated frame type with `free_type`.
* Remove superfluous debug printfs from irio.cSebastian Graf2018-06-12
| | | | Yikes.
* dump: Avoid a spurious space at the end of the list of clobbers.Christoph Mallon2018-06-11
* Deduplicate types and compound members in ir_importSebastian Graf2018-06-08
| | | | | | | ir_init() adds a number of initial types and compound members that need not be added twice when importing an ir file. This makes `ir_export . ir_import` idempotent.
* dump: For coloring nodes in the graph dump prioritize control flow over memory.Christoph Mallon2018-06-01
| | | | This matters especially in the backend when there is a jump instruction which also accesses memory, e.g. IJmp on ia32.
* ir: Overhaul representation of ASM constraints in the IR.Christoph Mallon2018-05-11
| | | | | | | | | | Now the constraints are a mapping from the template position to the input/output positions instead of the other way round. Also there is only one list of constraints instead of a separate one for input and output. This simplifies handling quite a bit, in particular the numbering. E.g. "=m" actually is an input (for the address) and this caused miscounting when the constraints were processed. Also processing of 64 bit operands also lead to miscounting. This fixes x86code/asm_test15.c and x86code/asm_test19.c
* Fix indentationSebastian Buchwald2018-05-04
* ir: Clean up remove_End_Bads_and_doublets().Christoph Mallon2018-03-13
* ir: Assert that get_memop_mem() actually returns a memory node.Christoph Mallon2018-03-06
* Fix typos in commentsSebastian Buchwald2018-01-17
* Fix snprintf() compiler warningChristoph Erhardt2017-09-01
| | | | | GCC complains that the destination buffer is too small because the resulting output string can take up to 17 characters.
* Small cleanup.Christoph Mallon2017-04-07
* Unify indentation of function parametersSebastian Buchwald2017-03-31
* Rework target initialization and queryMatthias Braun2017-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | - Moves machine triple handling code form cparser into libfirm - Create new APIs to set the target and query information about it - Move backend_params into the new target API - Backends initialize ir_target instead of backend_params now - Add new API to get information about the target platform: - Mangle a name for the target platform (and remove compilerlib mangling callback) - Can query size and alignment of basic C types for the platform - Move some constant target information into arch_isa_if_t (we move it to target_info_t later when we realize it needs to be dynamic) - Redo backend initialization. Examples: Simple case: Initialize for host: ir_init(); Complex case: cross-compile to sparc with PIC enabled: ir_init_library(); ir_target_set("sparc-leon-linux-gnu"); ir_target_option("pic"); ir_target_init();
* Pull side effects out of assert()Matthias Braun2017-02-17
* Reorganize include directivesMatthias Braun2017-02-17
* Fix warnings in optimize buildSebastian Buchwald2017-02-01
* irarch: Leave setup to backendsMatthias Braun2017-01-28
| | | | | | Let backends perform the irarch setup in lower_for_target(). Frontends do not need to explicitely enable it any longer and there is no need to keep the settings around in backend_params.
* Fix typo in comment.Christoph Mallon2016-12-31
* irmode: Do not initialize mode_PMatthias Braun2016-12-30
| | | | | Just guessing a 32bit mode is not too helpful. Leave the mode_P initialization to the backend or frontend.
* irmode: Remove arithmetic argument from new_{int|reference}_mode()Matthias Braun2016-12-30
| | | | Your only choice is irma_twos_complement anyway now.
* irgraph: Do not create a Start node in the const_code irgMatthias Braun2016-12-30
* irdump: Make some low-level functions public.Matthias Braun2016-12-27
| | | | | | | | The homepage uses those functions to generate firm graph examples/snippets without dumping a whole function. This is necessary to make the homepage generator not call private libfirm interface any longer.
* dump: Only try to dump the mode of a type, if it has one.Christoph Mallon2016-12-26
| | | | Method types have no mode anymore.
* irio: print a newline after the Unknown entity.Manuel Mohr2016-12-22
* Add walker to visit nodes in topological order.Manuel Mohr2016-12-02
* ir: Factor out 'is_Const(x) && is_Const_one(x)' into the new function ↵Christoph Mallon2016-11-04
| | | | 'is_irn_one()'.
* ir: Factor out 'is_Const(x) && is_Const_null(x)' into the new function ↵Christoph Mallon2016-11-04
| | | | 'is_irn_null()'.
* Use 'default_copy_attr()'.Christoph Mallon2016-10-06
* Remove the flag 'closed_world', wich has no effect.Christoph Mallon2016-09-07
* Remove superfluous forward declarationsSebastian Buchwald2016-08-05
* Remove superfluous semicolonSebastian Buchwald2016-07-28
* 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
* Factorise code to create an array type and entity.Christoph Mallon2016-06-28
* Do not unnecessarily create new types for modes.Christoph Mallon2016-06-28
* Revert "Correctly use the element type, not the array type, for Load/Store.".Christoph Mallon2016-06-28
| | | | | The array type is fine, because it is the containing type, which is used for TBAA. This partially reverts commit 1786345c84ff2aa45c59df4d7491ecef6bac75fc.
* Rename pdeq_new.h => pdeq.hMatthias Braun2016-06-27
* Use pdeq_new instead of pdeqMatthias Braun2016-06-27