Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
Patches to improve the language posted for review: https://reviews.llvm.org/D46236 https://reviews.llvm.org/D46237 On Fri, Apr 27, 2018 at 7:41 PM, Chandler Carruth via cfe-commits < cfe-commits@lists.llvm.org> wrote: > On Fri, Apr 27, 2018 at 5:13 PM Richard Smith> wrote: > >> On 27 April 2018 at 17:09, Chandler Carruth via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> On Fri, Apr 27, 2018 at 4:36 PM Richard Smith via cfe-commits < >>> cfe-commits@lists.llvm.org> wrote: >>> On 27 April 2018 at 16:07, Sanjay Patel via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Missing dash corrected at r331057. I can improve the doc wording, but > let's settle on the flag name first, and I'll try to get it all fixed up > in > one shot. > > So far we have these candidates: > 1. -ffp-cast-overflow-workaround > 2. -fstrict-fp-trunc-semantics > 3. -fstrict-fp-cast-overflow > > I don't have a strong opinion here, but on 2nd reading, it does seem > like a 'strict' flag fits better with existing options. > The corresponding UBSan check is called -fsanitize=float-cast-overflow, so maybe -fno-strict-float-cast-overflow would be the most consistent name? >>> >>> On this topic: we were hit by this on a *lot* of code. All of that code >>> builds and passes tests with -fsanitize=float-cast-overflow. So I think >>> we've been mistaken in assuming that this sanitizer catches all of the >>> failure modes of the optimization. That at least impacts the sanitizer >>> suggestion in the release notes. And probably impacts the flag name / >>> attribuet name. >>> >> >> That's interesting, and definitely sounds like a bug (either the >> sanitizer or LLVM is presumably getting the range check wrong). Can you >> point me at an example? >> > > It appears that the code that hit this has cleverly dodged *EVERY* build > configuration we have deployed this sanitizer in... despite our best > efforts. Sorry for the noise. > > >> >> >>> On Fri, Apr 27, 2018 at 4:41 PM, Richard Smith > wrote: > >> On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: spatel >>> Date: Fri Apr 27 09:21:22 2018 >>> New Revision: 331056 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev >>> Log: >>> [docs] add -ffp-cast-overflow-workaround to the release notes >>> >>> This option was added with: >>> D46135 >>> rL331041 >>> ...copying the text from UsersManual.rst for more exposure. >>> >>> >>> Modified: >>> cfe/trunk/docs/ReleaseNotes.rst >>> >>> Modified: cfe/trunk/docs/ReleaseNotes.rst >>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ >>> ReleaseNotes.rst?rev=331056=331055=331056=diff >>> >>> == >>> --- cfe/trunk/docs/ReleaseNotes.rst (original) >>> +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 >>> @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi >>> New Compiler Flags >>> -- >>> >>> +- :option:`-ffp-cast-overflow-workaround` and >>> + :option:`-fnofp-cast-overflow-workaround` >>> >> >> Shouldn't this be -fno-fp-cast-overflow-workaround? >> >> Also, our convention for flags that define undefined behavior is >> `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow` >> ? >> >> >>> + enable (disable) a workaround for code that casts floating-point >>> values to >>> + integers and back to floating-point. If the floating-point value >>> is not >>> + representable in the intermediate integer type, the code is >>> incorrect >>> + according to the language standard. >> >> >> I find this hard to read: I initially misread "the code is incorrect >> according to the language standard" as meaning "Clang will generate code >> that is incorrect according to the language standard". I think what you >> mean here is "the code has undefined behavior according to the language >> standard, and Clang will not guarantee any particular result. This flag >> causes the behavior to be defined to match the overflowing behavior of >> the >> target's native float-to-int conversion instructions." >> >> >>> This flag will attempt to generate code >>> + as if the result of an overflowing conversion matches the >>> overflowing behavior >>> + of a target's native float-to-int conversion instructions. >>> + >>> - ... >>> >>> Deprecated Compiler Flags >>> >>> >>> ___ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>>
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
On Fri, Apr 27, 2018 at 5:13 PM Richard Smithwrote: > On 27 April 2018 at 17:09, Chandler Carruth via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> On Fri, Apr 27, 2018 at 4:36 PM Richard Smith via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> On 27 April 2018 at 16:07, Sanjay Patel via cfe-commits < >>> cfe-commits@lists.llvm.org> wrote: >>> Missing dash corrected at r331057. I can improve the doc wording, but let's settle on the flag name first, and I'll try to get it all fixed up in one shot. So far we have these candidates: 1. -ffp-cast-overflow-workaround 2. -fstrict-fp-trunc-semantics 3. -fstrict-fp-cast-overflow I don't have a strong opinion here, but on 2nd reading, it does seem like a 'strict' flag fits better with existing options. >>> >>> The corresponding UBSan check is called -fsanitize=float-cast-overflow, >>> so maybe -fno-strict-float-cast-overflow would be the most consistent name? >>> >> >> On this topic: we were hit by this on a *lot* of code. All of that code >> builds and passes tests with -fsanitize=float-cast-overflow. So I think >> we've been mistaken in assuming that this sanitizer catches all of the >> failure modes of the optimization. That at least impacts the sanitizer >> suggestion in the release notes. And probably impacts the flag name / >> attribuet name. >> > > That's interesting, and definitely sounds like a bug (either the sanitizer > or LLVM is presumably getting the range check wrong). Can you point me at > an example? > It appears that the code that hit this has cleverly dodged *EVERY* build configuration we have deployed this sanitizer in... despite our best efforts. Sorry for the noise. > > >> On Fri, Apr 27, 2018 at 4:41 PM, Richard Smith wrote: > On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: spatel >> Date: Fri Apr 27 09:21:22 2018 >> New Revision: 331056 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev >> Log: >> [docs] add -ffp-cast-overflow-workaround to the release notes >> >> This option was added with: >> D46135 >> rL331041 >> ...copying the text from UsersManual.rst for more exposure. >> >> >> Modified: >> cfe/trunk/docs/ReleaseNotes.rst >> >> Modified: cfe/trunk/docs/ReleaseNotes.rst >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=331056=331055=331056=diff >> >> == >> --- cfe/trunk/docs/ReleaseNotes.rst (original) >> +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 >> @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi >> New Compiler Flags >> -- >> >> +- :option:`-ffp-cast-overflow-workaround` and >> + :option:`-fnofp-cast-overflow-workaround` >> > > Shouldn't this be -fno-fp-cast-overflow-workaround? > > Also, our convention for flags that define undefined behavior is > `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow`? > > >> + enable (disable) a workaround for code that casts floating-point >> values to >> + integers and back to floating-point. If the floating-point value >> is not >> + representable in the intermediate integer type, the code is >> incorrect >> + according to the language standard. > > > I find this hard to read: I initially misread "the code is incorrect > according to the language standard" as meaning "Clang will generate code > that is incorrect according to the language standard". I think what you > mean here is "the code has undefined behavior according to the language > standard, and Clang will not guarantee any particular result. This flag > causes the behavior to be defined to match the overflowing behavior of the > target's native float-to-int conversion instructions." > > >> This flag will attempt to generate code >> + as if the result of an overflowing conversion matches the >> overflowing behavior >> + of a target's native float-to-int conversion instructions. >> + >> - ... >> >> Deprecated Compiler Flags >> >> >> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits ___ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>>
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
On 27 April 2018 at 17:09, Chandler Carruth via cfe-commits < cfe-commits@lists.llvm.org> wrote: > On Fri, Apr 27, 2018 at 4:36 PM Richard Smith via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> On 27 April 2018 at 16:07, Sanjay Patel via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Missing dash corrected at r331057. I can improve the doc wording, but >>> let's settle on the flag name first, and I'll try to get it all fixed up in >>> one shot. >>> >>> So far we have these candidates: >>> 1. -ffp-cast-overflow-workaround >>> 2. -fstrict-fp-trunc-semantics >>> 3. -fstrict-fp-cast-overflow >>> >>> I don't have a strong opinion here, but on 2nd reading, it does seem >>> like a 'strict' flag fits better with existing options. >>> >> >> The corresponding UBSan check is called -fsanitize=float-cast-overflow, >> so maybe -fno-strict-float-cast-overflow would be the most consistent >> name? >> > > On this topic: we were hit by this on a *lot* of code. All of that code > builds and passes tests with -fsanitize=float-cast-overflow. So I think > we've been mistaken in assuming that this sanitizer catches all of the > failure modes of the optimization. That at least impacts the sanitizer > suggestion in the release notes. And probably impacts the flag name / > attribuet name. > That's interesting, and definitely sounds like a bug (either the sanitizer or LLVM is presumably getting the range check wrong). Can you point me at an example? > On Fri, Apr 27, 2018 at 4:41 PM, Richard Smith>>> wrote: >>> On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: spatel > Date: Fri Apr 27 09:21:22 2018 > New Revision: 331056 > > URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev > Log: > [docs] add -ffp-cast-overflow-workaround to the release notes > > This option was added with: > D46135 > rL331041 > ...copying the text from UsersManual.rst for more exposure. > > > Modified: > cfe/trunk/docs/ReleaseNotes.rst > > Modified: cfe/trunk/docs/ReleaseNotes.rst > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ > ReleaseNotes.rst?rev=331056=331055=331056=diff > > == > --- cfe/trunk/docs/ReleaseNotes.rst (original) > +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 > @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi > New Compiler Flags > -- > > +- :option:`-ffp-cast-overflow-workaround` and > + :option:`-fnofp-cast-overflow-workaround` > Shouldn't this be -fno-fp-cast-overflow-workaround? Also, our convention for flags that define undefined behavior is `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow` ? > + enable (disable) a workaround for code that casts floating-point > values to > + integers and back to floating-point. If the floating-point value is > not > + representable in the intermediate integer type, the code is > incorrect > + according to the language standard. I find this hard to read: I initially misread "the code is incorrect according to the language standard" as meaning "Clang will generate code that is incorrect according to the language standard". I think what you mean here is "the code has undefined behavior according to the language standard, and Clang will not guarantee any particular result. This flag causes the behavior to be defined to match the overflowing behavior of the target's native float-to-int conversion instructions." > This flag will attempt to generate code > + as if the result of an overflowing conversion matches the > overflowing behavior > + of a target's native float-to-int conversion instructions. > + > - ... > > Deprecated Compiler Flags > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > >>> >>> ___ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >>> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
On Fri, Apr 27, 2018 at 4:36 PM Richard Smith via cfe-commits < cfe-commits@lists.llvm.org> wrote: > On 27 April 2018 at 16:07, Sanjay Patel via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Missing dash corrected at r331057. I can improve the doc wording, but >> let's settle on the flag name first, and I'll try to get it all fixed up in >> one shot. >> >> So far we have these candidates: >> 1. -ffp-cast-overflow-workaround >> 2. -fstrict-fp-trunc-semantics >> 3. -fstrict-fp-cast-overflow >> >> I don't have a strong opinion here, but on 2nd reading, it does seem like >> a 'strict' flag fits better with existing options. >> > > The corresponding UBSan check is called -fsanitize=float-cast-overflow, so > maybe -fno-strict-float-cast-overflow would be the most consistent name? > On this topic: we were hit by this on a *lot* of code. All of that code builds and passes tests with -fsanitize=float-cast-overflow. So I think we've been mistaken in assuming that this sanitizer catches all of the failure modes of the optimization. That at least impacts the sanitizer suggestion in the release notes. And probably impacts the flag name / attribuet name. > > >> On Fri, Apr 27, 2018 at 4:41 PM, Richard Smith>> wrote: >> >>> On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < >>> cfe-commits@lists.llvm.org> wrote: >>> Author: spatel Date: Fri Apr 27 09:21:22 2018 New Revision: 331056 URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev Log: [docs] add -ffp-cast-overflow-workaround to the release notes This option was added with: D46135 rL331041 ...copying the text from UsersManual.rst for more exposure. Modified: cfe/trunk/docs/ReleaseNotes.rst Modified: cfe/trunk/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=331056=331055=331056=diff == --- cfe/trunk/docs/ReleaseNotes.rst (original) +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi New Compiler Flags -- +- :option:`-ffp-cast-overflow-workaround` and + :option:`-fnofp-cast-overflow-workaround` >>> >>> Shouldn't this be -fno-fp-cast-overflow-workaround? >>> >>> Also, our convention for flags that define undefined behavior is >>> `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow`? >>> >>> + enable (disable) a workaround for code that casts floating-point values to + integers and back to floating-point. If the floating-point value is not + representable in the intermediate integer type, the code is incorrect + according to the language standard. >>> >>> >>> I find this hard to read: I initially misread "the code is incorrect >>> according to the language standard" as meaning "Clang will generate code >>> that is incorrect according to the language standard". I think what you >>> mean here is "the code has undefined behavior according to the language >>> standard, and Clang will not guarantee any particular result. This flag >>> causes the behavior to be defined to match the overflowing behavior of the >>> target's native float-to-int conversion instructions." >>> >>> This flag will attempt to generate code + as if the result of an overflowing conversion matches the overflowing behavior + of a target's native float-to-int conversion instructions. + - ... Deprecated Compiler Flags ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >>> >> >> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
On 27 April 2018 at 16:07, Sanjay Patel via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Missing dash corrected at r331057. I can improve the doc wording, but > let's settle on the flag name first, and I'll try to get it all fixed up in > one shot. > > So far we have these candidates: > 1. -ffp-cast-overflow-workaround > 2. -fstrict-fp-trunc-semantics > 3. -fstrict-fp-cast-overflow > > I don't have a strong opinion here, but on 2nd reading, it does seem like > a 'strict' flag fits better with existing options. > The corresponding UBSan check is called -fsanitize=float-cast-overflow, so maybe -fno-strict-float-cast-overflow would be the most consistent name? > On Fri, Apr 27, 2018 at 4:41 PM, Richard Smith> wrote: > >> On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: spatel >>> Date: Fri Apr 27 09:21:22 2018 >>> New Revision: 331056 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev >>> Log: >>> [docs] add -ffp-cast-overflow-workaround to the release notes >>> >>> This option was added with: >>> D46135 >>> rL331041 >>> ...copying the text from UsersManual.rst for more exposure. >>> >>> >>> Modified: >>> cfe/trunk/docs/ReleaseNotes.rst >>> >>> Modified: cfe/trunk/docs/ReleaseNotes.rst >>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNo >>> tes.rst?rev=331056=331055=331056=diff >>> >>> == >>> --- cfe/trunk/docs/ReleaseNotes.rst (original) >>> +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 >>> @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi >>> New Compiler Flags >>> -- >>> >>> +- :option:`-ffp-cast-overflow-workaround` and >>> + :option:`-fnofp-cast-overflow-workaround` >>> >> >> Shouldn't this be -fno-fp-cast-overflow-workaround? >> >> Also, our convention for flags that define undefined behavior is >> `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow` >> ? >> >> >>> + enable (disable) a workaround for code that casts floating-point >>> values to >>> + integers and back to floating-point. If the floating-point value is >>> not >>> + representable in the intermediate integer type, the code is incorrect >>> + according to the language standard. >> >> >> I find this hard to read: I initially misread "the code is incorrect >> according to the language standard" as meaning "Clang will generate code >> that is incorrect according to the language standard". I think what you >> mean here is "the code has undefined behavior according to the language >> standard, and Clang will not guarantee any particular result. This flag >> causes the behavior to be defined to match the overflowing behavior of the >> target's native float-to-int conversion instructions." >> >> >>> This flag will attempt to generate code >>> + as if the result of an overflowing conversion matches the overflowing >>> behavior >>> + of a target's native float-to-int conversion instructions. >>> + >>> - ... >>> >>> Deprecated Compiler Flags >>> >>> >>> ___ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >> > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
Missing dash corrected at r331057. I can improve the doc wording, but let's settle on the flag name first, and I'll try to get it all fixed up in one shot. So far we have these candidates: 1. -ffp-cast-overflow-workaround 2. -fstrict-fp-trunc-semantics 3. -fstrict-fp-cast-overflow I don't have a strong opinion here, but on 2nd reading, it does seem like a 'strict' flag fits better with existing options. On Fri, Apr 27, 2018 at 4:41 PM, Richard Smithwrote: > On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: spatel >> Date: Fri Apr 27 09:21:22 2018 >> New Revision: 331056 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev >> Log: >> [docs] add -ffp-cast-overflow-workaround to the release notes >> >> This option was added with: >> D46135 >> rL331041 >> ...copying the text from UsersManual.rst for more exposure. >> >> >> Modified: >> cfe/trunk/docs/ReleaseNotes.rst >> >> Modified: cfe/trunk/docs/ReleaseNotes.rst >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNo >> tes.rst?rev=331056=331055=331056=diff >> >> == >> --- cfe/trunk/docs/ReleaseNotes.rst (original) >> +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 >> @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi >> New Compiler Flags >> -- >> >> +- :option:`-ffp-cast-overflow-workaround` and >> + :option:`-fnofp-cast-overflow-workaround` >> > > Shouldn't this be -fno-fp-cast-overflow-workaround? > > Also, our convention for flags that define undefined behavior is > `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow`? > > >> + enable (disable) a workaround for code that casts floating-point >> values to >> + integers and back to floating-point. If the floating-point value is not >> + representable in the intermediate integer type, the code is incorrect >> + according to the language standard. > > > I find this hard to read: I initially misread "the code is incorrect > according to the language standard" as meaning "Clang will generate code > that is incorrect according to the language standard". I think what you > mean here is "the code has undefined behavior according to the language > standard, and Clang will not guarantee any particular result. This flag > causes the behavior to be defined to match the overflowing behavior of the > target's native float-to-int conversion instructions." > > >> This flag will attempt to generate code >> + as if the result of an overflowing conversion matches the overflowing >> behavior >> + of a target's native float-to-int conversion instructions. >> + >> - ... >> >> Deprecated Compiler Flags >> >> >> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
On 27 April 2018 at 09:21, Sanjay Patel via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: spatel > Date: Fri Apr 27 09:21:22 2018 > New Revision: 331056 > > URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev > Log: > [docs] add -ffp-cast-overflow-workaround to the release notes > > This option was added with: > D46135 > rL331041 > ...copying the text from UsersManual.rst for more exposure. > > > Modified: > cfe/trunk/docs/ReleaseNotes.rst > > Modified: cfe/trunk/docs/ReleaseNotes.rst > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ > ReleaseNotes.rst?rev=331056=331055=331056=diff > > == > --- cfe/trunk/docs/ReleaseNotes.rst (original) > +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 > @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi > New Compiler Flags > -- > > +- :option:`-ffp-cast-overflow-workaround` and > + :option:`-fnofp-cast-overflow-workaround` > Shouldn't this be -fno-fp-cast-overflow-workaround? Also, our convention for flags that define undefined behavior is `-fno-strict-*`, so perhaps this should be `-fno-strict-fp-cast-overflow`? > + enable (disable) a workaround for code that casts floating-point values > to > + integers and back to floating-point. If the floating-point value is not > + representable in the intermediate integer type, the code is incorrect > + according to the language standard. I find this hard to read: I initially misread "the code is incorrect according to the language standard" as meaning "Clang will generate code that is incorrect according to the language standard". I think what you mean here is "the code has undefined behavior according to the language standard, and Clang will not guarantee any particular result. This flag causes the behavior to be defined to match the overflowing behavior of the target's native float-to-int conversion instructions." > This flag will attempt to generate code > + as if the result of an overflowing conversion matches the overflowing > behavior > + of a target's native float-to-int conversion instructions. > + > - ... > > Deprecated Compiler Flags > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r331056 - [docs] add -ffp-cast-overflow-workaround to the release notes
Author: spatel Date: Fri Apr 27 09:21:22 2018 New Revision: 331056 URL: http://llvm.org/viewvc/llvm-project?rev=331056=rev Log: [docs] add -ffp-cast-overflow-workaround to the release notes This option was added with: D46135 rL331041 ...copying the text from UsersManual.rst for more exposure. Modified: cfe/trunk/docs/ReleaseNotes.rst Modified: cfe/trunk/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=331056=331055=331056=diff == --- cfe/trunk/docs/ReleaseNotes.rst (original) +++ cfe/trunk/docs/ReleaseNotes.rst Fri Apr 27 09:21:22 2018 @@ -83,6 +83,15 @@ Non-comprehensive list of changes in thi New Compiler Flags -- +- :option:`-ffp-cast-overflow-workaround` and + :option:`-fnofp-cast-overflow-workaround` + enable (disable) a workaround for code that casts floating-point values to + integers and back to floating-point. If the floating-point value is not + representable in the intermediate integer type, the code is incorrect + according to the language standard. This flag will attempt to generate code + as if the result of an overflowing conversion matches the overflowing behavior + of a target's native float-to-int conversion instructions. + - ... Deprecated Compiler Flags ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits