- 29 Aug, 2015 1 commit
-
-
Christoph Mallon authored
-
- 14 Aug, 2015 2 commits
-
-
Andreas Fried authored
-
Andreas Fried authored
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.
-
- 09 Aug, 2015 1 commit
-
-
Christoph Mallon authored
All backends have similar empty Start nodes, which just provide registers. So having one generic backend Start node to share some infrastructure is sensible.
-
- 04 Aug, 2015 2 commits
-
-
Christoph Mallon authored
It pops a value from the stack, so this memory access should be represented in the graph.
-
Christoph Mallon authored
-
- 29 Jul, 2015 3 commits
-
-
Christoph Mallon authored
Otherwise the frontend has to do this after asking the backend for its parameters, which is quite awkward.
-
Matthias Braun authored
-
Matthias Braun authored
-
- 28 Jul, 2015 1 commit
-
-
Christoph Mallon authored
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!
-
- 27 Jul, 2015 1 commit
-
-
Christoph Mallon authored
-
- 19 Jul, 2015 1 commit
-
-
Christoph Mallon authored
-
- 01 Jul, 2015 1 commit
-
-
Matthias Braun authored
We can easily identify the outputs producing a stack pointer by looking if the stack pointer register is assigned. Unfortunately this also needed a new mechanism to tell the verifier that some registers are not in SSA form (all the time) which needs a few extra lines in each backend.
-
- 19 Jun, 2015 2 commits
-
-
Matthias Braun authored
-
Matthias Braun authored
-
- 12 Jun, 2015 1 commit
-
-
Andreas Fried authored
The spiller crashes on some unoptimized Phi nodes.
-
- 24 May, 2015 1 commit
-
-
Matthias Braun authored
Instead of having a generaic main loop in be_main with several callbacks into the targets, split the code in be_main up into a set of convenience functions and let the targets implement the main loop itself. This is nicer because: - The control flow into and out of the functions in the target becomes obvious as no external party is using callbacks anymore. - Targets can insert custom code at any place between the generic passes. - In the future we can parameterize the generic backend passes directly instead of stuffing info into generic isa_if structures.
-
- 09 May, 2015 1 commit
-
-
Matthias Braun authored
-
- 07 May, 2015 1 commit
-
-
Matthias Braun authored
-
- 18 Jan, 2015 4 commits
-
-
Christoph Mallon authored
-
Christoph Mallon authored
This removes the last attributes from struct arch_env_t.
-
Christoph Mallon authored
be: Move the info about the register classes and registers struct the arch_env_t into struct arch_isa_if_t.
-
Christoph Mallon authored
Just use the selected isa interface directly.
-
- 12 Jan, 2015 2 commits
-
-
Christoph Mallon authored
-
Christoph Mallon authored
-
- 11 Jan, 2015 4 commits
-
-
Christoph Mallon authored
be: Add the function arch_copy_irn_out_info() to copy one requirement and register from another node. * This avoids allocating new requirements. * This renders be_set_constr_single_reg_out() obsolete.
-
Christoph Mallon authored
-
Christoph Mallon authored
-
Christoph Mallon authored
* Use rbp and rsp as output of leave, not rbp twice. * Attach the rbp input/output of leave to rbp, not rsp. * Use the function's own frame pointer instead of the caller's frame pointer.
-
- 31 Dec, 2014 1 commit
-
-
Christoph Mallon authored
-
- 30 Dec, 2014 1 commit
-
-
Christoph Mallon authored
These are remnants from back when the prologue was added early and scheduling was not done, yet. They were there to help the scheduler not to move an IncSP before the copy from sp to bp and thus having two values in sp live at the same time.
-
- 29 Dec, 2014 4 commits
-
-
Christoph Mallon authored
-
Christoph Mallon authored
-
Christoph Mallon authored
amd64, ia32: Encode the length of the constraint list in the type instead of relying on matching magic numbers.
-
Matthias Braun authored
This first version should perform similar to the support in the ia32 backend, but needs more work to add amd64 specific immediate types.
-
- 28 Dec, 2014 1 commit
-
-
Christoph Mallon authored
-
- 26 Dec, 2014 3 commits
-
-
Christoph Mallon authored
-
Christoph Mallon authored
This is the same correction as for ia32. First construct all epilogues, then the prologue. Check there, whether the IncSP has no users and add a keep edge in that case.
-
Christoph Mallon authored
If the start node was deleted, something is very wrong.
-
- 25 Dec, 2014 1 commit
-
-
Matthias Braun authored
-