Patch for Bug 26283: float.h is missing mandatory C11 fp macros like DBL_DECIMAL_DIG and LDBL_DECIMAL_DIG

Hubert Tong via cfe-commits cfe-commits at lists.llvm.org
Sat Feb 13 17:11:56 PST 2016


On Sat, Feb 13, 2016 at 7:10 PM, Hubert Tong <
hubert.reinterpretcast at gmail.com> wrote:

> Hi Jorge,
>
> I do not intend to "overcomplicate" the testing as you put it, so there
> will be cases which are not caught by these tests.
> For *_MAX, if overflow occurs to the maximum positive finite value
> (assuming no infinities), then it is possible for that value to be less
> than 10^37 and the test will miss it.
> Remember: Richard pointed out that the value of the internally defined
> macros are the subject of more extensive testing.
>
> Anyhow, I also missed that Clang does not accept floating-point evaluation
> in preprocessor expressions (something the C++ committee is planning to
> remove), so it seems the testing will need to switch to use _Static_assert.
>
Seems I kept glossing over the "shall be an integral constant expression"
part (in C11, it is in subclause 6.10.1 paragraph 1).
Jorge, feel free to resubmit the patch with the floating-point checks in
_Static_assert form.

-- HT


>
> -- HT
>
> On Sat, Feb 13, 2016 at 6:00 PM, Jorge Teixeira <
> j.lopes.teixeira at gmail.com> wrote:
>
>> Thanks Hubert.
>>
>> I'm curious to see how you will handle corner cases without library
>> support, such as unsigned/signed zero and 0+x cases, with abs(x) <
>> EPS.
>>
> abs(x) < EPS does not mean that 0+x underflows to zero. :)
>
>
>> How does the parser/preprocessor interpret fp literals that are too
>> "precise" for that machine but are fine for other targets (cross
>> compile)? Example: clang is on some machine that uses 64bits long
>> double and the code is for another machine with intel extended
>> precision 80bits. I assume the Arbitrary Precision part of the APfloat
>> name was not chosen randomly, but it is not clear to me how that
>> affects the comparison operators inside the #if directives.
>>
> The intention is for the target type to be emulated. This emulation has
> been problematic for PPCDoubleDouble since the number of mantissa bits vary
> (there are at least 107 bits--most people stick with saying 106--except at
> the extremely high and low magnitude ranges, but there can be many more
> bits caused by a run of 0's or 1's between the two doubles).
>
>
>>
>> Jorge
>>
>> On Sat, Feb 13, 2016 at 5:28 PM, Hubert Tong
>> <hubert.reinterpretcast at gmail.com> wrote:
>> > Hi Jorge,
>> >
>> > Looks fine to me. I'll work on committing this (with minor changes)
>> over the
>> > weekend.
>> > Basically, I intend to remove some extraneous parentheses and adjust the
>> > *_EPSILON, *_MIN and *_TRUE_MIN checks to reject values equal to 0.
>> >
>> > -- HT
>> >
>> >
>> > On Sat, Feb 13, 2016 at 2:33 PM, Jorge Teixeira <
>> j.lopes.teixeira at gmail.com>
>> > wrote:
>> >>
>> >> Hubert,
>> >>
>> >> You're right about the *_MIN relationships, and I fixed them on the
>> >> attached patch.
>> >>
>> >> As for the enums, since there we're not even testing if the literals
>> >> are integers or fp numbers, and the Std. already reserves ranges for
>> >> implementation-specific values for some macros, it felt more natural
>> >> to simply test the boundary. The only exception would be
>> >> *_HAS_SUBNORM, for which only three values are allowed. The attached
>> >> patch implements this.
>> >>
>> >> Jorge
>> >>
>> >>
>> >> On Sat, Feb 13, 2016 at 11:21 AM, Hubert Tong
>> >> <hubert.reinterpretcast at gmail.com> wrote:
>> >> > +#if ((FLT_MIN < DBL_MIN) || (DBL_MIN < LDBL_MIN))
>> >> > +    #error "Mandatory macros {FLT,DBL,LDBL}_MIN are invalid."
>> >> > This value again depends on the minimum exponent, and so the
>> >> > relationship
>> >> > being tested here is not required to hold.
>> >> > +#endif
>> >> >
>> >> > For the enumeration-like cases, perhaps it would be better to test
>> that
>> >> > the
>> >> > value is one of the specific values.
>> >> >
>> >> > -- HT
>> >> >
>> >> > On Fri, Feb 12, 2016 at 11:39 PM, Jorge Teixeira
>> >> > <j.lopes.teixeira at gmail.com> wrote:
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> I decided to strike while the iron was hot and add the remaining
>> tests
>> >> >> for float.h.
>> >> >>
>> >> >> 1) clang was missing the C11 mandatory *_HAS_SUBNORM macros, so I
>> >> >> added them. The internal underscored versions are *_HAS_DENORM, and
>> >> >> the Std. defines only "subnormal" and "unnormalized", so there could
>> >> >> be, in theory, a discrepancy. I tried to learn more about APfloat
>> >> >> supported types (IEEEsingle,PPCDoubleDouble,etc.) and how the
>> >> >> underscored macros are generated in
>> >> >> /lib/Preprocessor/InitPreprocessor.cpp, but it was inconclusive
>> >> >> whether *_HAS_DENORM was added to mean subnormal like C11 expects,
>> or
>> >> >> not normalized. If the former, all is good, if the latter, my patch
>> is
>> >> >> wrong and C11 compliance is not achieved - the solution would be to
>> >> >> study all supported fp implementations and add a new macro stating
>> >> >> only the subnormal capabilities.
>> >> >>
>> >> >> 2) FLT_EVAL_METHOD was only introduced in C99, so I changed float.h
>> >> >> and float.c to reflect that.
>> >> >>
>> >> >> 3) To help ensure that all macros were tested, I reordered them in
>> >> >> float.h and float.c to match the C11 section. This added a little
>> >> >> noise to this diff, but should be a one-off thing and simplify
>> >> >> maintenance if further tests or new macros are added in the future.
>> >> >>
>> >> >> 4) The tests for the remaining macros in float.h were added. I have
>> >> >> some reservations about the ones involving floating point literals
>> >> >> (*_MAX, *_EPSILON, *_MIN, *_TRUE_MIN) due to the conversions and
>> >> >> rounding among the types. Not sure how to improve them without
>> making
>> >> >> assumptions and/or overcomplicating the test
>> >> >>
>> >> >>
>> >> >> (
>> https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
>> ).
>> >> >>
>> >> >> 5) There were no meaningful fp changes in the Technical Corrigenda
>> for
>> >> >> C89, so the current tests (c89,c99,c11) should suffice. Not sure if
>> >> >> gnuxx modes are affected, but I don't expect them to define
>> >> >> __STRICT_ANSI__, so all macros should be exposed and tested
>> >> >> successfully.
>> >> >>
>> >> >>
>> >> >> Cheers,
>> >> >>
>> >> >> JT
>> >> >>
>> >> >> On Fri, Feb 12, 2016 at 2:32 PM, Hubert Tong
>> >> >> <hubert.reinterpretcast at gmail.com> wrote:
>> >> >> > Committed as r260710.
>> >> >> >
>> >> >> >
>> >> >> > On Fri, Feb 12, 2016 at 9:53 AM, Hubert Tong
>> >> >> > <hubert.reinterpretcast at gmail.com> wrote:
>> >> >> >>
>> >> >> >> Thanks Jorge. I'll work on committing this today.
>> >> >> >>
>> >> >> >> -- HT
>> >> >> >>
>> >> >> >> On Fri, Feb 12, 2016 at 12:10 AM, Jorge Teixeira
>> >> >> >> <j.lopes.teixeira at gmail.com> wrote:
>> >> >> >>>
>> >> >> >>> Hubert,
>> >> >> >>>
>> >> >> >>> Thanks for the code review. Over the weekend I'll try to learn a
>> >> >> >>> bit
>> >> >> >>> more about using Phabricator, but for now I'll reply here, and
>> >> >> >>> attach
>> >> >> >>> a new patch.
>> >> >> >>>
>> >> >> >>> a) *_MANT_DIG < 1 --> *_MANT_DIG < 2
>> >> >> >>> That is a stricter check and I agree with your rationale. Done.
>> >> >> >>>
>> >> >> >>> b) _MIN_EXP --> FLT_MIN_EXP
>> >> >> >>> Done.
>> >> >> >>>
>> >> >> >>> c) Remove _MIN_EXP and _MIN_10_EXP FLT,DBL,LDBL comparisons
>> >> >> >>> Yes, as you and Richard pointed out the added mantissa bits can
>> >> >> >>> compensate for the lack of increase of the exponent.
>> >> >> >>> Already fixed in http://reviews.llvm.org/rL260639.
>> >> >> >>>
>> >> >> >>> d) *_MAX_EXP and *_MIN_EXP 2,-2 --> 1,-1
>> >> >> >>> Done.
>> >> >> >>>
>> >> >> >>> Richard, will do re: single patch for multiple files. Also, can
>> you
>> >> >> >>> close the bug report? Even if more tests for float.h get
>> >> >> >>> added/changed, the original problem has been solved.
>> >> >> >>>
>> >> >> >>> JT
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> On Thu, Feb 11, 2016 at 8:38 PM, Hubert Tong
>> >> >> >>> <hubert.reinterpretcast at gmail.com> wrote:
>> >> >> >>> > Hi Jorge,
>> >> >> >>> >
>> >> >> >>> > I responded to the initial commit with some comments here:
>> >> >> >>> > http://reviews.llvm.org/rL260577
>> >> >> >>> >
>> >> >> >>> > -- HT
>> >> >> >>> >
>> >> >> >>> > On Thu, Feb 11, 2016 at 7:53 PM, Jorge Teixeira
>> >> >> >>> > <j.lopes.teixeira at gmail.com>
>> >> >> >>> > wrote:
>> >> >> >>> >>
>> >> >> >>> >> > You'll also need to change <float.h> to only provide
>> >> >> >>> >> > DECIMAL_DIG
>> >> >> >>> >> > in
>> >> >> >>> >> > C99
>> >> >> >>> >> > onwards.
>> >> >> >>> >> Done!
>> >> >> >>> >>
>> >> >> >>> >> > All of our -std versions are that standard plus applicable
>> >> >> >>> >> > Defect
>> >> >> >>> >> > Reports. So -std=c89 includes TC1 and TC2, but not
>> Amendment 1
>> >> >> >>> >> > (we
>> >> >> >>> >> > have -std=c94 for that, but the only difference from our
>> C89
>> >> >> >>> >> > mode
>> >> >> >>> >> > is
>> >> >> >>> >> > the addition of digraphs).
>> >> >> >>> >> I'll try to find the c89 TC2 and check if anything changed
>> >> >> >>> >> regarding
>> >> >> >>> >> these macros (unlikely).
>> >> >> >>> >>
>> >> >> >>> >> > __STRICT_ANSI__ is defined if Clang has not been asked to
>> >> >> >>> >> > provide
>> >> >> >>> >> > extensions (either GNU extensions, perhaps via a flag like
>> >> >> >>> >> > -std=gnu99,
>> >> >> >>> >> > or MS extensions), and is used by C library headers to
>> >> >> >>> >> > determine
>> >> >> >>> >> > that
>> >> >> >>> >> > they should provide a strictly-conforming set of
>> declarations
>> >> >> >>> >> > without
>> >> >> >>> >> > extensions.
>> >> >> >>> >> Ok, so if !defined(__STRICT__ANSI__) clang should always
>> expose
>> >> >> >>> >> "as
>> >> >> >>> >> much as possible", including stuff from later versions of the
>> >> >> >>> >> Std.
>> >> >> >>> >> and/or eventual extensions, just as it now on float.h and
>> >> >> >>> >> float.c,
>> >> >> >>> >> right?
>> >> >> >>> >>
>> >> >> >>> >> > Testing __STDC_VERSION__ for C94 makes sense if you're
>> trying
>> >> >> >>> >> > to
>> >> >> >>> >> > detect whether Amendment 1 features should be provided.
>> >> >> >>> >> Since this will affect only digraphs, I guess there is no
>> need
>> >> >> >>> >> (for
>> >> >> >>> >> float.h, float.c).
>> >> >> >>> >>
>> >> >> >>> >> >> 3) Lastly, can you expand (...)
>> >> >> >>> >> >
>> >> >> >>> >> > No, it does not mean that.
>> >> >> >>> >> >
>> >> >> >>> >> > For PPC64, long double is (sometimes) modeled as a pair of
>> >> >> >>> >> > doubles.
>> >> >> >>> >> > Under that model, the smallest normalized value for long
>> >> >> >>> >> > double
>> >> >> >>> >> > is
>> >> >> >>> >> > actually larger than the smallest normalized value for
>> double
>> >> >> >>> >> > (remember that for a normalized value with exponent E, all
>> >> >> >>> >> > numbers
>> >> >> >>> >> > of
>> >> >> >>> >> > the form 1.XXXXX * 2^E, with the right number of mantissa
>> >> >> >>> >> > digits,
>> >> >> >>> >> > are
>> >> >> >>> >> > exactly representable, so increasing the number of mantissa
>> >> >> >>> >> > bits
>> >> >> >>> >> > without changing the number of exponent bits increases the
>> >> >> >>> >> > magnitude
>> >> >> >>> >> > of the smallest normalized positive number).
>> >> >> >>> >> >
>> >> >> >>> >> > The set of values of long double in this model *is* a
>> superset
>> >> >> >>> >> > of
>> >> >> >>> >> > the
>> >> >> >>> >> > set of values of double.
>> >> >> >>> >> >
>> >> >> >>> >> I see now, and removed the bogus tests. The patch should now
>> >> >> >>> >> test
>> >> >> >>> >> cleanly unless something needs DECIMAL_DIG but did not set
>> the
>> >> >> >>> >> appropriate std. level, or defined __STRICT__ANSI__.
>> >> >> >>> >>
>> >> >> >>> >> Thanks for the learning experience,
>> >> >> >>> >>
>> >> >> >>> >> JT
>> >> >> >>> >>
>> >> >> >>> >>
>> >> >> >>> >>
>> >> >> >>> >> >> From /test/Preprocessor/init.cpp:
>> >> >> >>> >> >> // PPC64:#define __DBL_MIN_EXP__ (-1021)
>> >> >> >>> >> >> // PPC64:#define __FLT_MIN_EXP__ (-125)
>> >> >> >>> >> >> // PPC64:#define __LDBL_MIN_EXP__ (-968)
>> >> >> >>> >> >>
>> >> >> >>> >> >> This issue happened before
>> >> >> >>> >> >>
>> >> >> >>> >> >>
>> >> >> >>> >> >>
>> >> >> >>> >> >> (
>> https://lists.gnu.org/archive/html/bug-gnulib/2011-08/msg00262.html,
>> >> >> >>> >> >> http://www.openwall.com/lists/musl/2013/11/15/1), but
>> all it
>> >> >> >>> >> >> means
>> >> >> >>> >> >> is
>> >> >> >>> >> >> that ppc64 is not compliant with C without soft-float. The
>> >> >> >>> >> >> test
>> >> >> >>> >> >> is
>> >> >> >>> >> >> valid and should stay, and if someone tries to compile for
>> >> >> >>> >> >> ppc64
>> >> >> >>> >> >> in
>> >> >> >>> >> >> c89, c99 or c11 modes, clang should 1) use soft float (bad
>> >> >> >>> >> >> idea),
>> >> >> >>> >> >> 2)
>> >> >> >>> >> >> issue a diagnostic saying that that arch cannot meet the
>> >> >> >>> >> >> desired
>> >> >> >>> >> >> C
>> >> >> >>> >> >> standard without a big performance penalty - the diag
>> should
>> >> >> >>> >> >> be
>> >> >> >>> >> >> suppressible with some special cmd line argument.
>> >> >> >>> >> >> Thus, I added the tests back and the FAIL for PPC64 for
>> the
>> >> >> >>> >> >> time
>> >> >> >>> >> >> being, with a comment. If you know of a way to skip only
>> the
>> >> >> >>> >> >> specific
>> >> >> >>> >> >> *_MIN_EXP and *_MIN_10_EXP tests, please add it, because
>> >> >> >>> >> >> there
>> >> >> >>> >> >> might
>> >> >> >>> >> >> be more similar cases in the future.
>> >> >> >>> >> >>
>> >> >> >>> >> >> JT
>> >> >> >>> >> >>
>> >> >> >>> >> >> On Thu, Feb 11, 2016 at 3:04 PM, Richard Smith
>> >> >> >>> >> >> <richard at metafoo.co.uk>
>> >> >> >>> >> >> wrote:
>> >> >> >>> >> >>> Thanks, I modified the test to also test C89 and C99
>> modes
>> >> >> >>> >> >>> and
>> >> >> >>> >> >>> committed this as r260577.
>> >> >> >>> >> >>>
>> >> >> >>> >> >>> On Thu, Feb 11, 2016 at 11:29 AM, Jorge Teixeira
>> >> >> >>> >> >>> <j.lopes.teixeira at gmail.com> wrote:
>> >> >> >>> >> >>>> Here is a revised test, which I renamed to
>> >> >> >>> >> >>>> c11-5_2_4_2_2p11.c
>> >> >> >>> >> >>>> instead
>> >> >> >>> >> >>>> of float.c because I am only checking a subset of what
>> the
>> >> >> >>> >> >>>> standard
>> >> >> >>> >> >>>> mandates for float.h, and because there were similar
>> >> >> >>> >> >>>> precedents,
>> >> >> >>> >> >>>> like
>> >> >> >>> >> >>>> test/Preprocessor/c99-*.c. Feel free to override,
>> though.
>> >> >> >>> >> >>>
>> >> >> >>> >> >>> test/Preprocessor/c99-* are an aberration. The goal
>> would be
>> >> >> >>> >> >>> that
>> >> >> >>> >> >>> this
>> >> >> >>> >> >>> test grows to cover all of the parts of float.h that we
>> >> >> >>> >> >>> define,
>> >> >> >>> >> >>> so
>> >> >> >>> >> >>> float.c seems like the appropriate name for it.
>> >> >> >>> >> >>>
>> >> >> >>> >> >>>> The first part checks for basic compliance with the
>> >> >> >>> >> >>>> referred
>> >> >> >>> >> >>>> C11
>> >> >> >>> >> >>>> paragraph, the second for internal consistency between
>> the
>> >> >> >>> >> >>>> underscored
>> >> >> >>> >> >>>> and exposed versions of the macros.
>> >> >> >>> >> >>>> No attempt was made to support C99 or C89.
>> >> >> >>> >> >>>>
>> >> >> >>> >> >>>> I am not very clear on the proper use of the whole
>> lit.py /
>> >> >> >>> >> >>>> RUN
>> >> >> >>> >> >>>> framework, so someone should really confirm if what I
>> wrote
>> >> >> >>> >> >>>> is
>> >> >> >>> >> >>>> correct. The goal was to test both hosted and
>> freestanding
>> >> >> >>> >> >>>> implementations with C11, and expect no diagnostics from
>> >> >> >>> >> >>>> either.
>> >> >> >>> >> >>>
>> >> >> >>> >> >>> We generally avoid testing hosted mode, because we don't
>> >> >> >>> >> >>> want
>> >> >> >>> >> >>> the
>> >> >> >>> >> >>> success of our tests to depend on the libc installed on
>> the
>> >> >> >>> >> >>> host
>> >> >> >>> >> >>> system.
>> >> >> >>> >> >>>
>> >> >> >>> >> >>>> Thanks for the help,
>> >> >> >>> >> >>>>
>> >> >> >>> >> >>>> JT
>> >> >> >>> >> >>>>
>> >> >> >>> >> >>>> On Tue, Feb 9, 2016 at 5:56 PM, Richard Smith
>> >> >> >>> >> >>>> <richard at metafoo.co.uk>
>> >> >> >>> >> >>>> wrote:
>> >> >> >>> >> >>>>> On Tue, Feb 9, 2016 at 2:43 PM, Jorge Teixeira
>> >> >> >>> >> >>>>> <j.lopes.teixeira at gmail.com> wrote:
>> >> >> >>> >> >>>>>> Richard,
>> >> >> >>> >> >>>>>>
>> >> >> >>> >> >>>>>> Can you be more specific?
>> >> >> >>> >> >>>>>>
>> >> >> >>> >> >>>>>> I assume you mean something like my newly attached .h
>> >> >> >>> >> >>>>>> file
>> >> >> >>> >> >>>>>> that
>> >> >> >>> >> >>>>>> tests
>> >> >> >>> >> >>>>>> very basic implementation compliance (i.e., it's
>> >> >> >>> >> >>>>>> required,
>> >> >> >>> >> >>>>>> but
>> >> >> >>> >> >>>>>> not
>> >> >> >>> >> >>>>>> sufficient), but I would need a bit more guidance
>> about
>> >> >> >>> >> >>>>>> the
>> >> >> >>> >> >>>>>> structure
>> >> >> >>> >> >>>>>> of the file, how to perform the tests, and where to
>> >> >> >>> >> >>>>>> exactly
>> >> >> >>> >> >>>>>> place
>> >> >> >>> >> >>>>>> and
>> >> >> >>> >> >>>>>> name the file within test/Headers.
>> >> >> >>> >> >>>>>>
>> >> >> >>> >> >>>>>> I some sort of template exists, or if someone else
>> takes
>> >> >> >>> >> >>>>>> point
>> >> >> >>> >> >>>>>> and
>> >> >> >>> >> >>>>>> makes it, I can "port" the attached p11 test cases. I
>> am
>> >> >> >>> >> >>>>>> unsure
>> >> >> >>> >> >>>>>> of
>> >> >> >>> >> >>>>>> how
>> >> >> >>> >> >>>>>> to perform a more normative compliance - for example,
>> to
>> >> >> >>> >> >>>>>> assert
>> >> >> >>> >> >>>>>> that
>> >> >> >>> >> >>>>>> LDBL_DECIMAL_DIG is 21 on x86-64 and that indeed those
>> >> >> >>> >> >>>>>> many
>> >> >> >>> >> >>>>>> digits
>> >> >> >>> >> >>>>>> are
>> >> >> >>> >> >>>>>> guaranteed to be correct, etc. This is probably not
>> >> >> >>> >> >>>>>> possible
>> >> >> >>> >> >>>>>> /
>> >> >> >>> >> >>>>>> does
>> >> >> >>> >> >>>>>> not make sense.
>> >> >> >>> >> >>>>>
>> >> >> >>> >> >>>>> That looks like a decent basic test for this. The test
>> >> >> >>> >> >>>>> should
>> >> >> >>> >> >>>>> be
>> >> >> >>> >> >>>>> named
>> >> >> >>> >> >>>>> something like test/Headers/float.c, and needs to
>> contain
>> >> >> >>> >> >>>>> a
>> >> >> >>> >> >>>>> "RUN:"
>> >> >> >>> >> >>>>> line so that the test runner infrastructure knows how
>> to
>> >> >> >>> >> >>>>> run
>> >> >> >>> >> >>>>> it.
>> >> >> >>> >> >>>>> You
>> >> >> >>> >> >>>>> can look at test/Header/limits.cpp for an example of
>> how
>> >> >> >>> >> >>>>> this
>> >> >> >>> >> >>>>> works.
>> >> >> >>> >> >>>>>
>> >> >> >>> >> >>>>> We already have platform-specific tests that
>> >> >> >>> >> >>>>> __LDBL_DECIMAL_DIG__ is
>> >> >> >>> >> >>>>> the right value, so you could test the values are
>> correct
>> >> >> >>> >> >>>>> by
>> >> >> >>> >> >>>>> checking
>> >> >> >>> >> >>>>> that LDBL_DECIMAL_DIG == __LDBL_DECIMAL_DIG__.
>> >> >> >>> >> >>>>>
>> >> >> >>> >> >>>>>> JT
>> >> >> >>> >> >>>>>>
>> >> >> >>> >> >>>>>> On Tue, Feb 9, 2016 at 3:58 PM, Richard Smith
>> >> >> >>> >> >>>>>> <richard at metafoo.co.uk> wrote:
>> >> >> >>> >> >>>>>>> Patch looks good. Please also add a testcase to
>> >> >> >>> >> >>>>>>> test/Headers.
>> >> >> >>> >> >>>>>>>
>> >> >> >>> >> >>>>>>> On Tue, Feb 9, 2016 at 12:08 PM, Hubert Tong via
>> >> >> >>> >> >>>>>>> cfe-commits
>> >> >> >>> >> >>>>>>> <cfe-commits at lists.llvm.org> wrote:
>> >> >> >>> >> >>>>>>>> I see no immediate issue with this patch, but I am
>> not
>> >> >> >>> >> >>>>>>>> one
>> >> >> >>> >> >>>>>>>> of
>> >> >> >>> >> >>>>>>>> the
>> >> >> >>> >> >>>>>>>> usual
>> >> >> >>> >> >>>>>>>> reviewers for this part of the code base.
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>> -- HT
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>> On Tue, Feb 9, 2016 at 2:56 PM, Jorge Teixeira
>> >> >> >>> >> >>>>>>>> <j.lopes.teixeira at gmail.com>
>> >> >> >>> >> >>>>>>>> wrote:
>> >> >> >>> >> >>>>>>>>>
>> >> >> >>> >> >>>>>>>>> Thanks Hubert. Somehow I omitted that prefix when
>> >> >> >>> >> >>>>>>>>> typing
>> >> >> >>> >> >>>>>>>>> the
>> >> >> >>> >> >>>>>>>>> macros,
>> >> >> >>> >> >>>>>>>>> and I did not noticed it when I was testing
>> because on
>> >> >> >>> >> >>>>>>>>> my
>> >> >> >>> >> >>>>>>>>> arch
>> >> >> >>> >> >>>>>>>>> DECIMAL_DIG is defined to be the LDBL version...
>> >> >> >>> >> >>>>>>>>>
>> >> >> >>> >> >>>>>>>>> Updated patch is attached.
>> >> >> >>> >> >>>>>>>>>
>> >> >> >>> >> >>>>>>>>> JT
>> >> >> >>> >> >>>>>>>>>
>> >> >> >>> >> >>>>>>>>> On Tue, Feb 9, 2016 at 1:41 PM, Hubert Tong
>> >> >> >>> >> >>>>>>>>> <hubert.reinterpretcast at gmail.com> wrote:
>> >> >> >>> >> >>>>>>>>> > There is a __LDBL_DECIMAL_DIG__ predefined macro.
>> >> >> >>> >> >>>>>>>>> > __DECIMAL_DIG__ will
>> >> >> >>> >> >>>>>>>>> > not
>> >> >> >>> >> >>>>>>>>> > always be the same as __LDBL_DECIMAL_DIG__.
>> >> >> >>> >> >>>>>>>>> >
>> >> >> >>> >> >>>>>>>>> > -- HT
>> >> >> >>> >> >>>>>>>>> >
>> >> >> >>> >> >>>>>>>>> > On Mon, Feb 8, 2016 at 11:26 PM, Jorge Teixeira
>> via
>> >> >> >>> >> >>>>>>>>> > cfe-commits
>> >> >> >>> >> >>>>>>>>> > <cfe-commits at lists.llvm.org> wrote:
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> Hi, I filed the bug
>> >> >> >>> >> >>>>>>>>> >> (https://llvm.org/bugs/show_bug.cgi?id=26283)
>> some
>> >> >> >>> >> >>>>>>>>> >> time ago and nobody picked it up, so here is a
>> >> >> >>> >> >>>>>>>>> >> trivial
>> >> >> >>> >> >>>>>>>>> >> patch
>> >> >> >>> >> >>>>>>>>> >> exposing
>> >> >> >>> >> >>>>>>>>> >> the missing macros, that to the best of my
>> ability
>> >> >> >>> >> >>>>>>>>> >> were
>> >> >> >>> >> >>>>>>>>> >> already
>> >> >> >>> >> >>>>>>>>> >> present as the internal underscored versions.
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> Perhaps a more general bug about C11 floating
>> point
>> >> >> >>> >> >>>>>>>>> >> (lack
>> >> >> >>> >> >>>>>>>>> >> of)
>> >> >> >>> >> >>>>>>>>> >> conformance should be filed, so that some form
>> of
>> >> >> >>> >> >>>>>>>>> >> unit
>> >> >> >>> >> >>>>>>>>> >> test/macro
>> >> >> >>> >> >>>>>>>>> >> validation could be worked on, but this patch
>> does
>> >> >> >>> >> >>>>>>>>> >> scratch my
>> >> >> >>> >> >>>>>>>>> >> current
>> >> >> >>> >> >>>>>>>>> >> itch.
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> Successfully tested on x86-64 Xubuntu 14.04 with
>> >> >> >>> >> >>>>>>>>> >> clang
>> >> >> >>> >> >>>>>>>>> >> 3.8
>> >> >> >>> >> >>>>>>>>> >> from the
>> >> >> >>> >> >>>>>>>>> >> ppa, patched with the attached diff.
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> First contribution, so feel free to suggest
>> >> >> >>> >> >>>>>>>>> >> improvements
>> >> >> >>> >> >>>>>>>>> >> or
>> >> >> >>> >> >>>>>>>>> >> point to
>> >> >> >>> >> >>>>>>>>> >> more detailed step-by-step
>> instructions/guidelines.
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> Cheers,
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> JT
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >> _______________________________________________
>> >> >> >>> >> >>>>>>>>> >> cfe-commits mailing list
>> >> >> >>> >> >>>>>>>>> >> cfe-commits at lists.llvm.org
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>> >> >> >>> >> >>>>>>>>> >>
>> >> >> >>> >> >>>>>>>>> >
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>> _______________________________________________
>> >> >> >>> >> >>>>>>>> cfe-commits mailing list
>> >> >> >>> >> >>>>>>>> cfe-commits at lists.llvm.org
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >> >>>>>>>>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>> >> >> >>> >> >>>>>>>>
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160213/b0fe25a8/attachment-0001.html>


More information about the cfe-commits mailing list