Commit Graph

28 Commits

Author SHA1 Message Date
Eric Fiselier 1ec026252b Fix Libc++ build with MinGW64
Summary: This patch corrects the build errors I encountered when building on MinGW64.

Reviewers: mati865, rnk, compnerd, smeenai, bcraig

Reviewed By: mati865, smeenai

Subscribers: martell, chapuni, cfe-commits

Differential Revision: https://reviews.llvm.org/D33082

llvm-svn: 304360
2017-05-31 22:14:05 +00:00
Bruno Cardoso Lopes d7849a6c83 [Chrono][Darwin] Include header for gettimeofday
Followup on r291466 and include the proper header. This fixes:
https://build.chromium.org/p/chromium.fyi/builders/ClangToTMac/builds/12620/steps/gclient%20runhooks/logs/stdio

llvm-svn: 291517
2017-01-10 00:51:02 +00:00
Bruno Cardoso Lopes e542373920 [Chrono][Darwin] Make steady_clock use CLOCK_UPTIME_RAW
Use CLOCK_UPTIME_RAW in case clock_gettime is available on Darwin.

On Apple platforms only CLOCK_UPTIME_RAW or mach_absolute_time are able
to time functions in the nanosecond range. Thus, they are the only
acceptable implementations of steady_clock.

Differential Revision: https://reviews.llvm.org/D27429

rdar://problem/29449467

llvm-svn: 291466
2017-01-09 19:21:48 +00:00
Saleem Abdulrasool b2826a1ddc clean up use of _WIN32
Replace the use of _WIN32 in libc++. Replace most use with a C runtime
check _LIBCPP_MSVCRT or the new _LIBCPP_WIN32 to indicate that we are
using the Win32 API. Use a new _LIBCPP_WCHAR_IS_UCS2 to indicate that we
are on an environment that has a short wchar_t.

llvm-svn: 290910
2017-01-03 21:53:51 +00:00
Saleem Abdulrasool d1c346a43b chrono: correct the units for the epoch bias
As pointed out by Howard, this is actually 134774 days (* 24 * 3600),
and therefore seconds, not 100ns units.  Adjust the units to reflect
reality.

llvm-svn: 290824
2017-01-02 18:41:50 +00:00
Saleem Abdulrasool e91473c3c0 chrono: address post commit comments from Howard
Drawing some inspiration from code from Bill O'Neal as pointed out by
Howard, rework the code to avoid an overflow in the duration.  Adjust
the style to match libc++ style as well.

Create a local typedef for the FILETIME duration (100-ns units).  Use
this to define the difference between the NT and the UNIX epochs (which
previously overflowed due to the representation limits due to the
bouncing to ns).  Return the FILETIME duration biased by the NT-to-UNIX
epoch conversion.

Use of the custom duration makes it easier to read and reason about the
code.

llvm-svn: 290806
2017-01-01 22:04:38 +00:00
Saleem Abdulrasool cfc01154c3 chrono: address post-commit comments from majnemer
Correct style to match libc++ style as pointed out by David Majnemer on
IRC.  NFC.

llvm-svn: 290805
2017-01-01 22:04:36 +00:00
Saleem Abdulrasool 78f51f95a4 chrono: give Windows a steady_clock
Provide a definition for a steady monotonic clock by wrapping
QueryPerformanceCounter.

llvm-svn: 290804
2017-01-01 20:20:43 +00:00
Saleem Abdulrasool 6e3a0cc404 chrono: implement a Windows version of system_clock::now
system_clock::now is not entirely straight forward on Windows, which
does not have a clock_gettime function.

GetSystemTimeAsFileTime gives us the value relative to the NT epoch (Jan
1 1601) rather than the Unix epoch (Jan 1 1970).  However, this function
has a low resolution (~10ms).  Newer versions of Windows provide
GetSystemTimePreciseAsFileTime which gives us a much more accurate time
(<1us).  Unfortunately, the latter is only available on Windows 8+ when
targeting desktop apps.

