Skip to content
  • Honggyu Kim's avatar
    [Frontend] Fix mcount inlining bug · 3752b19a
    Honggyu Kim authored
    Since some profiling tools, such as gprof, ftrace, and uftrace, use
    -pg option to generate a mcount function call at the entry of each
    function. Function invocation can be detected by this hook function.
    
    But mcount insertion is done before function inlining phase in clang,
    sometime a function that already has a mcount call can be inlined in the
    middle of another function.
    
    This patch adds an attribute "counting-function" to each function
    rather than emitting the mcount call directly in frontend so that this
    attribute can be processed in backend. Then the mcount calls can be
    properly inserted in backend after all the other optimizations are
    completed.
    
    Link: https://llvm.org/bugs/show_bug.cgi?id=28660
    
    Reviewers: hans, rjmccall, hfinkel, rengolin, compnerd
    
    Subscribers: shenhan, cfe-commits
    
    Differential Revision: https://reviews.llvm.org/D22666
    
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280355 91177308-0d34-0410-b5e6-96231b3b80d8
    3752b19a