------- Comment #5 from tsv at solvo dot ru  2005-10-14 13:30 -------
I tried check the difference between 3.4 and 4.x. The 3.4 emit instruction that
correct passed pointer (in my case -25) and then stores value to member of
structure (p4) at correct offset (24).
In gcc 4.x the "store_field" is called with target rtx defined as "MEM plus
const_int -25", but in gcc 3.4 - just MEM. The "store_bit_field" adds member
offset to target rtx and it became "MEM plus const_int -1". Later on
"get_aligned_mem" in alpha.c tries to convert it to "load long", but at that
point it thinks that MEM is aligned (which is not true).
Unfortunatelly, I don't have deep knowledge of gcc :) and could not figure out
what is correct place for check of alignment restrictions for such cases:
expand_assignment, store_field or store_bit_field functions. All of them seems
to have alignemnt check logic.

Thank you.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24178

Reply via email to