Open
Description
#include<span>
#include<cstddef>
void baz(::std::size_t *ptr,::std::size_t n) noexcept;
void foo(::std::span<::std::size_t> sp) noexcept
{
baz(sp.data(),sp.size());
}
void bar(::std::size_t *ptr,::std::size_t n) noexcept
{
baz(ptr,n);
}
_Z3fooNSt3__14spanImLm4294967295EEE: # @_Z3fooNSt3__14spanImLm4294967295EEE
.functype _Z3fooNSt3__14spanImLm4294967295EEE (i32) -> ()
# %bb.0:
local.get 0
i32.load 0
local.get 0
i32.load 4
call _Z3bazPmm
# fallthrough-return
end_function
# -- End function
.section .text._Z3barPmm,"",@
.hidden _Z3barPmm # -- Begin function _Z3barPmm
.globl _Z3barPmm
.type _Z3barPmm,@function
_Z3barPmm: # @_Z3barPmm
.functype _Z3barPmm (i32, i32) -> ()
# %bb.0:
local.get 0
local.get 1
call _Z3bazPmm
# fallthrough-return
end_function
std::span is passed by memory, not by registers on wasm. which is extremely slow.
This is going to encourage people to overuse pointers. Please change the calling convention here. Also, the return value has the same issue.
Metadata
Metadata
Assignees
Labels
No labels