From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XcxKf-0002Ja-UD for qemu-devel@nongnu.org; Sat, 11 Oct 2014 10:07:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XcxKW-0004bJ-TE for qemu-devel@nongnu.org; Sat, 11 Oct 2014 10:07:41 -0400 Message-ID: <54393AF0.1010708@gmail.com> Date: Sat, 11 Oct 2014 22:13:04 +0800 From: Chen Gang MIME-Version: 1.0 References: <5439399D.4020004@gmail.com> In-Reply-To: <5439399D.4020004@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] libvixl: a64: Skip "-Wunused-variable" for gcc 5.0.0 or higher List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: peter.maydell@linaro.org, rth@twiddle.net, Eric Blake Cc: qemu-trivial@nongnu.org, qemu-devel On 10/11/14 22:07, Chen Gang wrote: > 'instructions-a64.h' has unused variables for qemu which can be found by > gcc 5.0.0 or higher. and qemu needs "-Werror", and cause building break. > But they may be used by another projects (not qemu). > > So for gcc 5.0.0 or higher, need still keep them, but ignore diagnostic > (still print warning, but not break building). The related warnings: > > CXX disas/arm-a64.o > In file included from /upstream/qemu/disas/libvixl/a64/disasm-a64.h:32:0, > from disas/arm-a64.cc:20: > disas/libvixl/a64/instructions-a64.h:98:13: error: 'vixl::kFP32PositiveInfinity' defined but not used [-Werror=unused-variable] > const float kFP32PositiveInfinity = rawbits_to_float(0x7f800000); > ^ > disas/libvixl/a64/instructions-a64.h:99:13: error: 'vixl::kFP32NegativeInfinity' defined but not used [-Werror=unused-variable] > const float kFP32NegativeInfinity = rawbits_to_float(0xff800000); > ^ > disas/libvixl/a64/instructions-a64.h:100:14: error: 'vixl::kFP64PositiveInfinity' defined but not used [-Werror=unused-variable] > const double kFP64PositiveInfinity = > ^ > disas/libvixl/a64/instructions-a64.h:102:14: error: 'vixl::kFP64NegativeInfinity' defined but not used [-Werror=unused-variable] > const double kFP64NegativeInfinity = > ^ > disas/libvixl/a64/instructions-a64.h:107:21: error: 'vixl::kFP64SignallingNaN' defined but not used [-Werror=unused-variable] > static const double kFP64SignallingNaN = > ^ > disas/libvixl/a64/instructions-a64.h:109:20: error: 'vixl::kFP32SignallingNaN' defined but not used [-Werror=unused-variable] > static const float kFP32SignallingNaN = rawbits_to_float(0x7f800001); > ^ > disas/libvixl/a64/instructions-a64.h:112:21: error: 'vixl::kFP64QuietNaN' defined but not used [-Werror=unused-variable] > static const double kFP64QuietNaN = > ^ > disas/libvixl/a64/instructions-a64.h:114:20: error: 'vixl::kFP32QuietNaN' defined but not used [-Werror=unused-variable] > static const float kFP32QuietNaN = rawbits_to_float(0x7fc00001); > ^ > disas/libvixl/a64/instructions-a64.h:117:21: error: 'vixl::kFP64DefaultNaN' defined but not used [-Werror=unused-variable] > static const double kFP64DefaultNaN = > ^ > disas/libvixl/a64/instructions-a64.h:119:20: error: 'vixl::kFP32DefaultNaN' defined but not used [-Werror=unused-variable] > static const float kFP32DefaultNaN = rawbits_to_float(0x7fc00000); > ^ > cc1plus: all warnings being treated as errors > make: *** [disas/arm-a64.o] Error 1 > > After this patch, can pass upstream gcc 5.0.0 building (print warning, > but not break building), and fedora 20 gcc 4.8.1 building (not find Oh, sorry, under fedora 20, it is "gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC)". And the detail gcc 5.0.0 is "gcc version 5.0.0 20141003 (experimental) (GCC)" > warnings). > > Signed-off-by: Chen Gang > --- > disas/libvixl/a64/instructions-a64.h | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/disas/libvixl/a64/instructions-a64.h b/disas/libvixl/a64/instructions-a64.h > index d5b90c5..5f707f3 100644 > --- a/disas/libvixl/a64/instructions-a64.h > +++ b/disas/libvixl/a64/instructions-a64.h > @@ -95,6 +95,12 @@ const unsigned kDoubleExponentBits = 11; > const unsigned kFloatMantissaBits = 23; > const unsigned kFloatExponentBits = 8; > > +/* For QEMU, gcc 5.0.0 or higher finds unused variables, so ignore diagnostic */ > +#if __GNUC__ >= 5 > +#pragma GCC diagnostic push > +#pragma GCC diagnostic ignored "-Wunused-variable" > +#endif > + > const float kFP32PositiveInfinity = rawbits_to_float(0x7f800000); > const float kFP32NegativeInfinity = rawbits_to_float(0xff800000); > const double kFP64PositiveInfinity = > @@ -118,6 +124,9 @@ static const double kFP64DefaultNaN = > rawbits_to_double(UINT64_C(0x7ff8000000000000)); > static const float kFP32DefaultNaN = rawbits_to_float(0x7fc00000); > > +#if __GNUC__ >= 5 > +#pragma GCC diagnostic pop > +#endif > > enum LSDataSize { > LSByte = 0, > -- Chen Gang Open, share, and attitude like air, water, and life which God blessed