MergeFunctions: Preserve debug info in thunks, under option -mergefunc-preserve-debug...
authorAnmol P. Paralkar <anmparal@cisco.com>
Sat, 21 Jan 2017 02:02:56 +0000 (02:02 +0000)
committerAnmol P. Paralkar <anmparal@cisco.com>
Sat, 21 Jan 2017 02:02:56 +0000 (02:02 +0000)
commit910dc8de3f39d2544751f3a433ba81f326d10280
treeabfb20ffc7d818d9787b5639f5c9a42c923d96ed
parentba4041ac4fd09d9d2805b5d8cc0786b6234d8f12
MergeFunctions: Preserve debug info in thunks, under option -mergefunc-preserve-debug-info

Summary:
Under option -mergefunc-preserve-debug-info we:
- Do not create a new function for a thunk.
- Retain the debug info for a thunk's parameters (and associated
  instructions for the debug info) from the entry block.
  Note: -debug will display the algorithm at work.
- Create debug-info for the call (to the shared implementation) made by
  a thunk and its return value.
- Erase the rest of the function, retaining the (minimally sized) entry
  block to create a thunk.
- Preserve a thunk's call site to point to the thunk even when both occur
  within the same translation unit, to aid debugability. Note that this
  behaviour differs from the underlying -mergefunc implementation which
  modifies the thunk's call site to point to the shared implementation
  when both occur within the same translation unit.

Reviewers: echristo, eeckstein, dblaikie, aprantl, friss

Reviewed By: aprantl

Subscribers: davide, fhahn, jfb, mehdi_amini, llvm-commits

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

llvm-svn: 292702
llvm/lib/Transforms/IPO/MergeFunctions.cpp
llvm/test/Transforms/MergeFunc/mergefunc-preserve-debug-info.ll [new file with mode: 0644]