------- Comment #2 from jakub at gcc dot gnu dot org 2009-02-02 10:06 ------- I think the bug is in check_asm_operands/asm_operand_ok. The latter has: case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': /* For best results, our caller should have given us the proper matching constraint, but we can't actually fail the check if they didn't. Indicate that results are inconclusive. */ but the former only handles the simple case: if (c[0] == '%') c++; if (ISDIGIT ((unsigned char) c[0]) && c[1] == '\0') c = constraints[c[0] - '0']; Together this allows combine to combine something that definitely shouldn't be combined.
-- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-02-02 10:06:53 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39058