This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/32790] REG_N_SETS holds wrong value
- From: "georgjohann at web dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Jul 2007 11:13:24 -0000
- Subject: [Bug rtl-optimization/32790] REG_N_SETS holds wrong value
- References: <bug-32790-11621@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from georgjohann at web dot de 2007-07-17 11:13 -------
(In reply to comment #1)
>
> This comes from the begining of time :).
> ZERO_EXTRACT has been there since the begining of time also:
> 70 kenner DEF_RTL_EXPR(ZERO_EXTRACT, "zero_extract", "eee", 'b')
>
So what is the conclusion...?
At least the following backends implement "insv" as
(define_*** "insv"
[(set (zero_extract (match_operand 0 ...
with a predicate that allows registers:
i386, pa, sh, c4x, arm, vax, ia64, m68k, ip2k, ns32k, rs6000, h8300, mcore
Uses of REG_N_SETS(*) are spread all over the RTL passes and many of them rely
on REG_N_SETS(*) == 1 etc.
If such a condition holds but is incorrect because (set (zero_extract is
ignored that may lead to a bug in the output, e.g. due to a wrong replacement.
--
georgjohann at web dot de changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |minor
Version|4.3.0 |unknown
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32790