[DebugInfo] Update loop metadata for inlined loops
authorOrlando Cazalet-Hyams <orlando.hyams@sony.com>
Mon, 20 May 2019 09:40:44 +0000 (09:40 +0000)
committerOrlando Cazalet-Hyams <orlando.hyams@sony.com>
Mon, 20 May 2019 09:40:44 +0000 (09:40 +0000)
commit6e8f1a80cd988db8870aff9c3bc2ca7a20e04104
tree45fd1e964265cc60d808b04e1e8ac432f433abbb
parentcb18647b19ef1a6b42409c4e39bd9b8caf9555a7
[DebugInfo] Update loop metadata for inlined loops

Summary:
Currently, when a loop is cloned while inlining function (A) into function (B) the loop metadata is copied and then not modified at all. The loop metadata can encode the loop's start and end DILocations. Therefore, the new inlined loop in function (B) may have loop metadata which shows start and end locations residing in function (A).

This patch ensures loop metadata is updated while inlining so that the start and end DILocations are given the "inlinedAt" operand. I've also added a regression test for this.

This fix is required for D60831 because that patch uses loop metadata to determine the DILocation for the branches of new loop preheaders.

Reviewers: aprantl, dblaikie, anemet

Reviewed By: aprantl

Subscribers: eraman, hiraditya, llvm-commits

Tags: #debug-info, #llvm

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

llvm-svn: 361132
llvm/lib/Transforms/Utils/InlineFunction.cpp
llvm/test/Transforms/Inline/inlined-loop-metadata.ll [new file with mode: 0755]