Displaying 20 results from an estimated 1100 matches similar to: "RFC: Add atomic versions of the llvm.memcpy, llvm.memmove and llvm.memset intrinsics"
2017 Jul 21
0
Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
> I don't think that was the conclusion of the discussion? I mean the
> result was that a NULL pointer should be explicitly valid if the length
> argument is zero. That's a bit more restrictive.
Yeah there's a design space here. I don't care about the result but am
volunteering to document whatever people want.
John
2007 Oct 06
1
[LLVMdev] memcpy(), memmove(), and memset() with zero length
If I copy or set zero bytes with memcpy(), memmove(), or memset(), can
the <dest> and <src> arguments be null? Can they be invalid pointers?
Regards,
Jon
2017 Jul 21
3
Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
On Fri, Jul 21, 2017 at 09:31:41AM -0600, John Regehr via llvm-dev wrote:
> I propose documenting in the LangRef that memcpy and related intrinsics are
> defined even when src and dst don't refer to valid storage as long as the
> length argument is zero. Then we commit to implementing that behavior. Is
> that OK with everyone? If so I can update the doc.
I don't think that was
2017 Jul 21
2
Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
> 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
2017 Jul 20
2
Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
Hi all,
when I call the llvm.memcpy/memmove/memset.* intrinsics, typically I
have to pass in valid (non-dangling, non-NULL pointers) of the given
alignment. However, to what extent to these rules apply when the count
is 0? Concretely (for any variant of the three aforementioned
intrinsics): Is it UB to call them on a dangling pointer when count is
0? On a pointer of less than the given
2018 Jan 19
0
Change memcpy/memmove/memset to have dest and source alignment attributes
On Jan 18, 2018, at 10:48 PM, Chris Lattner <clattner at nondot.org<mailto:clattner at nondot.org>> wrote:
On Jan 18, 2018, at 7:45 AM, Daniel Neilson via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
Hi all,
This change has been reviewed, and appears to be ready to land (review available here if anyone still wants to chime in:
2017 Jul 21
3
Which assumptions do llvm.memcpy/memmove/memset.* make when the count is 0?
As of earlier this year, we now explicitly ignore the nonnull
attributes that glibc puts on memcpy (and other stdlib functions). I
don't know how LLVM feels about dangling or underaligned pointers in
particular, but AFAICT, we do try hard to make sure that
memcpy(NULL, _, 0) works as the user probably intends.
Here's the thread I read about it:
2013 Jan 31
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
Thanks Andy and Chandler,
After specifying the volatile access behaviour, the second step was to
autoupgrade the memmove/memcpy intrinsics, and implement
(is|set)Volatile in terms of (is|set)(Src|Dest)Volatile, with no
functional change.
0001-Specify-the-access-behaviour-of-the-memcpy-memmove-a.patch is the
one you already reviewed, unaltered.
2013 Feb 03
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
Same patches as before, but 0002-memcpy has been updated to put the
(is|set)SrcVolatile methods to where they logically belong :
MemTransferInst. This makes (is|set)Volatile methods look a bit ugly to
keep compatibility with existing behaviour, but they will hopefully
disappear when all users have moved to the new interface --- in the next
series of patches.
I plan to give a try to phabricator
2013 Jan 29
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
I can't think of a better way to do this, so I think it's ok.
I also submitted a complementary patch on llvm-commits clarifying volatile semantics.
-Andy
On Jan 28, 2013, at 8:54 AM, Arnaud A. de Grandmaison <arnaud.allarddegrandmaison at parrot.com> wrote:
> Hi All,
>
> In the language reference manual, the access behavior of the memcpy,
> memmove and memset
2018 Jan 18
0
Change memcpy/memmove/memset to have dest and source alignment attributes
Hi all,
This change has been reviewed, and appears to be ready to land (review available here if anyone still wants to chime in: https://reviews.llvm.org/D41675 ). The process that we’re going to use for landing this will take a few steps. To wit:
Step 1) Remove align argument, and add align attribute to pointer args. Require that src & dest have the same alignment via verifier rule. Also
2018 Jan 19
2
Change memcpy/memmove/memset to have dest and source alignment attributes
> On Jan 18, 2018, at 7:45 AM, Daniel Neilson via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
>
> Hi all,
> This change has been reviewed, and appears to be ready to land (review available here if anyone still wants to chime in: https://reviews.llvm.org/D41675 <https://reviews.llvm.org/D41675> ). The process that we’re going to use for landing this will take a few
2018 Apr 02
0
Change memcpy/memmove/memset to have dest and source alignment attributes
Hi Daniel,
a quick question (and kind-of a follow-up to
<https://lists.llvm.org/pipermail/llvm-dev/2017-July/115665.html>): Do the
pointers have to be aligned even if the size is 0? It would be nice to have
this stated explicitly in the LangRef.
Kind regards,
Ralf
On 26.03.2018 22:43, Daniel Neilson via llvm-dev wrote:
> Hi all,
> A quick note just to let people know that as of
2018 Mar 26
1
Change memcpy/memmove/memset to have dest and source alignment attributes
Hi all,
A quick note just to let people know that as of this past Friday my go at this work has been fully landed. It ended up being a back-burner item, so it took longer than I would have liked to get completed. None the less, the changes made were:
1) The IRBuilders in LLVM, Clang, and Polly were all updated to create only the new form of the memory intrinsics.
2) All LLVM passes to understand
2017 May 08
3
RFC: Element-atomic memory intrinsics
Greetings all,
I am picking up the work that was started in https://reviews.llvm.org/D27133 — adding support for an element-atomic memcpy/memset/memmove to LLVM. I would appreciate suggestions/thoughts/advice/comments on how to best proceed with this work in a way that will be acceptable to the LLVM group.
I apologize in advance; this is going to be a long one...
**Background**
Loads/stores
2011 Apr 15
0
[LLVMdev] llvm instrinsic (memcpy/memset/memmov)and ConstantExpression with cast
On 4/14/11 6:34 PM, Kodakara, Sreekumar V wrote:
>
> Hi All,
>
> I have a question on ConstantExpressions and llvm intrinsic
> memcpy/memset/memmove. I am using llvm-2.8 release. In one of the C
> programs that I am compiling using clang frontend, the call to memcpy
> instrinsic looks like the following
>
> call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp2, i8* bitcast
2011 Apr 14
2
[LLVMdev] llvm instrinsic (memcpy/memset/memmov)and ConstantExpression with cast
Hi All,
I have a question on ConstantExpressions and llvm intrinsic memcpy/memset/memmove. I am using llvm-2.8 release. In one of the C programs that I am compiling using clang frontend, the call to memcpy instrinsic looks like the following
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp2, i8* bitcast (%struct.ta* @tret to i8*), i64 4, i32 4, i1 false), !dbg !19
The second argument to memcpy is
2018 Jan 02
5
Change memcpy/memmove/memset to have dest and source alignment attributes
Good day all,
I’ve spent a few days resurrecting the circa-2015 work on removing the explicit alignment argument (4th arg) from the @llvm.memcpy/memmove/memset intrinsics in favour of using the alignment attribute on the pointer args of calls to the intrinsic. This work was first proposed back in August 2015 by Lang Hames:
http://lists.llvm.org/pipermail/llvm-dev/2015-August/089384.html (item
2013 Jan 28
4
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
Hi All,
In the language reference manual, the access behavior of the memcpy,
memmove and memset intrinsics is not well defined with respect to the
volatile flag. The LRM even states that "it is unwise to depend on it".
This forces optimization passes to be conservatively correct and prevent
optimizations.
A very simple example of this is :
$ cat test.c
#include <stdint.h>
2016 Jan 20
2
Getting _eh_frame parser for llvm
> On 20 January 2016 at 09:21, Igor Laevsky via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> Hi all,
>>
>> Not so long ago we have found ourselves in need of a robust _eh_frame parser. All we wanted is the ability to parse .eh_frame section emitted by LLVM's MCJIT. Considering this, LLVM would be a natural place for implementing such parser.
>>