> And we fail to fold vect_patt_384.36_436 | { 1, ... } to { 1, ... }?
> Or is the issue that vector masks contain padding and with
> non-zero masking we'd have garbage in the padding and that leaks
> here?  That is, _47 ? 1 : iftmp.0_113 -> _47 | iftmp.0_113 assumes
> there's exactly one bit in a bool, specifically it has assumptions
> on padding - I'd guess that
>
>  *(char *)p = 17;
>  _Bool _47 = *(_Bool *)p;
>  ... = _47 ? 1 : b;
>
> would have similar issues but eventually loading 17 into a _Bool
> invokes undefined behavior.  So maybe the COND_EXPRs are only
> required for .MASK_LOADs of _Bool (or any other type with padding)?

Hmm yeah, if you put it like that, very likely.  I have only seen
it with _Bool/mask types.  In this PR here the significant bit is
correct and it's the others leaking.

-- 
Regards
 Robin

Reply via email to