http://llvm.org/bugs/show_bug.cgi?id=12747
Bug #: 12747
Summary: CallGraph Fails to List Prototype only functions
Product: clang
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Static Analyzer
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
Currently the callgraph class defined at clang/lib/Analysis/CallGraph.cpp fails
to list the full callgraph when calls are made to functions without
definitions.
This problem occurs in today's version of the svn head.
To Replicate:
Use clang::CallGraph to generate a callgraph from:
---------------------------------------
//Function prototype (eg from a header)
void prototype_only(void);
void trivial_function(void)
{}
void calling_function(void)
{
prototype_only();
trivial_function();
}
---------------------------------------
Actual Output: [from CallGraph::dump()]
--- Call graph Dump ---
Function: < root > calls: trivial_function calling_function
Function: trivial_function calls:
Function: calling_function calls: trivial_function
Expected Output:
--- Call graph Dump ---
Function: < root > calls: trivial_function calling_function
Function: trivial_function calls:
Function: calling_function calls: prototype_only trivial_function
Source of the issue:
This behavior occurs due to CallGraph::includeInGraph().
It eliminates any Declarations that are not definitions, which makes sense for
top level elements, but IMO it seems like a bug for function calls themselves.
72 if (!FD->isThisDeclarationADefinition() ||
73 FD->isDependentContext())
74 return false;
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs