• Andreas Fried's avatar
    Implement vararg handling in a more portable way (for now only for IA32). · f833aa25
    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.
    f833aa25
ia32_transform.c 183 KB