Commit dcca1b05 by Kazu Kirata Committed by Jeff Law

[PATCH][PR target/19201] Peephole to improve clearing items in structure for m68k

[PATCH][PR target/19201] Peephole to improve clearing items in structure for m68k
	* config/m68k/m68k.md (load feeding clear byte): New peephole2.

	* gcc.target/m68k/pr19201.c: New test.

From-SVN: r231597
parent d686d806
2015-12-13 Kazu Kirata <kazu@gcc.gnu.org>
* config/m68k/m68k.md (load feeding clear byte): New peephole2.
2015-12-13 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (find_func_clobbers): Handle sizes and kinds
......@@ -7601,3 +7601,36 @@
(include "cf.md")
(include "sync.md")
;; Convert
;;
;; move.l 4(%a0),%a0
;; clr.b (%a0,%a1.l)
;;
;; into
;;
;; add.l 4(%a0),%a1
;; clr.b (%a1)
;;
;; The latter is smaller. It is faster on all models except m68060.
(define_peephole2
[(set (match_operand:SI 0 "register_operand" "")
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "const_int_operand" ""))))
(set (mem:QI (plus:SI (match_operand:SI 3 "register_operand" "")
(match_operand:SI 4 "register_operand" "")))
(const_int 0))]
"(optimize_size || !TUNE_68060)
&& (operands[0] == operands[3] || operands[0] == operands[4])
&& ADDRESS_REG_P (operands[1])
&& ADDRESS_REG_P ((operands[0] == operands[3]) ? operands[4] : operands[3])
&& peep2_reg_dead_p (2, operands[3])
&& peep2_reg_dead_p (2, operands[4])"
[(set (match_dup 5)
(plus:SI (match_dup 5)
(mem:SI (plus:SI (match_dup 1)
(match_dup 2)))))
(set (mem:QI (match_dup 5))
(const_int 0))]
"operands[5] = (operands[0] == operands[3]) ? operands[4] : operands[3];")
2015-12-13 Jeff Law <law@redhat.com>
* gcc.target/m68k/pr19201.c: New test.
* gcc.target/m68k/pr63347.c: Remove #include <stdlib> add -w to
command line options.
* gcc.target/m68k/20090709-1.c: Adjust expected output.
......
/* { dg-options "-w -O2 -fomit-frame-pointer" } */
/* { dg-final { scan-assembler-not "%a.,%\[ad\]..l" } } */
struct X {
char *a;
/* other members */
int b;
};
void f (struct X *x)
{
x->a[x->b] = 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment