The hc08 port allows rematerilization of things other than addresses of global variables: In ralloc.c, line 2885 it tests using IS_VALOP. However, when the value is to be rematerialized, only the lower two bytes are rematerialized correctly, upper bytes are set to zero, which results in broken code when rematerializing e.g. a long.
I noticed this in the lospre branch, revision #7835, as it causes the regression test gen/hc08/addsub/addsub_storage_none_type_long_attr_volatile to fail there, but the bug is there in trunk as well, it just isn't triggered by any of our current regression tests.
Log in to post a comment.