<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I've started investigating -O0 -g compile times with llvm-gcc, which are pretty important for people in development mode (e.g. all debug builds of llvm itself!).<div><br></div><div>I've found some interesting things.  I'm testing with mainline as of r52596 in a Release build and with checking disabled in the front-end.  My testcase is a large C++ source file: my friend InstructionCombining.cpp.  I build it the normal way we build it in a debug mode but with the output redirected to /dev/null, which is:</div><div><br></div><div>time llvm-g++ -I/Users/sabre/llvm/include -I/Users/sabre/llvm/lib/Transforms/Scalar -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -g -fno-exceptions -Woverloaded-virtual -pedantic -Wall -W -Wwrite-strings -Wno-long-long -Wunused -Wno-unused-parameter -c -MMD -MP -MF "/Users/sabre/llvm/lib/Transforms/Scalar/Debug/InstructionCombining.d.tmp" -MT "/Users/sabre/llvm/lib/Transforms/Scalar/Debug/InstructionCombining.lo" -MT "/Users/sabre/llvm/lib/Transforms/Scalar/Debug/InstructionCombining.o" -MT "/Users/sabre/llvm/lib/Transforms/Scalar/Debug/InstructionCombining.d" InstructionCombining.cpp -o /dev/null</div><div><br></div><div>One thing that is interesting is that we are significantly slower than g++-4.2 on this testcase.  I'm seeing these timings:</div><div><br></div><div>GCC 4.2 -c: 4.27s</div><div>GCC 4.2 -S: 3.59s</div><div>LLVM4.2 -c: 9.30s</div><div><div>LLVM4.2 -S: 8.40s</div><br></div><div>One thing I noticed is that with llvm-gcc, the assembler is taking longer than with gcc 4.2 (.9s vs .68s).  This turns out to be because we make much larger output than GCC does:</div><div><br></div><div>gcc.s  -> 8943786</div><div>llvm.s -> 13424378</div><div>gcc.o  -> 2055892</div><div>llvm.o -> 3044512</div><div><br></div><div>Why is this? Lets look at the contents:</div><div><br></div><div><div><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">$ sdiff -w 120 gcc.size llvm.size</span></font></div><div><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Segment : 1495968</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                                 </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">     </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Segment : 2211617</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __text): 251661</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">              </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __text): 290873</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">       </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_frame): 82752</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_frame): 80240</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_info): 671478</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_info): 1240778</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">       </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_abbrev): 3241</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_abbrev): 1535</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_aranges): 48</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_aranges): 0</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">  </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_macinfo): 0</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                         </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_macinfo): 0</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">  </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_line): 126106</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_line): 149797</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_loc): 0</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_loc): 0</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_pubnames): 168873</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_pubnames): 165104</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_pubtypes): 32449</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_str): 17541</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">         </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_str): 0</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_ranges): 456</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DWARF, __debug_ranges): 0</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __const): 100</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="white-space: normal; "><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">            </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __const): 136</span></font></span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">       </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __cstring): 11543</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">            </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __cstring): 12678</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">     </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __data): 64</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                  </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __data): 76</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __const_coal): 48</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">            </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __const_coal): 128</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">           </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">      </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __mod_init_func): 4</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __mod_init_func): 4</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __bss): 32</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                   </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__DATA, __bss): 65</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __textcoal_nt): 116324</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __textcoal_nt): 168920</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __literal8): 8</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                       </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __eh_frame): 88636</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __StaticInit): 147</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">           </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__TEXT, __StaticInit): 166</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__IMPORT, __jump_table): 12790</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">               </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">          </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__IMPORT, __jump_table): 12410</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">        </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__IMPORT, __pointers): 136</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">           </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">Section (__IMPORT, __pointers): 128</span></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">    </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">total 1495929</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                                 </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">             </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">total 2211546</span></font></div><div><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">total 1495968</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">                                              </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">   |</span></font><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">     </span></font></span><font class="Apple-style-span" face="Courier" size="2"><span class="Apple-style-span" style="font-size: 10px;">total 2211617</span></font></div><div><br></div><div><br></div><div>There are several problems here:</div><div><br></div><div>1. We're emitting __eh_frame even though it is being built with -fno-exceptions: <a href="http://llvm.org/PR">http://llvm.org/PR</a>2481.  Just the excess labels alone give the assembler a lot more work to do.</div><div>2. The __debug_info section is twice as big and the __debug_line section is a bit bigger: <a href="http://llvm.org/PR2482">http://llvm.org/PR2482</a></div><div>3. We aren't outputting text or data __const_coal sections.  I'm not sure what these are, but they seem preferable to __textcoal_nt: <a href="http://llvm.org/PR">http://llvm.org/PR</a>2483</div><div><br></div><div>Also, we have no __debug_pubtypes, __debug_aranges, __debug_str, __debug_ranges or sections.  I have no idea what these are, but could be a problem :)</div><div><br></div><div>Fixing these are important for a couple of reasons.  Generating more output takes more time, both in the assembler but also in the compiler to push all this around.</div><div><br></div><div>Moving up from the assembler, according to -ftime-report, our time in cc1plus is basically going into:</div><div><br></div><div>LLVM Passes:</div><div>  2.65s -> X86 DAG->DAG Instruction Selection (all selectiondag stuff)</div><div>  0.54s -> X86 AT&T-Style Assembly Printer</div><div>  0.42s -> Live Variable Analysis</div><div>  0.19s -> Local Register Allocator</div><div>  ...</div><div><br></div><div>C++ Front-end time:</div><div>  - 2.22s Tree to LLVM translator</div><div>  - 1.94s parser</div><div>  - 2.07s name lookup</div><div>  - 0.66s preprocessor</div><div>  - 0.20s gimplify</div><div><br></div><div>This doesn't add up to 8.4s because -ftime-report adds significant overhead.  It isn't to be trusted, but is a decent indicator. </div><div><br></div><div>From this, it looks like there is significant room for improvement in many of the LLVM pieces.  The two that sick out are the tree to llvm translator and the selection dag related stuff.  However, even the asmprinter is taking a significant amount of time.  This is partially because it has to output a ton of stuff, but even then it could be improved.</div><div><br></div><div>For example, picking on the frontend for a bit, we spend 10% of "-emit-llvm -O0 -g -c" time in DebugInfo::EmitFunctionStart, most of which is spent recursively walking the debug info with DISerializer.  We also spend 9.3% of the time in DebugInfo::EmitDeclare, 10% of the time in eraseLocalLLVMValues, 12% of the time writing the .bc file (which isn't relevant to normal use), 21% of time parsing (which we can't help), </div><div><br></div><div><br></div><div>Anyone interested in picking off a piece and tackling it?</div><div><br></div><div>-Chris </div><div><br></div></div></body></html>