qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 2/6] Add copy and constant propagation.


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH v3 2/6] Add copy and constant propagation.
Date: Wed, 3 Aug 2011 20:20:59 +0000

On Wed, Aug 3, 2011 at 7:00 PM, Stefan Weil <address@hidden> wrote:
> Am 07.07.2011 14:37, schrieb Kirill Batuzov:
>>
>> Make tcg_constant_folding do copy and constant propagation. It is a
>> preparational work before actual constant folding.
>>
>> Signed-off-by: Kirill Batuzov<address@hidden>
>> ---
>>  tcg/optimize.c |  182
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>>  1 files changed, 180 insertions(+), 2 deletions(-)
>>
>> diff --git a/tcg/optimize.c b/tcg/optimize.c
>> index c7c7da9..f8afe71 100644
>> --- a/tcg/optimize.c
>> +++ b/tcg/optimize.c
>>
>
> ...
>
> This patch breaks QEMU on 32 bit hosts (tested on 386 Linux
> and w32 hosts). Simply running qemu (BIOS only) terminates
> with abort(). As the error is easy to reproduce, I don't provide
> a stack frame here.

I can't reproduce, i386/Linux and win32 versions of i386, Sparc32 and
Sparc64 emulators work fine.

Maybe you have a stale build (bug in Makefile dependencies)?

>> +static void tcg_opt_gen_mov(TCGArg *gen_args, TCGArg dst, TCGArg src,
>> +                            int nb_temps, int nb_globals)
>> +{
>> +        reset_temp(dst, nb_temps, nb_globals);
>> +        assert(temps[src].state != TCG_TEMP_COPY);
>> +        if (src>= nb_globals) {
>> +            assert(temps[src].state != TCG_TEMP_CONST);
>> +            if (temps[src].state != TCG_TEMP_HAS_COPY) {
>> +                temps[src].state = TCG_TEMP_HAS_COPY;
>> +                temps[src].next_copy = src;
>> +                temps[src].prev_copy = src;
>> +            }
>> +            temps[dst].state = TCG_TEMP_COPY;
>> +            temps[dst].val = src;
>> +            temps[dst].next_copy = temps[src].next_copy;
>> +            temps[dst].prev_copy = src;
>> +            temps[temps[dst].next_copy].prev_copy = dst;
>> +            temps[src].next_copy = dst;
>> +        }
>> +        gen_args[0] = dst;
>> +        gen_args[1] = src;
>> +}
>>
>
> QEMU with a modified tcg_opt_gen_mov() (without the if block) works.
>
> Kind regards,
> Stefan Weil
>
>



reply via email to

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