On Monday 07 January 2013, 12:17:41, Stephen Paul Weber wrote:
> >
> >So, it may be the way that the internal autoconf check works for
> >cross-compiling violates an assumption about how that macro works.
> 
> Indeed.  <http://stackoverflow.com/a/14200277/8611> confirms that the way
> this macro works for cros-compiling will not work for floating point types.

Apart from the fact that it is not an integer constant expression (note: clang 
doesn't mind that, it generates a warning with -pedantic and needs -pedantic-
errors to produce an error; gcc-4.6.2 produces an error by default), it 
wouldn't test anything meaningful if it were.

It declares

static int test_array [1 - 2 * !(something)];

and something is (otherthing >= 0), where otherthing is of the form

a == b

Now, the result of a comparison is either 0 or 1, so (otherthing >= 0) is 
always true (1), and !(something) is 0.

Thus

conftest.c:119:12: error: size of array 'test_array' is negative

is very suspicious.

> 
> I think my vote would be to restructure the checks such that non-integral
> types are specially handled.

The purpose of the test was to check whether two types have the same size, if 
I recall correctly?


_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to