search for: callslot

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