[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11 |
Date: |
Wed, 9 Jan 2019 14:17:42 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 2019-01-09 14:10, Markus Armbruster wrote:
> Thomas Huth <address@hidden> writes:
>
>> On 2019-01-09 12:44, Daniel P. Berrangé wrote:
>>> On Wed, Jan 09, 2019 at 12:25:43PM +0100, Thomas Huth wrote:
>>>> On 2019-01-09 11:58, Daniel P. Berrangé wrote:
>>>>> On Mon, Jan 07, 2019 at 11:45:26AM +0100, Thomas Huth wrote:
>>>>>> Different versions of GCC and Clang use different versions of the C
>>>>>> standard.
>>>>>> This repeatedly caused problems already, e.g. with duplicated typedefs:
>>>>>>
>>>>>> https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
>>>>>>
>>>>>> or with for-loop variable initializers:
>>>>>>
>>>>>> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
>>>>>>
>>>>>> To avoid these problems, we should enforce the C language version to the
>>>>>> same level for all compilers. Since our minimum compiler versions are
>>>>>> GCC v4.8 and Clang v3.4 now, and both basically support "gnu11" already,
>>>>>> this seems to be a good choice.
>>>>>
>>>>> In 4.x gnu11 is marked as experimental. I'm not really comfortable
>>>>> using experimental features - even if its warning free there's a risk
>>>>> it would silently mis-compile something.
>>>>>
>>>>> gnu99 is ok with 4.x - it is merely "incomplete".
>>>>
>>>> gnu11 has the big advantage that it also fixes the problem with
>>>> duplicated typedefs that are reported by older versions of Clang.
>>>>
>>>> Are you sure about the experimental character in 4.x? I just looked at
>>>> https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Standards.html and it says:
>>>>
>>>> "A fourth version of the C standard, known as C11, was published in 2011
>>>> as ISO/IEC 9899:2011. GCC has limited incomplete support for parts of
>>>> this standard, enabled with -std=c11 or -std=iso9899:2011."
>>>>
>>>> It does not say anything about "experimental" there. The word
>>>> "experimental" is only used for the C++ support, but we hardly have C++
>>>> code in QEMU -- if you worry about that, I could simply drop the
>>>> "-std=gnu++11" part from my patch?
>>>
>>> I was looking at the "info gcc" docs on RHEL7, gcc-4.8.5-16.el7_4.1.x86_64:
>>>
>>> "3.4 Options Controlling C Dialect
>>>
>>> ....snip...
>>>
>>> 'gnu11'
>>> 'gnu1x'
>>> GNU dialect of ISO C11. Support is incomplete and
>>> experimental. The name 'gnu1x' is deprecated."
>>
>> Ok. Looks like the "Support is incomplete and experimental" sentence has
>> been removed with GCC 4.9.0 here. So GCC 4.8 is likely pretty close
>> already. IMHO we could give it a try and enable gnu11 for QEMU with GCC
>> v4.8, too. If we later find problems, we could still switch back to
>> gnu99 instead. Other opinions?
>
> Switchinh back could be somewhat painful if we already started using C11
> features. And if we don't plan to, then what exactly will -std=gnu11
> buy us?
With C11, we get safety for the "duplicated typedef" problem that we run
into regularly again and again, see e.g.:
https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
Thomas
- [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/07
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Daniel P . Berrangé, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Daniel P . Berrangé, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Markus Armbruster, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11,
Thomas Huth <=
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Markus Armbruster, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Daniel P . Berrangé, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Daniel P . Berrangé, 2019/01/09
- Re: [Qemu-devel] [PATCH] configure: Force the C standard to gnu11, Thomas Huth, 2019/01/09