Fix build of i915kms with base gcc

Base gcc fails to compile sys/dev/drm2/i915/intel_display.c for i386,
with the following -Werror warnings:

cc1: warnings being treated as errors
/usr/src/sys/dev/drm2/i915/intel_display.c:8884: warning:
initialization from incompatible pointer type

This is due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36432, which
incorrectly interprets the [] as a flexible array member.

Because base gcc does not have a -W flag to suppress this particular
warning, it requires a rather ugly cast.  To not influence any other
compiler, put it in a #if/#endif block.

Reviewed by:	kib
MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D15744
This commit is contained in:
dim 2018-06-11 08:11:35 +00:00
parent e03e69707a
commit 4b1911fb9e

View File

@ -8872,7 +8872,15 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
static const struct intel_dmi_quirk intel_dmi_quirks[] = {
{
.dmi_id_list = &(const struct dmi_system_id[]) {
.dmi_id_list =
#if !defined(__clang__) && !__GNUC_PREREQ__(4, 3)
/* gcc 4.2 needs an additional cast, to avoid a bogus
* "initialization from incompatible pointer type" warning.
* see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36432
*/
(const struct dmi_system_id (*)[])
#endif
&(const struct dmi_system_id[]) {
{
.callback = intel_dmi_reverse_brightness,
.ident = "NCR Corporation",