Merge pull request #1647 from zlaski-semmle/zlaski/builtin-types-compatible-p

Approved by dave-bartolomeo
This commit is contained in:
semmle-qlci
2019-07-30 20:43:39 +01:00
committed by GitHub
3 changed files with 21 additions and 3 deletions

View File

@@ -210,10 +210,15 @@ class BuiltInOperationIsUnion extends BuiltInOperation, @isunionexpr {
}
/**
* A C++ `__builtin_types` expression (used by some implementations of the type_traits header).
* DEPRECATED: Use `BuiltInOperationBuiltInTypesCompatibleP` instead.
*/
class BuiltInOperationBuiltInTypes extends BuiltInOperation, @typescompexpr {
override string toString() { result = "__builtin_types" }
deprecated class BuiltInOperationBuiltInTypes = BuiltInOperationBuiltInTypesCompatibleP;
/**
* A C++ `__builtin_types_compatible_p` expression (used by some implementations of the type_traits header).
*/
class BuiltInOperationBuiltInTypesCompatibleP extends BuiltInOperation, @typescompexpr {
override string toString() { result = "__builtin_types_compatible_p" }
}
/**

View File

@@ -1,4 +1,6 @@
| choose_expr.c:3:13:3:42 | __builtin_choose_expr |
| types.c:4:9:4:57 | __builtin_types_compatible_p |
| types.c:6:16:6:65 | __builtin_types_compatible_p |
| varargs.c:7:5:7:32 | __builtin_va_start |
| varargs.c:9:13:9:37 | __builtin_va_arg |
| varargs.c:11:5:11:24 | __builtin_va_end |

View File

@@ -0,0 +1,11 @@
int main(int argc, char **argv) {
char *s;
if (__builtin_types_compatible_p(__typeof__(s), long)) {
puts("long");
} else if (__builtin_types_compatible_p(__typeof__(s), char*)) {
puts("str");
}
return (0);
};