<div dir="ltr"><br><div>Hi All,</div><div><br></div><div>Type uniquing for C++ is in. Some data for Xalan with -flto -g:</div><div><div>9.9MB raw dwarf size, peak memory usage at 2.8GB</div><div>The raw dwarf size was 58MB, memory usage was 7GB back in May, 2013.</div>
<div>Other efforts at size reduction helped, and type uniquing improved on top of those.</div></div><div><br></div><div><div>Data on building clang with "-flto -g" after type uniquing:</div><div>  3.4GB MDNodes after parsing all bc files, 7GB MDNodes after linking all bc files</div>
<div>  4.6GB DIEs</div><div>  4G MCContext</div></div><div>  --> The memory usage is still too big.</div><div><br></div><div>So how to reduce the memory footprint at MDNode level:<br></div><div><div>  1> Combine integers into MDString and further combining MDStrings (see PR17891)</div>
<div>       A partial implementation on the important debug info nodes can reduce the MDNodes from 7GB to 5.7GB</div><div>  2> Release MDNodes that are only used by source modules (I will send out a proposal)</div><div>
        An estimation based on partial implementation: this will reduce MDNodes from 5.7GB to 3.9GB</div></div><div><br></div><div>Thanks,</div><div>Manman</div><div><br></div><div> </div><div><br></div><div><br></div></div>