http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49468
--- Comment #5 from Kazumoto Kojima <kkojima at gcc dot gnu.org> 2011-06-27
06:39:40 UTC ---
Argh, I also missed clobbers. Looks fine to me now, except
that insn_and_split "*negdi2" forgot to set constraints and
some minor coding style issues below.
The first comment should be started with a capital letter and
ended with a period. Also please follow GCC C coding style
even for C program segments in .md file. C lines in the patch
are started with a tab instead of 2 spaces. A long conditional
should be broken like as
(cond
? value0
: value1)
instead of
(cond ?
value0 :
value1)
Please use braces
"
{
int low_word = ...
...
emit_insn (...
DONE;
}")
instead of
"
int low_word = ...
...
emit_insn (...
DONE;
")
especially when new variables are used, though those braces
aren't required with the current gen* tools.
> + emit_insn (gen_negsi_cond (operands[0], operands[1], operands[1],
> + GEN_INT (1)));
The first line has an extra space after the last comma and
the indentation of the 2nd line doesn't match with GCC coding
standard. BTW, you could use const[01]_rtx for GEN_INT ([01]):
emit_insn (gen_negsi_cond (operands[0], operands[1], operands[1],
const1_rtx));
There are similar extra white space + broken indentation issues:
> +(define_insn_and_split "negsi_cond"
> + [(set (match_operand:SI 0 "arith_reg_dest" "=r,r")
> + (if_then_else:SI (eq:SI (reg:SI T_REG)
> + (match_operand:SI 3
> "const_int_operand" "M,N"))
...
> + emit_label_after (skip_neg_label,
> + emit_insn (gen_negsi2
> (operands[0], operands[1])));
...
Perhaps mail or editor problem?