Resubmit "[DebugInfo] Update loop metadata for inlined loops"
authorOrlando Cazalet-Hyams <orlando.hyams@sony.com>
Mon, 20 May 2019 13:02:30 +0000 (13:02 +0000)
committerOrlando Cazalet-Hyams <orlando.hyams@sony.com>
Mon, 20 May 2019 13:02:30 +0000 (13:02 +0000)
commited67bf8d2f31088a611603550965ccf823cb5eb9
tree14bcded4f5d2bc61951d22880fd201742e3abc58
parentddd5d5dbc8ddcf37fd3b29f6568ad42ea9f882e1
Resubmit "[DebugInfo] Update loop metadata for inlined loops"

This reverts commit 95805bc425b264805a472232a75ed2ffe58aceda.
I've squashed the test fix into this commit.

[DebugInfo] Update loop metadata for inlined loops

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: 361149
llvm/lib/Transforms/Utils/InlineFunction.cpp
llvm/test/Transforms/Inline/inlined-loop-metadata.ll [new file with mode: 0755]