abseil / abseil/abseil-cpp

Shall the workaround for llvm.38289 be removed?

未關閉
#1,205 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
bug
主要語言
C++
星號
18.1k
分支
3.2k
平均合併
20 小時 36 分鐘
30 天內合併 PR
1

描述

**Describe the bug**

I notice several workarounds for llvm.38289:

https://github.com/abseil/abseil-cpp/blob/9eff97861b88999428d1254f95c83d94a2e95944/absl/numeric/int128.cc
// Workaround for clang bug: https://bugs.llvm.org/show_bug.cgi?id=38289
// Casting from long double to uint64_t is miscompiled and drops bits.
// It is more work, so only use when we need the workaround.
uint128 MakeUint128FromFloat(long double v) {...

https://github.com/abseil/abseil-cpp/blob/1ae9b71c474628d60eb251a3f62967fe64151bb2/absl/strings/internal/str_format/float_conversion.cc
#if defined(__clang__) && !defined(__SSE3__)
// Workaround for clang bug: https://bugs.llvm.org/show_bug.cgi?id=38289
// Casting from long double to uint64_t is miscompiled and drops bits.
(!std::is_same::value ||
!std::is_same::value) &&
#endif

This compiler bug is already fixed: https://bugs.llvm.org/show_bug.cgi?id=38289
Shall these workarounds be removed?

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。