On Fri, Dec 23, 2016 at 11:09 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Fri, Dec 23, 2016 at 10:09:05AM -0500, Jason Merrill wrote:
>> On Fri, Dec 23, 2016 at 3:48 AM, Jakub Jelinek <ja...@redhat.com> wrote:
>> > Hi!
>> >
>> > C++ says that C library functions are implicitly noexcept, except for those
>> > like qsort and bsearch where exceptions can be thrown from the callbacks.
>> >
>> > We handle this through cfns.gperf, but that contains only list of C89
>> > functions, while C++11 and C++14 refer to C99 and C++17 refers to C11.
>> >
>> > I went through the C99 and C11 standards, gathered all functions from there
>> > (not macros nor generic functions) and using gperf %struct-type feature
>> > attached the C version next to each symbol, so that e.g. snprintf is
>> > noexcept only with -std=c++11 and above and e.g. mbrtoc16 only with
>> > -std=c++17.  Without this, we still consider snprintf as potentially
>> > throwing, which breaks gimple-ssa-sprintf.c assumptions.  For -std=c++98
>> > snprintf is not considered a builtin.
>>
>> Let's only be strict about this if flag_iso is set; for C library
>> usage it shouldn't usually matter what C++ standard we're using.
>
> So like this?

Yes, OK.

Jason

Reply via email to