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
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel