[Mem2Reg] Create merged debug locations for inserted phis
authorVedant Kumar <vsk@apple.com>
Tue, 17 Apr 2018 22:03:08 +0000 (22:03 +0000)
committerVedant Kumar <vsk@apple.com>
Tue, 17 Apr 2018 22:03:08 +0000 (22:03 +0000)
commitb0585893ccb78508e900754c4974b0e95aafd4bf
tree653e6048c34ad70f5b280b4a6601d3f7f7beaf2c
parent4b29172d095d5aed0d4efd014a70dddd06dfe125
[Mem2Reg] Create merged debug locations for inserted phis

Track the debug locations of the incoming values to newly-created phis,
and apply merged debug locations to the phis.

A merged location will be on line 0, but will have the correct scope
set. This improves crash reporting when an inlined instruction with a
merged location triggers a machine exception. A debugger will be able to
narrow down the crash to the correct inlined scope, instead of simply
pointing to the outer scope of the caller.

Taken together with a change allows generating merged line-0 locations
for  instructions which aren't calls, this results in a 0.5% increase in
the uncompressed size of the .debug_line section of a stage2+Release
build of clang (-O3 -g).

rdar://33858697

Differential Revision: https://reviews.llvm.org/D45397

llvm-svn: 330227
llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
llvm/test/Transforms/Mem2Reg/dbg-inline-scope-for-phi.ll [new file with mode: 0644]