All of lore.kernel.org
 help / color / mirror / Atom feed
* Warnings from gcc 4.9 (on FreeBSD)
@ 2013-11-08 13:11 Bruce Cran
  2013-11-08 17:56 ` Jens Axboe
  0 siblings, 1 reply; 2+ messages in thread
From: Bruce Cran @ 2013-11-08 13:11 UTC (permalink / raw)
  To: fio

Building using gcc 4.9 (on FreeBSD 11-CURRENT) generates a few warnings 
about undefined behaviour:

     CC cconv.o
In file included from thread_options.h:5:0,
                  from cconv.c:3:
cconv.c: In function 'convert_thread_options_to_cpu':
os/os.h:197:16: warning: iteration 2u invokes undefined behavior 
[-Waggressive-loop-optimizations]
   __le32_to_cpu(*__val);   \
                 ^
os/os.h:176:28: note: in definition of macro '__le32_to_cpu'
  #define __le32_to_cpu(x)  (x)
                             ^
cconv.c:78:17: note: in expansion of macro 'le32_to_cpu'
    o->rwmix[i] = le32_to_cpu(top->rwmix[i]);
                  ^
cconv.c:63:2: note: containing loop
   for (i = 0; i < DDIR_RWDIR_CNT; i++) {
   ^
In file included from thread_options.h:5:0,
                  from cconv.c:3:
cconv.c: In function 'convert_thread_options_to_net':
os/os.h:209:16: warning: iteration 2u invokes undefined behavior 
[-Waggressive-loop-optimizations]
   __cpu_to_le32(*__val);   \
                 ^
os/os.h:179:28: note: in definition of macro '__cpu_to_le32'
  #define __cpu_to_le32(x)  (x)
                             ^
cconv.c:372:19: note: in expansion of macro 'cpu_to_le32'
    top->rwmix[i] = cpu_to_le32(o->rwmix[i]);
                    ^
cconv.c:352:2: note: containing loop
   for (i = 0; i < DDIR_RWDIR_CNT; i++) {
   ^
In file included from thread_options.h:5:0,
                  from cconv.c:3:
cconv.c: In function 'fio_test_cconv':
os/os.h:209:16: warning: iteration 2u invokes undefined behavior 
[-Waggressive-loop-optimizations]
   __cpu_to_le32(*__val);   \
                 ^
os/os.h:179:28: note: in definition of macro '__cpu_to_le32'
  #define __cpu_to_le32(x)  (x)
                             ^
cconv.c:372:19: note: in expansion of macro 'cpu_to_le32'
    top->rwmix[i] = cpu_to_le32(o->rwmix[i]);
                    ^
cconv.c:352:2: note: containing loop
   for (i = 0; i < DDIR_RWDIR_CNT; i++) {
   ^
In file included from thread_options.h:5:0,
                  from cconv.c:3:
os/os.h:197:16: warning: iteration 2u invokes undefined behavior 
[-Waggressive-loop-optimizations]
   __le32_to_cpu(*__val);   \
                 ^
os/os.h:176:28: note: in definition of macro '__le32_to_cpu'
  #define __le32_to_cpu(x)  (x)
                             ^
cconv.c:78:17: note: in expansion of macro 'le32_to_cpu'
    o->rwmix[i] = le32_to_cpu(top->rwmix[i]);
                  ^
cconv.c:63:2: note: containing loop
   for (i = 0; i < DDIR_RWDIR_CNT; i++) {
   ^

-- 
Bruce Cran

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Warnings from gcc 4.9 (on FreeBSD)
  2013-11-08 13:11 Warnings from gcc 4.9 (on FreeBSD) Bruce Cran
@ 2013-11-08 17:56 ` Jens Axboe
  0 siblings, 0 replies; 2+ messages in thread
From: Jens Axboe @ 2013-11-08 17:56 UTC (permalink / raw)
  To: Bruce Cran; +Cc: fio

On Fri, Nov 08 2013, Bruce Cran wrote:
> Building using gcc 4.9 (on FreeBSD 11-CURRENT) generates a few warnings
> about undefined behaviour:
> 
>     CC cconv.o
> In file included from thread_options.h:5:0,
>                  from cconv.c:3:
> cconv.c: In function 'convert_thread_options_to_cpu':
> os/os.h:197:16: warning: iteration 2u invokes undefined behavior
> [-Waggressive-loop-optimizations]
>   __le32_to_cpu(*__val);   \
>                 ^
> os/os.h:176:28: note: in definition of macro '__le32_to_cpu'
>  #define __le32_to_cpu(x)  (x)
>                             ^
> cconv.c:78:17: note: in expansion of macro 'le32_to_cpu'
>    o->rwmix[i] = le32_to_cpu(top->rwmix[i]);
>                  ^
> cconv.c:63:2: note: containing loop
>   for (i = 0; i < DDIR_RWDIR_CNT; i++) {
>   ^

Wow, gcc is really outdoing itself in making warnings obtuse. The below
should fix it up. We don't really use rwmix with TRIM, but lets just
extend it since that basically should be supported.


diff --git a/server.h b/server.h
index aefd41832483..5d9b6ccadae3 100644
--- a/server.h
+++ b/server.h
@@ -38,7 +38,7 @@ struct fio_net_cmd_reply {
 };
 
 enum {
-	FIO_SERVER_VER			= 25,
+	FIO_SERVER_VER			= 26,
 
 	FIO_SERVER_MAX_FRAGMENT_PDU	= 1024,
 
diff --git a/thread_options.h b/thread_options.h
index 3f345c56b3ba..484b16a56e75 100644
--- a/thread_options.h
+++ b/thread_options.h
@@ -157,7 +157,7 @@ struct thread_options {
 #endif
 	unsigned int iolog;
 	unsigned int rwmixcycle;
-	unsigned int rwmix[2];
+	unsigned int rwmix[DDIR_RWDIR_CNT];
 	unsigned int nice;
 	unsigned int ioprio;
 	unsigned int ioprio_class;
@@ -362,7 +362,7 @@ struct thread_options_pack {
 	uint32_t verify_cpumask_set;
 	uint32_t iolog;
 	uint32_t rwmixcycle;
-	uint32_t rwmix[2];
+	uint32_t rwmix[DDIR_RWDIR_CNT];
 	uint32_t nice;
 	uint32_t ioprio;
 	uint32_t ioprio_class;

-- 
Jens Axboe


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-11-08 17:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-08 13:11 Warnings from gcc 4.9 (on FreeBSD) Bruce Cran
2013-11-08 17:56 ` Jens Axboe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.