https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102196
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- tc-microblaze.c case: if (exp.X_op != O_constant) as_warn (_("Symbol used as immediate for shift instruction")); else { output = frag_more (isize); immed = exp.X_add_number; } if (immed != (immed % 32)) { as_warn (_("Shift value > 32. using <value %% 32>")); immed = immed % 32; } Maybe we could print out the pathes which set it but I don't think that is useful. Especially in this case it where it is just set a few lines above. The next one there is the same: if (exp.X_op != O_constant) { as_warn(_("Symbol used as immediate for mbar instruction")); } else { output = frag_more (isize); immed = exp.X_add_number; } if (immed != (immed % 32)) { as_warn(_("Immediate value for mbar > 32. using <value %% 32>")); immed = immed % 32; } config/tc-mcore.c is much more complex, there is a switch table and on some pathes output variable is not set. Showing the path in the case of tc-mcore.c is going to be problemantic and might not actually show the correct thing always. Note I do think you should file a binutils bug since those obvious bugs there.