diff options
Diffstat (limited to 'clang/test/Analysis/casts.m')
-rw-r--r-- | clang/test/Analysis/casts.m | 10 |
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)(); +} |