On Fri, Jun 12, 2015 at 2:11 PM, Alexey Samsonov <[email protected]> wrote:
> Hi aadg, dblaikie, > > In addition to easier syntax, IRBuilder makes sure to set correct > debug locations for newly added instructions (bitcast and > llvm.lifetime itself). This restores the original behavior, which > was modified by r234581 (reapplied as r235553). > > Extend one of the tests to check for debug locations. > > http://reviews.llvm.org/D10418 > > Files: > lib/CodeGen/CGDecl.cpp > test/CodeGen/cleanup-destslot-simple.c > > Index: lib/CodeGen/CGDecl.cpp > =================================================================== > --- lib/CodeGen/CGDecl.cpp > +++ lib/CodeGen/CGDecl.cpp > @@ -864,20 +864,17 @@ > return nullptr; > > llvm::Value *SizeV = llvm::ConstantInt::get(Int64Ty, Size); > - llvm::Value *Args[] = { > - SizeV, > - new llvm::BitCastInst(Addr, Int8PtrTy, "", > Builder.GetInsertBlock())}; > - llvm::CallInst *C = > llvm::CallInst::Create(CGM.getLLVMLifetimeStartFn(), Args, > - "", > Builder.GetInsertBlock()); > + Addr = Builder.CreateBitCast(Addr, Int8PtrTy); > + llvm::Value *Args[] = {SizeV, Addr}; > + llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeStartFn(), > Args); > Seems simple enough/good to me. Please commit. (if anyone feels like simplifying this code a bit, it could be written as: ... CreateCall(..., {SizeV, Addr}); & drop the Args variable entirely. > C->setDoesNotThrow(); > return SizeV; > } > > void CodeGenFunction::EmitLifetimeEnd(llvm::Value *Size, llvm::Value > *Addr) { > - llvm::Value *Args[] = {Size, new llvm::BitCastInst(Addr, Int8PtrTy, "", > - > Builder.GetInsertBlock())}; > - llvm::CallInst *C = llvm::CallInst::Create(CGM.getLLVMLifetimeEndFn(), > Args, > - "", > Builder.GetInsertBlock()); > + Addr = Builder.CreateBitCast(Addr, Int8PtrTy); > + llvm::Value *Args[] = {Size, Addr}; > + llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeEndFn(), > Args); > C->setDoesNotThrow(); > } > > Index: test/CodeGen/cleanup-destslot-simple.c > =================================================================== > --- test/CodeGen/cleanup-destslot-simple.c > +++ test/CodeGen/cleanup-destslot-simple.c > @@ -13,7 +13,9 @@ > return *p; > // CHECK: [[X:%.*]] = alloca i32 > // CHECK: [[P:%.*]] = alloca i32* > -// LIFETIME: call void @llvm.lifetime.start(i64 4, i8* %{{.*}}) > -// LIFETIME: call void @llvm.lifetime.start(i64 8, i8* %{{.*}}) > +// LIFETIME: call void @llvm.lifetime.start(i64 4, i8* %{{.*}}){{( > #[0-9]+)?}}, !dbg > +// LIFETIME: call void @llvm.lifetime.start(i64 8, i8* %{{.*}}){{( > #[0-9]+)?}}, !dbg > // CHECK-NOT: store i32 %{{.*}}, i32* %cleanup.dest.slot > +// LIFETIME: call void @llvm.lifetime.end(i64 8, {{.*}}){{( #[0-9]+)?}}, > !dbg > +// LIFETIME: call void @llvm.lifetime.end(i64 4, {{.*}}){{( #[0-9]+)?}}, > !dbg > } > > EMAIL PREFERENCES > http://reviews.llvm.org/settings/panel/emailpreferences/ >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
