[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] two fixes
From: |
grischka |
Subject: |
Re: [Tinycc-devel] two fixes |
Date: |
Fri, 26 Sep 2014 00:19:50 +0200 |
User-agent: |
Thunderbird 2.0.0.23 (Windows/20090812) |
Thomas Preud'homme wrote:
http://repo.or.cz/w/tinycc.git/commitdiff/9d7fb3336049243a16ce20ba907946d1de
Wow, so short change. I'm not sure I understand. It seems before the
destination would have lost its bitfield (since the gv_dup is done after). But
you also changed gv_dup + vswap + vrott into vdup, is that just an improvement
unrelated to the bug or it also matters?
Depends what "the bug" is. Probably worth to note, there is a "parent bug"
actually, which I was trying to fix first 9 years ago here
http://landley.net/hg/tinycc/rev/025b81f7e70b
which patch jiang managed to remove with striking precision in order
to save one machine instruction, here
http://repo.or.cz/w/tinycc.git/commitdiff/e5e7f488e22190f893152c0b2f73e9ba499c4169
and added back here
http://repo.or.cz/w/tinycc.git/commitdiff/f26fdaefd8b35489f26462992010b9ecd76d8fe3
So really it's just another attempt to fix that old problem, somehow more
correctly, hopefully.
Using vdup() on lvalue assumes that if it's in a register (for example
a pointer such as with s->a_bitfield) then that vstore() does not change
that register. If that's not true always or not on all platforms (arm?)
then, well, someone needs to have a better idea.
--- grischka
Cheers,
Thomas