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

Reply via email to