<div dir="ltr"><div><div>Hello, All,<br><br></div>This is my first post to this mailing list.<br><br>I am currently working on adding debug information generation to the front end of a compiler that uses LLVM.    The execution model for the compiled programs is that there are no function calls, and no stack - instead, all called functions are inlined (this is possible as the source language does not permit recursion).  However, the inlining is done by the F/E, so that LLVM sees only a single 'main' function.<br>
<br></div><div>I can see no way of representing this inlining in the metadata being generated by the F/E: the DIBuilder class provides no methods for inlined functions, and the 'Source Level Debugging with LLVM' document has very information concerning inlining; e.g. there is this information <br>
<br>"Here <tt class=""><span class="">!12</span></tt> is metadata providing location information.  It has four fields:
line number, column number, scope, and original scope.  The original scope
represents inline location if this instruction is inlined inside a caller, and
is null otherwise.  In this example, scope is encoded by <tt class=""><span class="">!4</span></tt>, a
<a class="" href="http://llvm.org/docs/SourceLevelDebugging.html#format-subprograms"><em>subprogram descriptor</em></a>.  This way the location
information attached to the intrinsics indicates that the variable <tt class=""><span class="">X</span></tt> is
declared at line number 2 at a function level scope in function <tt class=""><span class="">foo</span></tt>."<br><br></div><div>in the 'Object lifetimes and scoping' section, but little else.<br><br>I do not see how to represent the inlining of complete functions in the metadata such that the generated DWARF debug information will contain DIEs with the DW_AT_inline attribute, abstract instances and concrete inlined instances, etc.,  which will be required to allow a debugger to re-construct a notional function call-chain for any given point in the code. <br>
<br></div><div>Does anyone know how to do this?<br><br></div><div>      Regards,<br><br></div><div>            Richard Stuckey<br></div><div><h2><a class="" href="http://llvm.org/docs/SourceLevelDebugging.html#id25"></a><br>
</h2></div></div>