http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48835
--- Comment #31 from Mikael Pettersson <mikpe at it dot uu.se> 2011-09-21 07:34:33 UTC --- (In reply to comment #29) > (In reply to comment #28) > > Created attachment 24791 [details] > > working patch for gcc-4.7-20110709 > > > > gcc-4.7-20110709 bootstrapped fine with the attached forward-port of the > > gcc-4.5 patch. I'm starting a bisection to see when trunk started to work > > again, hoping that the same change will unbreak 4.6.1. > > After a lengthy bisection process, I've now finally identified r171341 > <http://gcc.gnu.org/ml/gcc-cvs/2011-03/msg00765.html> as the critical change > that unbroke GNAT/m68k on trunk. r171341 mixes cleanups with bugfixes, and is > far too big to backport as-is to 4.6, so I'm now trying to split it up to > identify a minimal bugfix-only fragment that unbreaks GNAT/m68k. It's the store_bit_field_1 changes + the new helpers that do the trick, specifically: * optabs.h (expand_operand_type): New enum. (expand_operand): New structure. (create_expand_operand): New function. (create_fixed_operand, create_output_operand): Likewise (create_input_operand, create_convert_operand_to): Likewise. (create_convert_operand_from, create_address_operand): Likewise. (create_integer_operand): Likewise. (create_convert_operand_from_type, maybe_legitimize_operands): Declare. (maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise. (expand_insn, expand_jump_insn): Likewise. * optabs.c (create_convert_operand_from_type): New function. (maybe_legitimize_operand, maybe_legitimize_operands): Likewise. (maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise. (expand_insn, expand_jump_insn): Likewise. * expmed.c (store_bit_field_1): Use the new interfaces. I'll continue trying to minimize the changeset.