[llvm-dev] Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
John Regehr via llvm-dev
llvm-dev at lists.llvm.org
Thu Jul 20 21:00:08 PDT 2017
> So, the pointer arguments of memcpy *shall* (a violation of a shall
> clause is UB, per §4/2) have valid values, even though the function will
> copy zero characters.
This is true in C but the question was about LLVM intrinsics.
Since the LangRef does not mention any such restriction, I would assume
that memcpy(0,0,0) is not UB in LLVM. If it is UB then we must update
the LangRef to be clear on this point (actually we should update the
LangRef either way since this is a question that'll come up again).
More information about the llvm-dev