https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #6)
>   _5 = VEC_COND_EXPR <_9, { 0, 0 }, { -1, -1 }>;
>   _6 = VIEW_CONVERT_EXPR<long unsigned intD.10>(_5);
> 
> From that veclower produces:
>   <signed-boolean:32> _36;
...
>   _38 = _36 == 0;
>   _40 = (signed int) _36;
>   _41 = _40 + -1;
> 
>   _36 == 0 ? 0 : -1

I read it wrong, actually it is:
_40 = (signed int) _36
_41 = _40 + - 1;

Which gives -2 and -1 rather than -1 and 0 ...

Reply via email to