Beispiel #1
0
void needPassByRef(AbiState *state, jl_datatype_t *dt, bool *byRef, bool *inReg)
{
    size_t size = jl_datatype_size(dt);
    if (is_complex64(dt) || is_complex128(dt) || (jl_is_bitstype(dt) && size <= 8))
        return;
    *byRef = true;
}
Beispiel #2
0
bool needPassByRef(jl_datatype_t *dt, AttrBuilder &ab) override
{
    size_t size = jl_datatype_size(dt);
    if (is_complex64(dt) || is_complex128(dt) || (jl_is_primitivetype(dt) && size <= 8))
        return false;
    ab.addAttribute(Attribute::ByVal);
    return true;
}
Beispiel #3
0
Type *preferred_llvm_type(jl_datatype_t *dt, bool isret)
{
    if (!isret)
        return NULL;
    // special case Complex{Float32} as a return type
    if (is_complex64(dt))
        return T_int64;
    return NULL;
}
Beispiel #4
0
bool use_sret(AbiState *state, jl_datatype_t *dt)
{
    size_t size = jl_datatype_size(dt);
    if (size == 0)
        return false;
    if (is_complex64(dt) || (jl_is_bitstype(dt) && size <= 8))
        return false;
    return true;
}
Beispiel #5
0
bool use_sret(jl_datatype_t *dt) override
{
    size_t size = jl_datatype_size(dt);
    if (size == 0)
        return false;
    if (is_complex64(dt) || (jl_is_primitivetype(dt) && size <= 8))
        return false;
    return true;
}