http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60918
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I thing gcc output is correct. Why processor are you running on that the result is incorrect. Also quote the mips32 isa of why you think lwl and lwr work the way think it works.