tcg: Tidy generated code for tcg_outN

Aliasing was forcing s->code_ptr to be re-read after the store.
Keep the pointer in a local variable to help the compiler.

Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
Richard Henderson 2013-08-14 09:46:38 -07:00
parent f7ad538e1e
commit 2bb8656dad
1 changed files with 6 additions and 4 deletions

View File

@ -121,14 +121,16 @@ static inline void tcg_out8(TCGContext *s, uint8_t v)
static inline void tcg_out16(TCGContext *s, uint16_t v)
{
*(uint16_t *)s->code_ptr = v;
s->code_ptr += 2;
uint8_t *p = s->code_ptr;
*(uint16_t *)p = v;
s->code_ptr = p + 2;
}
static inline void tcg_out32(TCGContext *s, uint32_t v)
{
*(uint32_t *)s->code_ptr = v;
s->code_ptr += 4;
uint8_t *p = s->code_ptr;
*(uint32_t *)p = v;
s->code_ptr = p + 4;
}
/* label relocation processing */