diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-05-08 19:29:21 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-08 19:29:21 -0400 |
| commit | d7f8368da86241f47e97257e737b6fb14bf5f773 (patch) | |
| tree | 260d9d2d3aa68a96d1ea7594234fae0c3b90640e /src | |
| parent | ea3f5905f0635d0c0cb3983ba5ca6c92859e9d81 (diff) | |
| parent | cd019ee502d6792c1615b0fab10827db419beab4 (diff) | |
| download | zig-d7f8368da86241f47e97257e737b6fb14bf5f773.tar.gz zig-d7f8368da86241f47e97257e737b6fb14bf5f773.zip | |
Merge pull request #11609 from ziglang/win-compiler-rt
compiler-rt: avoid symbol collisions with Windows libc
Diffstat (limited to 'src')
| -rw-r--r-- | src/Sema.zig | 9 | ||||
| -rw-r--r-- | src/stage1/ir.cpp | 6 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 76edfbf2cd..2e7e5c9293 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18673,6 +18673,15 @@ fn coerceInMemoryAllowed( } } + // Differently-named floats with the same number of bits. + if (dest_ty.zigTypeTag() == .Float and src_ty.zigTypeTag() == .Float) { + const dest_bits = dest_ty.floatBits(target); + const src_bits = src_ty.floatBits(target); + if (dest_bits == src_bits) { + return .ok; + } + } + // Pointers / Pointer-like Optionals var dest_buf: Type.Payload.ElemType = undefined; var src_buf: Type.Payload.ElemType = undefined; diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp index 2f4e0aa0e7..62834e564d 100644 --- a/src/stage1/ir.cpp +++ b/src/stage1/ir.cpp @@ -4480,6 +4480,12 @@ static ConstCastOnly types_match_const_cast_only(IrAnalyze *ira, ZigType *wanted return result; } + if (wanted_type->id == ZigTypeIdFloat && actual_type->id == ZigTypeIdFloat) { + if (wanted_type->data.floating.bit_count == actual_type->data.floating.bit_count) { + return result; + } + } + if (wanted_type->id == ZigTypeIdVector && actual_type->id == ZigTypeIdVector) { if (actual_type->data.vector.len != wanted_type->data.vector.len) { result.id = ConstCastResultIdVectorLength; |
