mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
C++: Move builtin function identification to its own table
This commit is contained in:
@@ -282,9 +282,12 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function {
|
||||
* definition, if possible.)
|
||||
*/
|
||||
override Location getLocation() {
|
||||
if exists(this.getDefinition())
|
||||
then result = this.getDefinitionLocation()
|
||||
else result = this.getADeclarationLocation()
|
||||
if this instanceof BuiltInFunction
|
||||
then result instanceof UnknownLocation // a dummy location for the built-in function
|
||||
else
|
||||
if exists(this.getDefinition())
|
||||
then result = this.getDefinitionLocation()
|
||||
else result = this.getADeclarationLocation()
|
||||
}
|
||||
|
||||
/** Gets a child declaration of this function. */
|
||||
@@ -896,17 +899,9 @@ class FunctionTemplateSpecialization extends Function {
|
||||
* A GCC built-in function. For example: `__builtin___memcpy_chk`.
|
||||
*/
|
||||
class BuiltInFunction extends Function {
|
||||
BuiltInFunction() { functions(underlyingElement(this), _, 6) }
|
||||
|
||||
/** Gets a dummy location for the built-in function. */
|
||||
override Location getLocation() {
|
||||
suppressUnusedThis(this) and
|
||||
result instanceof UnknownLocation
|
||||
}
|
||||
BuiltInFunction() { builtin_functions(underlyingElement(this)) }
|
||||
}
|
||||
|
||||
private predicate suppressUnusedThis(Function f) { any() }
|
||||
|
||||
/**
|
||||
* A C++ user-defined literal [N4140 13.5.8].
|
||||
*/
|
||||
|
||||
@@ -288,12 +288,13 @@ macro_argument_expanded(
|
||||
|
||||
/*
|
||||
case @function.kind of
|
||||
1 = @normal_function
|
||||
0 = @unknown_function
|
||||
| 1 = @normal_function
|
||||
| 2 = @constructor
|
||||
| 3 = @destructor
|
||||
| 4 = @conversion_function
|
||||
| 5 = @operator
|
||||
| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
|
||||
// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk
|
||||
| 7 = @user_defined_literal
|
||||
| 8 = @deduction_guide
|
||||
;
|
||||
@@ -305,6 +306,10 @@ functions(
|
||||
int kind: int ref
|
||||
);
|
||||
|
||||
builtin_functions(
|
||||
int id: @function ref
|
||||
)
|
||||
|
||||
function_entry_point(
|
||||
int id: @function ref,
|
||||
unique int entry_point: @stmt ref
|
||||
|
||||
Reference in New Issue
Block a user