<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div><br>On Feb 12, 2013, at 6:37 PM, Eric Christopher <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div class="gmail_quote"><div>For function parameters this is still somewhat of a hack. The correct way to fix this is to change the representation we use for function arguments to use the incoming value and track that for location information - it would obviate the need to scan through the function collecting function parameters as if they were local variables.</div></div></blockquote><div><br></div><div>The problem is that in C, arguments are variables, so we can't simply track the incoming value. The variable could be reassigned.</div><div><br></div><div>Unless DWARF can track the incoming argument value separately from the current variable value?</div><br><blockquote type="cite"><div class="gmail_quote"><div> Also, it shouldn't depend upon whether or not we're enabling misched or not, a simple testcase should be an unused parameter and dce.</div>
<div><br></div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333015441895px;background-color:rgb(255,255,255)">+define void @Proc8(i32* nocapture %Array1Par, [51 x i32]* nocapture %Array2Par, i32 %IntParI1, i32 %IntParI2) nounwind optsize ssp uwtable {</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333015441895px;background-color:rgb(255,255,255)">
<div><br></div><div>You also shouldn't need ssp/uwtable on this.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 class LiveDebugVariables : public MachineFunctionPass {<br>
   void *pImpl;<br>
+  /// Whether emitDebugValues is called.<br>
+  bool EmitDone;<br>
+  /// Whether the machine function is modified during the pass.<br>
+  bool ModifiedMF;<br></blockquote><div><br></div><div> Any reason why these aren't going into the pass impl?</div><div><br></div><div>Jakob: It looks like we don't need the value renaming machinery any more, i.e.</div>
<div><div><br></div><div>void LiveDebugVariables::renameRegister(unsigned OldReg, unsigned NewReg, unsigned SubIdx)</div></div><div><br></div><div>since I'm guessing the register allocator keeps the virtual register map up to date that we use later when we actually run the pass?</div></div>
</blockquote><br><div>If the code is really dead, it's fine to delete it. RA uses other LDV functions when spilling and splitting live ranges.</div><div><br></div><div>/jakob</div></body></html>