Make it illegal for two Functions to point to the same DISubprogram
authorAdrian Prantl <aprantl@apple.com>
Mon, 8 May 2017 21:17:08 +0000 (21:17 +0000)
committerAdrian Prantl <aprantl@apple.com>
Mon, 8 May 2017 21:17:08 +0000 (21:17 +0000)
commit200a5ef5268b7d828f62195a6f55963b10ae221a
tree12584665478875689454cd4b7c354f983422ee44
parenta9d8be68c1c3b6081ceef7eceb889fa429e626b2
Make it illegal for two Functions to point to the same DISubprogram

As recently discussed on llvm-dev [1], this patch makes it illegal for
two Functions to point to the same DISubprogram and updates
FunctionCloner to also clone the debug info of a function to conform
to the new requirement. To simplify the implementation it also factors
out the creation of inlineAt locations from the Inliner into a
general-purpose utility in DILocation.

[1] http://lists.llvm.org/pipermail/llvm-dev/2017-May/112661.html
<rdar://problem/31926379>

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

llvm-svn: 302469
llvm/include/llvm/IR/DebugLoc.h
llvm/lib/IR/DebugLoc.cpp
llvm/lib/IR/Verifier.cpp
llvm/lib/Transforms/Utils/CloneFunction.cpp
llvm/lib/Transforms/Utils/InlineFunction.cpp
llvm/test/Verifier/metadata-function-dbg.ll
llvm/unittests/Transforms/Utils/Cloning.cpp