From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KvIjd-000214-FH for qemu-devel@nongnu.org; Wed, 29 Oct 2008 17:37:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KvIjb-00020D-Uf for qemu-devel@nongnu.org; Wed, 29 Oct 2008 17:37:48 -0400 Received: from [199.232.76.173] (port=43020 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KvIjb-000204-L2 for qemu-devel@nongnu.org; Wed, 29 Oct 2008 17:37:47 -0400 Received: from relay2-v.mail.gandi.net ([217.70.178.76]:55180) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KvIjb-0006IQ-8u for qemu-devel@nongnu.org; Wed, 29 Oct 2008 17:37:47 -0400 Message-ID: <4908D7A3.7030309@bellard.org> Date: Wed, 29 Oct 2008 22:37:39 +0100 From: Fabrice Bellard MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH][RFC] Run time TCGv size check for debugging Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: qemu-devel@nongnu.org Blue Swirl wrote: > Hi, > > When emulating a mixed 32/64 bit Qemu target CPUs it's easy to confuse > the TCGv size, passing 32 bit TCGv to a function expecting a 64 bit > one and vice versa. This patch adds a run time sanity check for TCGv > sizes. > > Because a 32 bit Qemu host does not really use 64 bit TCGvs, the patch > is only functional on a 64 bit host. Of course also a pure 32 bit Qemu > target is not likely to suffer from TCGv size confusion. > > Some use cases are not covered yet. Comments? Theses tests can be done at compile time by introducing the TCGv_i32 and TCGv_i64 types. The same can be done with the helpers by using a few macros to declare them. A optional runtime check would be still useful as an additional pass using the OP definitions to ensure that the TCG optimizations pass(es) are OK. IMHO, doing it only in tcg_gen_xxx is not enough. Fabrice.