On 24/03/16 18:36, Alex Bennée wrote:
>> diff --git a/translate-all.c b/translate-all.c
>> > index 8b4bfa713bf7..56c77a72773d 100644
>> > --- a/translate-all.c
>> > +++ b/translate-all.c
>> > @@ -962,25 +962,21 @@ static inline void tb_reset_jump(TranslationBlock 
>> > *tb, int n)
>> >  /* remove any jumps to the TB */
>> >  static inline void tb_jmp_unlink(TranslationBlock *tb)
>> >  {
>> > -    uintptr_t tb1, tb2;
>> > +    TranslationBlock *tb1;
>> > +    uintptr_t *ptb;
>> >      unsigned int n1;
>> >
>> > -    tb1 = tb->jmp_list_first;
>> > +    ptb = &tb->jmp_list_first;
>> >      for (;;) {
>> > -        TranslationBlock *tmp_tb;
>> > -        n1 = tb1 & 3;
>> > +        n1 = *ptb & 3;
>> > +        tb1 = (TranslationBlock *)(*ptb & ~3);
> I would hope the compiler saw through the duplicate indirect accesses
> but maybe:
>
>     uintptr_t *ptb, ntb;
>
> and
>
>     ntb = *ptb;
>     n1 = ntb & 3;
>     tb1 = (TranslationBlock *)(ntb & ~3);
>
> would be clearer?
>

Why not? :) Will do this.

Thanks,
Sergey

Reply via email to