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

--- Comment #24 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-04 
11:16:20 UTC ---
The hint in comment #5 together with your analysis points at the initializer
in insn-output.c:

const struct insn_data_d insn_data[] =
{
...
  /* /space/rguenther/src/svn/trunk/gcc/config/i386/i386.md:16008 */
  {
    "cmpstrnsi",
#if HAVE_DESIGNATED_UNION_INITIALIZERS
    { 0 },
#else
    { 0, 0, 0 },
#endif
    (insn_gen_fn) gen_cmpstrnsi,
    &operand_data[5173],
    5,
    5,
    0,
    0,
    0
  },

and operand_data in 

static const struct insn_operand_data operand_data[] =
{
...
  {
    0,
    "",
    VOIDmode,
    0,
    0,
    1,
    0
  },
  {  <--- should be this
    register_operand,
    "",
    SImode,
    0,
    0,
    1,
    0
  },
  {
    general_operand,
    "",
    BLKmode,
    0,
    0,
    1,
    1
  },

so maybe there is an off-by-one error somewhere in constant folding from
initializers?

Reply via email to