swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40
Raw File
Tip revision: 48dee43a1608f0310e69c60028a25f563b57fdb4 authored by Keno Fischer on 05 August 2022, 08:16:20 UTC
WIP
Tip revision: 48dee43
alloc-opt-pipeline.jl
# This file is a part of Julia. License is MIT: https://julialang.org/license

# RUN: julia --startup-file=no %s %t -O
# RUN: cat %t/* | FileCheck %s

include(joinpath("..", "testhelpers", "llvmpasses.jl"))

# JuliaLang/julia#38922
function haszerolayout(x::NTuple{32, VecElement{UInt8}})
    rx = Ref(x)
    GC.@preserve rx begin
        lower = iszero(unsafe_load(Ptr{UInt128}(pointer_from_objref(rx)), 1))
        upper = iszero(unsafe_load(Ptr{UInt128}(pointer_from_objref(rx)), 2))
        lower & upper
    end
end

# CHECK-LABEL: @julia_haszerolayout
# CHECK: top:
# CHECK-NOT: @jl_gc_pool_alloc
# CHECK: extractelement
# CHECK: ret i8
emit(haszerolayout, NTuple{32,VecElement{UInt8}})
back to top