qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] qemu-system-ppc TCG assert with git master


From: Bastian Koppelmann
Subject: Re: [Qemu-devel] qemu-system-ppc TCG assert with git master
Date: Thu, 12 Mar 2015 14:55:37 +0000
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.5.0

Hi Mark, sorry I forgot to cc qemu-devel :/

On 03/12/2015 08:41 AM, Mark Cave-Ayland wrote:
Hi all,

Whilst testing git master in preparation for some OpenBIOS updates, I'm
seeing the following TCG assert in one of my older test images:


$ gdb --args ./qemu-system-ppc -cdrom
/home/build/src/qemu/image/ppc/ubuntu-5.10-live-powerpc.iso -boot d -g
800x600x8
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/build/rel-qemu-git/bin/qemu-system-ppc...done.
(gdb) r
Starting program: /home/build/rel-qemu-git/bin/qemu-system-ppc -cdrom
/home/build/src/qemu/image/ppc/ubuntu-5.10-live-powerpc.iso -boot d -g
800x600x8
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe9ef3700 (LWP 11437)]
[New Thread 0x7fffe5bf1700 (LWP 11438)]
[New Thread 0x7fffe53f0700 (LWP 11439)]
[Thread 0x7fffe5bf1700 (LWP 11438) exited]
[New Thread 0x7fffe5bf1700 (LWP 11443)]
[Thread 0x7fffe5bf1700 (LWP 11443) exited]
qemu-system-ppc: /home/build/src/qemu/git/qemu/tcg/optimize.c:212:
tcg_opt_gen_mov: Assertion `temps[src].state != TCG_TEMP_CONST' failed.

does this fix it?

diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index 96adf9a..4c8ff70 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -396,7 +396,11 @@ static inline void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)

 static inline void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
 {
-    tcg_gen_op3_i32(INDEX_op_or_i32, ret, arg1, arg2);
+    if (TCGV_EQUAL_I32(arg1, arg2)) {
+        tcg_gen_mov_i32(ret, arg1);
+    } else {
+        tcg_gen_op3_i32(INDEX_op_or_i32, ret, arg1, arg2);
+    }
 }

 static inline void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)

The patch is also attached. It is just a revert of tcg_gen_or_i32. I'll investigate some more why the optimizer fails here.

Cheers,
Bastian

Attachment: 0001-tcg-tcg_gen_or_i32-causing-in-some-cases-tcg_opt_gen.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]