|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  |  | 
|  | /* | 
|  | *  cast.c | 
|  | *  testObjects | 
|  | * | 
|  | *  Created by Blaine Garst on 2/17/09. | 
|  | * | 
|  | */ | 
|  |  | 
|  | // PURPOSE should allow casting of a Block reference to an arbitrary pointer and back | 
|  | // CONFIG open | 
|  |  | 
|  | #include <stdio.h> | 
|  |  | 
|  |  | 
|  |  | 
|  | int main(int argc, char *argv[]) { | 
|  |  | 
|  | void (^aBlock)(void); | 
|  | int *ip; | 
|  | char *cp; | 
|  | double *dp; | 
|  |  | 
|  | ip = (int *)aBlock; | 
|  | cp = (char *)aBlock; | 
|  | dp = (double *)aBlock; | 
|  | aBlock = (void (^)(void))ip; | 
|  | aBlock = (void (^)(void))cp; | 
|  | aBlock = (void (^)(void))dp; | 
|  | printf("%s: success", argv[0]); | 
|  | return 0; | 
|  | } |