diff mbox

[AVR] : Fix PR51425

Message ID 4EE10144.2000504@gjlay.de
State New
Headers show

Commit Message

Georg-Johann Lay Dec. 8, 2011, 6:26 p.m. UTC
This is obvious patch for PR51425: SBIC/SBRC instructions are generated by insn
combine, but insn combine tries zero_extract:QI not zero_extract:HI as  in good
old times.

Thus, use QIHI iterator.

Besides fixing this optimization flaw, it enables other developers to reproduce
PR51374:  If the pattern is question don't match, PR51374 won't show up in 4.7.

Ok for trunk?

Johann

	PR target/51425
	* config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
	zero_extract:QIHI instead of zero_extract:HI.

Comments

Denis Chertykov Dec. 9, 2011, 6:14 a.m. UTC | #1
2011/12/8 Georg-Johann Lay <avr@gjlay.de>:
> This is obvious patch for PR51425: SBIC/SBRC instructions are generated by insn
> combine, but insn combine tries zero_extract:QI not zero_extract:HI as  in good
> old times.
>
> Thus, use QIHI iterator.
>
> Besides fixing this optimization flaw, it enables other developers to reproduce
> PR51374:  If the pattern is question don't match, PR51374 won't show up in 4.7.
>
> Ok for trunk?
>
> Johann
>
>        PR target/51425
>        * config/avr/avr.md (config/avr/avr.md, *sbix_branch_tmp): Use
>        zero_extract:QIHI instead of zero_extract:HI.

Approved.

Denis.
diff mbox

Patch

Index: config/avr/avr.md
===================================================================
--- config/avr/avr.md	(revision 182106)
+++ config/avr/avr.md	(working copy)
@@ -4699,7 +4699,7 @@  (define_insn "*sbix_branch"
   [(set (pc)
 	(if_then_else
 	 (match_operator 0 "eqne_operator"
-			 [(zero_extract:HI
+			 [(zero_extract:QIHI
 			   (mem:QI (match_operand 1 "low_io_address_operand" "n"))
 			   (const_int 1)
 			   (match_operand 2 "const_int_operand" "n"))
@@ -4746,7 +4746,7 @@  (define_insn "*sbix_branch_tmp"
   [(set (pc)
 	(if_then_else
 	 (match_operator 0 "eqne_operator"
-			 [(zero_extract:HI
+			 [(zero_extract:QIHI
 			   (mem:QI (match_operand 1 "high_io_address_operand" "n"))
 			   (const_int 1)
 			   (match_operand 2 "const_int_operand" "n"))