On 27/11/15 14:35, Bernd Schmidt wrote:
On 11/27/2015 03:33 PM, Kyrill Tkachov wrote:
Sorry for that.
That is caused not by this patch but rather by the followup
https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03327.html
The checking assert fails:
gcc_checking_assert (!emit_a || !modified_in_p (orig_b, emit_a));
emit_a is:
(parallel [
(set (reg:SI 93)
(plus:SI (reg/v:SI 88 [ i ])
(const_int 2 [0x2])))
(clobber (reg:CC 17 flags))
])
and and orig_b is:
(if_then_else:SI (eq (reg:CC 17 flags)
(const_int 0 [0]))
(reg/v:SI 87 [ <retval> ])
(reg/v:SI 88 [ i ]))
So I think our assumption that this case would never trigger by this
point doesn't hold
due to the CC reg clobber.
So the code before that patch was probably correct.
I think we should revert
https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03327.html then.
Yes. Sorry. I thought orig_b would hold "normal" objects and not such an
if-then-else.
Reverted with r231019.
Sorry for not catching it myself earlier.
Kyrill
Bernd