186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst//
286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst//                     The LLVM Compiler Infrastructure
386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst//
486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// This file is distributed under the University of Illinois Open Source
586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// License. See LICENSE.TXT for details.
686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst/*
886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst *  cast.c
986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst *  testObjects
1086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst *
1186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst *  Created by Blaine Garst on 2/17/09.
1286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst *
1386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst */
1486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
1586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// PURPOSE should allow casting of a Block reference to an arbitrary pointer and back
1686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst// CONFIG open
1786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
1886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst#include <stdio.h>
1986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
2086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
2186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
2286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garstint main(int argc, char *argv[]) {
2386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
2486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    void (^aBlock)(void);
2586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    int *ip;
2686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    char *cp;
2786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    double *dp;
2886d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst
2986d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    ip = (int *)aBlock;
3086d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    cp = (char *)aBlock;
3186d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    dp = (double *)aBlock;
3286d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    aBlock = (void (^)(void))ip;
3386d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    aBlock = (void (^)(void))cp;
3486d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    aBlock = (void (^)(void))dp;
3586d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    printf("%s: success", argv[0]);
3686d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst    return 0;
3786d0ba4286ec42dcd055bd22434c7f40009834bdBlaine Garst}
38