/*
 * Bernoulli Compiler
 * Copyright (c) Cornell University
 * Department of Computer Science
 * 
 * Kamen Yotov (kamen@yotov.org)
 * 
 * $Source: C:/CVS/kyotov/kyotov/Research/BC/C/Samples/t000.cpp,v $
 * $Revision: 1.1 $
 * $Date: 2002/08/14 02:22:48 $
 */

#include <iostream>

using namespace std;

int i[4];

typedef int I;

const int (*j) = 0;

int *l, m;

unsigned __int64 t = ~0LU;

struct tag
{
	int i : 4 + 3;
};

void doit (int (*&x))
{
	x = new int[10];
}

void it ()
{
	int *a;

	doit(a);
}

I inline k (register int t)
{
	const int * volatile f;

	f = &m;

	return 5;
}

/*
void main ()
{
	cout << hex << t << endl;
}
*/

struct S
{
 int r;
};

struct T : public S
{
 ;
};

void Print(S *&s)
{
 cout << s->r << endl;
};



int
main()
{
 T* t = new T();

 t->r = 90;


 S* s = (S*)t;

 //Print(s);
 //Print((S*&)t);

 // above two work,
 // below does not work

 //Print((S*)t);
// Print(t);

 return 0;
}

typedef int y;

void x (int t)
{
	x;

	int ham (int t);

	{
		double t = 3.4;
	}

//	y (m);

	for (int i = 0, j = 4; i < 10; i++)
	{
		double i = 5.3;

		cout << i;
	}
}

typedef int TTT;

void f3(int TTT);
