summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/casts.m
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Analysis/casts.m')
-rw-r--r--clang/test/Analysis/casts.m10
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/test/Analysis/casts.m b/clang/test/Analysis/casts.m
index 37b8e3d122b..68de2c8ef7c 100644
--- a/clang/test/Analysis/casts.m
+++ b/clang/test/Analysis/casts.m
@@ -4,8 +4,7 @@
// Test function pointer casts. Currently we track function addresses using
// loc::FunctionVal. Because casts can be arbitrary, do we need to model
// functions with regions?
-
-typedef void (*MyFuncTest1)(void);
+typedef void* (*MyFuncTest1)(void);
MyFuncTest1 test1_aux(void);
void test1(void) {
@@ -14,3 +13,10 @@ void test1(void) {
p = ((void*) test1_aux());
if (p != ((void*) 0)) x = (*p)();
}
+
+// Test casts from void* to function pointers. Same issue as above:
+// should we eventually model function pointers using regions?
+void* test2(void *p) {
+ MyFuncTest1 fp = (MyFuncTest1) p;
+ return (*fp)();
+}
OpenPOWER on IntegriCloud