rjmccall added a comment. In https://reviews.llvm.org/D27680#630192, @ahatanak wrote:
> Ah, good idea. That sounds like a much simpler and less invasive approach. I > agree that the performance impact would probably be small, and if it turns > out to have a significant impact, we can reduce the number of times we move > the lifetime.start (without moving it retroactively) by checking whether a > label was seen. Oh, good idea, that's a great way to heuristically get the performance back if we decide it's important. ================ Comment at: lib/CodeGen/CGDecl.cpp:917 + if (!InsertPt) + Builder.SetInsertPoint(BB, BB->begin()); + // If InsertPt is a terminator, insert it before InsertPt. ---------------- BB->begin() is not necessarily a legal place to insert a call. This could happen if e.g. a scope was unconditionally entered after a statement including a ternary expression. Also, I think lexical scopes don't necessarily have an active basic block upon entry, because their entry can be unreachable. This happens most importantly with e.g. switch statements, but can also happen with goto or simply with unreachable code (which it's still important to not crash on). https://reviews.llvm.org/D27680 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits