<div dir="ltr"><div><div><div><div>My back-end code generator uses LLVM 5.0.1 to optimize and generate code for x86_64.<br><br></div>If I run it on a given sample of IR, it takes almost 5 minutes to generate object code.  95%+ of this time is spent in MergeConsecutiveStores().  (One function has a basic block with 14000 instructions, which is a pathological case for MergeConsecutiveStores.)<br><br></div>If, instead, I dump out the LLVM IR, and manually run both opt and llc on it with -O2, the whole affair takes only 2 minutes.<br><br></div>I am using a dynamically linked LLVM library.  I have verified using GDB that both my code generator and llc are invoking the shared library (i.e. the exact same code) so I would not expect to see a 2.5x performance difference.<br><br></div>What could explain this?<br><br></div>