using System;

struct Foo<T>
{
	public T Data;

	public Foo (T data)
	{
		this.Data = data;
	}
}

class Test<T>
{
	public Foo<T> GetFoo (T data)
	{
		return new Foo<T> (data);
	}
}

class X
{
	public static int Main ()
	{
		Test<long> test = new Test<long> ();
		Foo<long> foo = test.GetFoo (0x800);
		//
		// This is a very simple test, just make sure the struct
		// is returned correctly.  This was broken until recently
		// and I just fixed it on amd64.
		if (foo.Data != 0x800)
			return 1;
		return 0;
	}
}