[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 45/47] milkymist-pfpu: fix GCC 5.0.0 aggressive-loop-
From: |
Michael Tokarev |
Subject: |
[Qemu-devel] [PULL 45/47] milkymist-pfpu: fix GCC 5.0.0 aggressive-loop-optimizations warning |
Date: |
Wed, 4 Mar 2015 20:07:02 +0300 |
From: Radim Krčmář <address@hidden>
man gcc:
Warn if in a loop with constant number of iterations the compiler
detects undefined behavior in some statement during one or more of
the iterations.
Milkymist pfpu has no jump instructions, so checking for MICROCODE_WORDS
instructions should have kept us in bounds of s->microcode, but i++
allowed one loop too many,
hw/misc/milkymist-pfpu.c: In function ‘pfpu_write’:
hw/misc/milkymist-pfpu.c:365:20: error: loop exit may only be reached after
undefined behavior [-Werror=aggressive-loop-optimizations]
if (i++ >= MICROCODE_WORDS) {
^
hw/misc/milkymist-pfpu.c:167:14: note: possible undefined statement is here
uint32_t insn = s->microcode[pc];
^
The code can still access out of bounds, because it presumes that PC register
always begins at 0, and we allow writing to it.
Signed-off-by: Radim Krčmář <address@hidden>
Acked-by: Michael Walle <address@hidden>
Signed-off-by: Michael Tokarev <address@hidden>
---
hw/misc/milkymist-pfpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/misc/milkymist-pfpu.c b/hw/misc/milkymist-pfpu.c
index 609f33f..08b604f 100644
--- a/hw/misc/milkymist-pfpu.c
+++ b/hw/misc/milkymist-pfpu.c
@@ -362,7 +362,7 @@ static void pfpu_start(MilkymistPFPUState *s)
i = 0;
while (pfpu_decode_insn(s)) {
/* decode at most MICROCODE_WORDS instructions */
- if (i++ >= MICROCODE_WORDS) {
+ if (++i >= MICROCODE_WORDS) {
error_report("milkymist_pfpu: too many instructions "
"executed in microcode. No VECTOUT?");
break;
--
2.1.4
- [Qemu-devel] [PULL 21/47] arm/digic_boards: Remove superfluous '\n' around error_report(), (continued)
- [Qemu-devel] [PULL 21/47] arm/digic_boards: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 09/47] Add copyright and author after file split, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 30/47] sparc/leon3.c: fix memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 20/47] tpm: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 26/47] qapi-schema: Fix SpiceChannel docs, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 42/47] oslib-posix: Fix compiler warning (-Wclobbered) and simplify the code, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 01/47] xen-pt: fix Negative array index read, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 14/47] pl330.c: remove superfluous '\n' around error_setg, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 07/47] qemu-options: fix/document -incoming options, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 18/47] vfio: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 45/47] milkymist-pfpu: fix GCC 5.0.0 aggressive-loop-optimizations warning,
Michael Tokarev <=
- [Qemu-devel] [PULL 22/47] vhost: Remove superfluous '\n' around error_report(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 33/47] sysbus: fix memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 31/47] macio: fix possible memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 44/47] fix GCC 5.0.0 logical-not-parentheses warnings, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 38/47] vhost_net: Add missing 'static' attribute, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 24/47] ui/vnc: Remove vnc_stop_worker_thread(), Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 34/47] microblaze: fix memory leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 29/47] nbd: fix resource leak, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 35/47] gitignore: Track common.env in iotests gitignore, Michael Tokarev, 2015/03/04
- [Qemu-devel] [PULL 23/47] ui: Removed unused functions, Michael Tokarev, 2015/03/04