<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 12, 2015 at 2:11 PM, Alexey Samsonov <span dir="ltr"><<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi aadg, dblaikie,<br>
<br>
In addition to easier syntax, IRBuilder makes sure to set correct<br>
debug locations for newly added instructions (bitcast and<br>
llvm.lifetime itself). This restores the original behavior, which<br>
was modified by r234581 (reapplied as r235553).<br>
<br>
Extend one of the tests to check for debug locations.<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10418&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=eT1uAlaVK2ET7NtGGmevX-7T5IKtkjEHA0uFzjJAwsI&s=GYjObiLffct_ruN38eiOR3h2sJ9zwU-MqUbYkf7w5AI&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D10418</a><br>
<br>
Files:<br>
  lib/CodeGen/CGDecl.cpp<br>
  test/CodeGen/cleanup-destslot-simple.c<br>
<br>
Index: lib/CodeGen/CGDecl.cpp<br>
===================================================================<br>
--- lib/CodeGen/CGDecl.cpp<br>
+++ lib/CodeGen/CGDecl.cpp<br>
@@ -864,20 +864,17 @@<br>
     return nullptr;<br>
<br>
   llvm::Value *SizeV = llvm::ConstantInt::get(Int64Ty, Size);<br>
-  llvm::Value *Args[] = {<br>
-      SizeV,<br>
-      new llvm::BitCastInst(Addr, Int8PtrTy, "", Builder.GetInsertBlock())};<br>
-  llvm::CallInst *C = llvm::CallInst::Create(CGM.getLLVMLifetimeStartFn(), Args,<br>
-                                             "", Builder.GetInsertBlock());<br>
+  Addr = Builder.CreateBitCast(Addr, Int8PtrTy);<br>
+  llvm::Value *Args[] = {SizeV, Addr};<br>
+  llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeStartFn(), Args);<br></blockquote><div><br>Seems simple enough/good to me. Please commit.<br><br>(if anyone feels like simplifying this code a bit, it could be written as:<br><br>... CreateCall(..., {SizeV, Addr});<br><br>& drop the Args variable entirely.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
   C->setDoesNotThrow();<br>
   return SizeV;<br>
 }<br>
<br>
 void CodeGenFunction::EmitLifetimeEnd(llvm::Value *Size, llvm::Value *Addr) {<br>
-  llvm::Value *Args[] = {Size, new llvm::BitCastInst(Addr, Int8PtrTy, "",<br>
-                                                     Builder.GetInsertBlock())};<br>
-  llvm::CallInst *C = llvm::CallInst::Create(CGM.getLLVMLifetimeEndFn(), Args,<br>
-                                             "", Builder.GetInsertBlock());<br>
+  Addr = Builder.CreateBitCast(Addr, Int8PtrTy);<br>
+  llvm::Value *Args[] = {Size, Addr};<br>
+  llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeEndFn(), Args);<br>
   C->setDoesNotThrow();<br>
 }<br>
<br>
Index: test/CodeGen/cleanup-destslot-simple.c<br>
===================================================================<br>
--- test/CodeGen/cleanup-destslot-simple.c<br>
+++ test/CodeGen/cleanup-destslot-simple.c<br>
@@ -13,7 +13,9 @@<br>
   return *p;<br>
 // CHECK: [[X:%.*]] = alloca i32<br>
 // CHECK: [[P:%.*]] = alloca i32*<br>
-// LIFETIME: call void @llvm.lifetime.start(i64 4, i8* %{{.*}})<br>
-// LIFETIME: call void @llvm.lifetime.start(i64 8, i8* %{{.*}})<br>
+// LIFETIME: call void @llvm.lifetime.start(i64 4, i8* %{{.*}}){{( #[0-9]+)?}}, !dbg<br>
+// LIFETIME: call void @llvm.lifetime.start(i64 8, i8* %{{.*}}){{( #[0-9]+)?}}, !dbg<br>
 // CHECK-NOT: store i32 %{{.*}}, i32* %cleanup.dest.slot<br>
+// LIFETIME: call void @llvm.lifetime.end(i64 8, {{.*}}){{( #[0-9]+)?}}, !dbg<br>
+// LIFETIME: call void @llvm.lifetime.end(i64 4, {{.*}}){{( #[0-9]+)?}}, !dbg<br>
 }<br>
<br>
EMAIL PREFERENCES<br>
  <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_settings_panel_emailpreferences_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=eT1uAlaVK2ET7NtGGmevX-7T5IKtkjEHA0uFzjJAwsI&s=tMa9ndhamjc8Ep4t0GeXXIdD_nJbIIA70KVtEXUf85c&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br>
</blockquote></div><br></div></div>