Displaying 7 results from an estimated 7 matches for "callslot".
2018 Mar 05
1
Allow CallSlot optimization for throwing functions for sret arguments
Hi all,
in Rust we have a bug report about about a missed optimization which
one would expect CallSlot optimization to handle:
https://github.com/rust-lang/rust/issues/48533
The IR looks like this:
define void @bar(%S* noalias nocapture sret dereferenceable(16), void
(%S*)* nocapture nonnull) unnamed_addr #0 {
%3 = alloca %S, align 8
%4 = bitcast %S* %3 to i8*
call void @llvm.lifetime.start....
2015 Mar 01
2
[LLVMdev] RFC: PerfGuide for frontend authors
...void @llvm.lifetime.end(i64 400000, i8* %2)
>>>>> call void @llvm.lifetime.end(i64 400000, i8* %1)
>>>>> ret void
>>>>> }
>>>>>
>>>>> If the lifetime start for %arg is moved up, before the memset, the
>>>>> callslot optimization can take place and the %c alloca is eliminated,
>>>>> but with the lifetime starting after the memset, that isn't possible.
>>>> This bit of ir actually seems pretty reasonable given the inline asm. The only thing I really see is that the memcpy could be...
2015 Mar 01
2
[LLVMdev] RFC: PerfGuide for frontend authors
...ias.scope !4, !noalias !0
>>> call void @llvm.lifetime.end(i64 400000, i8* %2)
>>> call void @llvm.lifetime.end(i64 400000, i8* %1)
>>> ret void
>>> }
>>>
>>> If the lifetime start for %arg is moved up, before the memset, the
>>> callslot optimization can take place and the %c alloca is eliminated,
>>> but with the lifetime starting after the memset, that isn't possible.
>> This bit of ir actually seems pretty reasonable given the inline asm. The only thing I really see is that the memcpy could be a memset. Are...
2015 Feb 28
0
[LLVMdev] RFC: PerfGuide for frontend authors
...4 400000, i8* %2) #2, !alias.scope !4, !noalias !0
>> call void @llvm.lifetime.end(i64 400000, i8* %2)
>> call void @llvm.lifetime.end(i64 400000, i8* %1)
>> ret void
>> }
>>
>> If the lifetime start for %arg is moved up, before the memset, the
>> callslot optimization can take place and the %c alloca is eliminated,
>> but with the lifetime starting after the memset, that isn't possible.
> This bit of ir actually seems pretty reasonable given the inline asm. The only thing I really see is that the memcpy could be a memset. Are you expe...
2015 Feb 28
2
[LLVMdev] RFC: PerfGuide for frontend authors
...void @llvm.lifetime.end(i64 400000, i8* %2) #2, !alias.scope !4, !noalias !0
> call void @llvm.lifetime.end(i64 400000, i8* %2)
> call void @llvm.lifetime.end(i64 400000, i8* %1)
> ret void
> }
>
> If the lifetime start for %arg is moved up, before the memset, the
> callslot optimization can take place and the %c alloca is eliminated,
> but with the lifetime starting after the memset, that isn't possible.
This bit of ir actually seems pretty reasonable given the inline asm. The only thing I really see is that the memcpy could be a memset. Are you expecting som...
2015 Feb 28
0
[LLVMdev] RFC: PerfGuide for frontend authors
...noalias !0, !srcloc !3
call void @llvm.lifetime.end(i64 400000, i8* %2) #2, !alias.scope !4, !noalias !0
call void @llvm.lifetime.end(i64 400000, i8* %2)
call void @llvm.lifetime.end(i64 400000, i8* %1)
ret void
}
If the lifetime start for %arg is moved up, before the memset, the
callslot optimization can take place and the %c alloca is eliminated,
but with the lifetime starting after the memset, that isn't possible.
Björn
2015 Feb 28
2
[LLVMdev] RFC: PerfGuide for frontend authors
On 02/28/2015 10:04 AM, Björn Steinbrink wrote:
> Hi,
>
> On 2015.02.28 10:53:35 -0600, Hal Finkel wrote:
>> ----- Original Message -----
>>> From: "Philip Reames" <listmail at philipreames.com>
>>>> 6. Use the lifetime.start/lifetime.end and
>>>> invariant.start/invariant.end intrinsics where possible
>>> Do you find these