Andrew Kelley a024aff932 make f80 less hacky; lower as u80 on non-x86
Get rid of `std.math.F80Repr`. Instead of trying to match the memory
layout of f80, we treat it as a value, same as the other floating point
types. The functions `make_f80` and `break_f80` are introduced to
compose an f80 value out of its parts, and the inverse operation.

stage2 LLVM backend: fix pointer to zero length array tripping LLVM
assertion. It now checks for when the element type is a zero-bit type
and lowers such thing the same way that pointers to other zero-bit types
are lowered.

Both stage1 and stage2 LLVM backends are adjusted so that f80 is lowered
as x86_fp80 on x86_64 and i386 architectures, and identical to a u80 on
others. LLVM constants are lowered in a less hacky way now that #10860
is fixed, by using the expression `(exp << 64) | fraction` using llvm
constants.

Sema is improved to handle c_longdouble by recursively handling it
correctly for whatever the float bit width is. In both stage1 and
stage2.
2022-02-12 11:18:23 +01:00
..
2022-02-06 22:21:46 -07:00
2022-01-27 19:35:08 +02:00
2022-01-17 16:56:50 +02:00
2022-01-07 00:06:06 -05:00
2022-02-07 09:55:47 +01:00
2021-10-27 16:07:48 -04:00
2022-02-08 10:03:29 +01:00
2022-01-07 00:06:06 -05:00
2022-01-30 21:27:52 +02:00
2022-01-07 00:06:06 -05:00
2022-02-05 16:33:00 +02:00