title: When does llvm compiler split basic blocks
body: <p>When I check the ll file generated under O0 switch, I saw many single-in-single-out basic blocks along one program path. What those basic blocks do are basically branch to another basic blocks. I'm wondering why those basic blocks are needed, and what is the criteria of generating such basic blocks. </p>