<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi All,<div><br></div><div>DIFactory interface, part of DebugInfo.h, is used to emit LLVM IR constructs to encode debugging information. We are replacing this interface with new simple interface, DIBuilder. </div><div><br></div><div>Here is one example that demonstrates differences between two interfaces. To create debug information entries to encode volatile type one would use following call in a language front end,</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier">      </font></span><font class="Apple-style-span" face="Courier">CreateDerivedType(DW_TAG_volatile_type, Context, StringRef(), File, <br>                          0 /*line no*/, type_size_in_bits, type_align_in_bits, </font></div><div><font class="Apple-style-span" face="Courier">                          0 /* offset */,</font><span class="Apple-style-span" style="font-family: Courier; "> 0 /* flags */, OriginalType);</span></div><div><br></div><div>using DIFactory interface. Now, DIBuilder allows you to do the same using following call.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier">        </font></span><font class="Apple-style-span" face="Courier">createQualifiedType(DW_TAG_volatile_type, OriginalType);</font></div><div><br></div><div>DIBuilder interface was introduced in Nov/Dec last year. Now, clang has fully adopted this new interface. So we are going to remove DIFactory from llvm sources soon. Our plan is to move DIFactory interface in dragonegg (and llvm-gcc) for now until the front-ends adopt DIBuilder.</div><div><br></div><div>If you have any concerns about this plan, please speak up now.</div><div>-</div><div>Devang</div></body></html>