This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch,avr,committed]: Remove flag_strict_overflow from avr.md
- From: Richard Biener <rguenther at suse dot de>
- To: Georg-Johann Lay <avr at gjlay dot de>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Denis Chertykov <chertykov at gmail dot com>, Pitchumani Sivanupandi <pitchumani dot sivanupandi at microchip dot com>, Senthil Kumar Selvaraj <senthilkumar dot selvaraj at microchip dot com>
- Date: Fri, 5 May 2017 13:04:12 +0200 (CEST)
- Subject: Re: [patch,avr,committed]: Remove flag_strict_overflow from avr.md
- Authentication-results: sourceware.org; auth=none
- References: <acde7749-f909-9530-246d-232d9356ceca@gjlay.de>
On Fri, 5 May 2017, Georg-Johann Lay wrote:
> Applied this addendum to r247495 which removed flag_strict_overflow. There
> were remains of the flag in avr.md which broke the avr build.
>
> Committed as r247632.
Whoops - sorry for not grepping besides .[ch] files...
But... these patterns very much look like premature optimization
and/or bugs. combine is supposed to handle this via simplify_rtx.
Also note that on RTL we generally assume overflow wraps as we lose
signedness of operands. Not sure what 'compare' in your patterns
will end up with.
The only flag_wrapv checks in RTL otherwise are in simplify-rtx.c
for ABS which seems to be a singed RTL op.
That said, I suggest to get rid of the avr.md patterns and instead
move functionality to simplify-rtx.c (if they still trigger).
Richard.
>
> Johann
>
>
> * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
> of this flag from insn conditions due to removal from r247495.
>
>
> Index: config/avr/avr.md
> ===================================================================
> --- config/avr/avr.md (revision 247631)
> +++ config/avr/avr.md (working copy)
> @@ -4580,7 +4580,7 @@ (define_insn "*negated_tstqi"
> [(set (cc0)
> (compare (neg:QI (match_operand:QI 0 "register_operand" "r"))
> (const_int 0)))]
> - "!flag_wrapv && !flag_trapv && flag_strict_overflow"
> + "!flag_wrapv && !flag_trapv"
> "cp __zero_reg__,%0"
> [(set_attr "cc" "compare")
> (set_attr "length" "1")])
> @@ -4598,7 +4598,7 @@ (define_insn "*negated_tsthi"
> [(set (cc0)
> (compare (neg:HI (match_operand:HI 0 "register_operand" "r"))
> (const_int 0)))]
> - "!flag_wrapv && !flag_trapv && flag_strict_overflow"
> + "!flag_wrapv && !flag_trapv"
> "cp __zero_reg__,%A0
> cpc __zero_reg__,%B0"
> [(set_attr "cc" "compare")
> @@ -4621,7 +4621,7 @@ (define_insn "*negated_tstpsi"
> [(set (cc0)
> (compare (neg:PSI (match_operand:PSI 0 "register_operand" "r"))
> (const_int 0)))]
> - "!flag_wrapv && !flag_trapv && flag_strict_overflow"
> + "!flag_wrapv && !flag_trapv"
> "cp __zero_reg__,%A0\;cpc __zero_reg__,%B0\;cpc __zero_reg__,%C0"
> [(set_attr "cc" "compare")
> (set_attr "length" "3")])
> @@ -4640,7 +4640,7 @@ (define_insn "*negated_tstsi"
> [(set (cc0)
> (compare (neg:SI (match_operand:SI 0 "register_operand" "r"))
> (const_int 0)))]
> - "!flag_wrapv && !flag_trapv && flag_strict_overflow"
> + "!flag_wrapv && !flag_trapv"
> "cp __zero_reg__,%A0
> cpc __zero_reg__,%B0
> cpc __zero_reg__,%C0
>
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)