path: root/ir/be/bevarargs.c
Commit message (Collapse)AuthorAge
* 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();
* be: Restore be_set_va_list_type_pointer().Christoph Mallon2017-01-29
| | | | It was accidentally removed in ec7cfdce1d4fbf613620772367a7adf3f3ca50a4.
* Reorganize va_arg handlingMatthias Braun2017-01-28
| | | | | | Do not put stuff unnecessarily into backend params. - Pass lower_va_arg directly as a parameter to lower_builtins - Pass stack_param align directly to be_default_lower_va_arg
* be: Factor out common code to make a va_start entity.Christoph Mallon2017-01-24
* be: Factor out code to set the va_list type to a void pointer.Christoph Mallon2017-01-24
* sparc: Use the correct type for the load and offset calculation in vararg ↵Christoph Mallon2016-09-27
| | | | | | lowering. When compound types are passed as pointer, then not only the mode, but also the type, needs to be adjusted to a pointer.
* sparc: Correctly handle compound types as variadic parameters.Christoph Mallon2016-09-27
| | | | They are passed as a pointer, not the value itself, so an extra load is needed.
* When making an 'Add', automatically infer its mode from its operands.Christoph Mallon2016-06-07
* Rename get_type_{size|alignment}_bytes() to get_type{size|alignment}()Matthias Braun2016-02-14
* Remove dead assignment.Sebastian Buchwald2015-12-02
* Enfore Add/Sub pointer, offset to use reference_offset_modeMatthias Braun2015-10-18
* Always include irnode_t.h from inside libfirm (or firm_types.h)Matthias Braun2015-09-10
* Implement vararg handling in a more portable way (for now only for IA32).Andreas Fried2015-08-14
This adds two builtin kinds, ir_bk_va_start and ir_bk_va_arg. va_arg Builtins are lowered in the lower_builtins pass with a function provided by the backend, whereby most architectures can use be_default_lower_va_args. va_start Builtins are lowered in the backend. Note: This commit breaks all backends except for IA32. SPARC and AMD64 are implemented in later commits. The ARM backend previously miscompiled variadic functions, and will now throw a proper error.