History log of /freebsd-current/include/tgmath.h
Revision Date Author Comments
# b3e76948 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 11478453 20-Aug-2019 Dimitry Andric <dim@FreeBSD.org>

Vendor import of stripped libc++ trunk r366426 (just before the release_90 branch
point):

https://llvm.org/svn/llvm-project/libcxx/trunk@366426


# f3620262 28-Jul-2018 Dimitry Andric <dim@FreeBSD.org>

Vendor import of libc++ trunk r338150:
https://llvm.org/svn/llvm-project/libcxx/trunk@338150


# e58eb3c4 25-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

include: General further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using mis-identified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# b58aba6b 04-Sep-2014 Ed Schouten <ed@FreeBSD.org>

Roll back r271012 even more aggressively.

I've looked at the GCC sources and I now understand what's going wrong.
THe C11 keywords are simply nonexistent when using C++ mode. They are
marked as C-only in the parser. This is absolutely impractical for
multiple reasons:

- The C11 keywords do not conflict with C++ naming rules. They all start
with _[A-Z]. There is no reason to make them C-only.

- It makes it practically impossible for people to use these keywords in
C header files and expect them to work from within C++ sources.

As I said in my previous commit message: GCC is by far the weirdest
compiler that I've ever used.


# 62b7f85d 03-Sep-2014 Ed Schouten <ed@FreeBSD.org>

Leave the C11 keywords alone when we have a recent version of GCC.

As GCC also gained support for the C11 keywords over time, we can patch
up <sys/cdefs.h> to not define these anymore. This has the advantage
that error messages for static assertions are printed natively and that
_Alignas() will work with even a type outside of C11 mode.

All C11 keywords are supported with GCC 4.7 and higher, with the
exception of _Thread_local and _Generic. These are only supported as of
GCC 4.9.


# 5a1d14ca 27-Apr-2013 Ed Schouten <ed@FreeBSD.org>

Enable improved <tgmath.h> for Clang even when not using C11.

By using __has_extension(c_generic_selections), we can explicitly test
whether we're dealing with a version of Clang that supports _Generic().
That way we can use the improved <tgmath.h> code, even when not using
-std=c11. This massively reduces the compilation time when invoking
these functions.


# 305bf119 06-Jan-2012 Ed Schouten <ed@FreeBSD.org>

Last attempt at <tgmath.h>: do enable the new code for C11 compilers.

I was thinking by myself, if the new code doesn't work with GCC 4.2, why
not simply turn it into an efficient version for C11 compilers? By
changing the code to use _Generic() directly in that case, I can build
the tgmath regression test in a matter of milliseconds with Clang,
instead of the 8 seconds it used to take.

So by the time C11 becomes the default, it will pick up the new code
automatically. And now I will refrain from making more changes to
<tgmath.h>.


# 81ec6b6b 06-Jan-2012 Ed Schouten <ed@FreeBSD.org>

Add an even faster implementation of <tgmath.h> for the future.

Instead of using an exponential number of cases with respect to the
number of arguments, this version only uses a linear number.
Unfortunately, it works with Clang, GCC 4.6 and GCC 4.7, but not GCC
4.2. Therefore, leave it commented out.


# cede7d22 04-Jan-2012 Ed Schouten <ed@FreeBSD.org>

Remove _Complex_I workaround from <tgmath.h>.

This removes the use of __typeof() from this header, thus making it work
with a plain C11 compiler.


# 069a4317 05-Jan-2012 Ed Schouten <ed@FreeBSD.org>

Reimplement <tgmath.h> on top of __generic().

The macro construction used now, is almost identical to the code
provided in C11 proposal N1404. This new version doesn't seem to
introduce any regressions according to the regression test in tools/,
but still seems to malfunction with Clang on certain aspects.

The new code does work successfully with GCC 4.2, 4.6 and 4.7. With 4.7,
it also works when __generic() is implemented on top of _Generic().

Discussed with: stefanf


# 1828c569 22-Nov-2011 David Chisnall <theraven@FreeBSD.org>

Import libcxxrt / libc++ into a vendor branch.

Approved by: dim (mentor)


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# e8117c82 02-Feb-2007 Jens Schweikhardt <schweikh@FreeBSD.org>

Properly parenthesize the __tg_is_complex() macro by moving a closing
paren to where it belongs.

MFC after: 7 days


# 6549b8a2 03-Sep-2004 Stefan Farfeleder <stefanf@FreeBSD.org>

Add a workaround to recognise I/_Complex_I as complex arguments. Although
the GCC manual claims that the expression 1.0fi has type float _Complex,
__builtin_types_compatible_p(float _Complex, __typeof__(1.0fi))) yields 0.


# a551dea2 03-Sep-2004 Stefan Farfeleder <stefanf@FreeBSD.org>

Use the keyword '_Complex' rather than the macro 'complex' since
applications are allowed to undefine the latter.


# 9b331068 03-Sep-2004 Stefan Farfeleder <stefanf@FreeBSD.org>

Embarrassing typo: s/nextbyint/nearbyint/


# b902e8b2 08-Aug-2004 Stefan Farfeleder <stefanf@FreeBSD.org>

Implement C99's standard header <tgmath.h>. It provides type-generic macros
for the <math.h> and <complex.h> functions that have float, double and long
double implementations. Such type-generic macros expand to an actual
function, depending on the types of the macro arguments, eg. if <tgmath.h>
is included, the invocation cos(1.0f) calls the function cosf().