Implement vararg handling in a more portable way (for now only for IA32).
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.
ir/be/bevarargs.c
0 → 100644
ir/be/bevarargs.h
0 → 100644
Please register or sign in to comment