[PATCH] D22666: Frontend: Fix mcount inlining bug
Honggyu Kim via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 27 23:38:22 PDT 2016
honggyu.kim updated this revision to Diff 65879.
honggyu.kim added a comment.
I've updated the diff that can be working with https://reviews.llvm.org/D22825. I appreciate your work in backend, Hal.
Please correct me if I'm wrong.
https://reviews.llvm.org/D22666
Files:
lib/CodeGen/CodeGenFunction.cpp
Index: lib/CodeGen/CodeGenFunction.cpp
===================================================================
--- lib/CodeGen/CodeGenFunction.cpp
+++ lib/CodeGen/CodeGenFunction.cpp
@@ -428,14 +428,6 @@
EmitNounwindRuntimeCall(F, args);
}
-void CodeGenFunction::EmitMCountInstrumentation() {
- llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
-
- llvm::Constant *MCountFn =
- CGM.CreateRuntimeFunction(FTy, getTarget().getMCountName());
- EmitNounwindRuntimeCall(MCountFn);
-}
-
// OpenCL v1.2 s5.6.4.6 allows the compiler to store kernel argument
// information in the program executable. The argument information stored
// includes the argument name, its type, the address and access qualifiers used.
@@ -794,8 +786,12 @@
if (ShouldInstrumentFunction())
EmitFunctionInstrumentation("__cyg_profile_func_enter");
+ // Since emitting mcount call here impacts optimization phase such as function
+ // inlining, we just mark an attribute to insert a mcount call in backend.
+ // Attribute "counting-function" is set to mcount function name which is
+ // architecture dependent, and it is processed by CountingFunctionInserter.
if (CGM.getCodeGenOpts().InstrumentForProfiling)
- EmitMCountInstrumentation();
+ Fn->addFnAttr("counting-function", getTarget().getMCountName());
if (RetTy->isVoidType()) {
// Void type; nothing to return.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22666.65879.patch
Type: text/x-patch
Size: 1393 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160728/a68680a5/attachment-0001.bin>
More information about the cfe-commits
mailing list