[llvm-bugs] [Bug 42351] New: std::condition_variable::wait_for unconditionally uses 'long double' arithmetic, using emulation code on ARM

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jun 20 18:40:46 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=42351

            Bug ID: 42351
           Summary: std::condition_variable::wait_for unconditionally uses
                    'long double' arithmetic, using emulation code on ARM
           Product: libc++
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: jacob.benoit.1 at gmail.com
                CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com

See
https://git.llvm.org/klaus/libcxx/blob/release_37/include/__mutex_base#L-379

Use of 'long double' here may seem innocuous from a x86 perspective, but on ARM
(both A32 and A64) it causes the compiler to emit emulation code.  I can live
with the slowness in this context, but we discovered this while debugging a
binary size regression (+8k) from a change to a program that made it use
wait_until (which, in current libc++ implementation, calls wait_for).

Top symbols added:
 size (bytes)   type   name
+0000000000002836 t __subtf3
@@ -127,0 +129 @@
+0000000000001760 t __multf3
@@ -934,0 +937,2 @@
+0000000000000316 t __lttf2
+0000000000000316 t __letf2

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190621/92e07b6e/attachment-0001.html>


More information about the llvm-bugs mailing list