llvm-svn: 290803
2017-01-01 20:20:41 +00:00
Shoaib Meenai 4304955545 [libc++] Remove unneeded visibility pragmas
The function definitions being guarded by the pragma were all static, so
they wouldn't be exported anyway. In any case, we should prefer the
visibility macros. No functional change.

Differential Revision: https://reviews.llvm.org/D26940

llvm-svn: 287768
2016-11-23 16:11:15 +00:00
Eric Fiselier 3a0485427f Remove workarounds for C++17 inline variable ABI break. It has been fixed in clang.
llvm-svn: 274419
2016-07-02 03:21:58 +00:00
Eric Fiselier d3ac6ae7d3 Remove accidental change committed in r274403.
llvm-svn: 274407
2016-07-01 23:31:55 +00:00
Eric Fiselier d3a1ed814b Work around ABI break caused by C++17 inline variables.
llvm-svn: 274403
2016-07-01 23:22:25 +00:00
Marshall Clow 4daa9f1e10 When building libc++, we use '"' as a delimiter instead of '<' when including libc++ header files. This is so that the dylib gets built with our headers; rather than the system-installed ones. We do this in most places already, just fixing a couple of inconsistent uses.
llvm-svn: 240412
2015-06-23 14:45:02 +00:00
Ed Schouten 4f0f708bf1 Use clock_gettime()'s CLOCK_REALTIME instead of gettimeofday().
The system_clock::now() function currently uses gettimeofday(). The
problem with gettimeofday() is that it is an obsolete XSI function,
hence unavailable on CloudABI. See:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html

Change this code to use clock_gettime() with CLOCK_REALTIME instead,
which is more consistent, as clock_gettime() is already used for
steady_clock.

A previous version of this change actually attempted to change
system_clock::duration, but I reverted this part as it breaks the
existing ABI.

Differential Revision:	http://reviews.llvm.org/D8253
Approved by:	jroelofs

llvm-svn: 237390
2015-05-14 20:54:18 +00:00
Jonathan Roelofs ffa0895c3b Fix comment that was obsoleted by r216949
llvm-svn: 216999
2014-09-02 23:52:46 +00:00
Jonathan Roelofs c59e585126 Partially address a FIXME in steady_clock::now()
http://reviews.llvm.org/D4045

llvm-svn: 216949
2014-09-02 21:14:38 +00:00
Marshall Clow b56e8587af Removed raw references to __APPLE__; now just check to see if it is defined.
llvm-svn: 177297
2013-03-18 17:45:34 +00:00
Howard Hinnant 16694b5df5 Zhang Xiongpang: Add definitions for const data members. Fixes http://llvm.org/bugs/show_bug.cgi?id=14585.
llvm-svn: 170026
2012-12-12 21:14:28 +00:00
Howard Hinnant c206366fd7 Quash a whole bunch of warnings
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant d53d81522d noexcept for <chrono>.
llvm-svn: 132265
2011-05-28 18:34:36 +00:00
Howard Hinnant 3dc6455ff0 N3191: C++ Timeout Specification
llvm-svn: 119909
2010-11-20 19:16:30 +00:00
Howard Hinnant 412dbebe1b license change
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Daniel Dunbar 0a779b97fe Fix typos, noticed by Clang.
llvm-svn: 113061
2010-09-04 03:15:51 +00:00
Howard Hinnant 940e211c87 Fixing whitespace problems
llvm-svn: 111751
2010-08-22 00:03:27 +00:00
Howard Hinnant 128ba7191d patch by Jeffrey Yasskin for porting to Ubuntu Hardy. Everything was accepted except there were some bug fixes needed in <locale> for the __nolocale_* series. For the apple branch I ended up using templates instead of the var_args solution because it seemed both safer and more efficient.
llvm-svn: 104516
2010-05-24 17:49:41 +00:00
Howard Hinnant 5b08a8a432 Wiped out some non-ascii characters that snuck into the copyright.
llvm-svn: 103516
2010-05-11 21:36:01 +00:00
Howard Hinnant 3e519524c1 libcxx initial import
llvm-svn: 103490
2010-05-11 19:42:16 +00:00