On Tue, Oct 24, 2017 at 2:48 PM, Richard Sandiford
<richard.sandif...@linaro.org> wrote:
> Richard Biener <richard.guent...@gmail.com> writes:
>> On Tue, Oct 24, 2017 at 1:23 PM, Richard Sandiford
>> <richard.sandif...@linaro.org> wrote:
>>> Eric Botcazou <ebotca...@adacore.com> writes:
>>>>> Yeah.  E.g. for ==, the two options would be:
>>>>>
>>>>> a) must_eq (a, b)   -> a == b
>>>>>    must_ne (a, b)   -> a != b
>>>>>
>>>>>    which has the weird property that (a == b) != (!(a != b))
>>>>>
>>>>> b) must_eq (a, b)   -> a == b
>>>>>    may_ne (a, b)    -> a != b
>>>>>
>>>>>    which has the weird property that a can be equal to b when a != b
>>>>
>>>> Yes, a) was the one I had in mind, i.e. the traditional operators are
>>>> the must
>>>> variants and you use an outer ! in order to express the may.  Of course 
>>>> this
>>>> would require a bit of discipline but, on the other hand, if most of
>>>> the cases
>>>> fall in the must category, that could be less ugly.
>>>
>>> I just think that discipline is going to be hard to maintain in practice,
>>> since it's so natural to assume (a == b || a != b) == true.  With the
>>> may/must approach, static type checking forces the issue.
>>>
>>>>> Sorry about that.  It's the best I could come up with without losing
>>>>> the may/must distinction.
>>>>
>>>> Which variant is known_zero though?  Must or may?
>>>
>>> must.  maybe_nonzero is the may version.
>>
>> Can you rename known_zero to must_be_zero then?
>
> That'd be OK with me.
>
> Another alternative I wondered about was must_eq_0 / may_ne_0.
>
>> What's wrong with must_eq (X, 0) / may_eq (X, 0) btw?
>
> must_eq (X, 0) generated a warning if X is unsigned, so sometimes you'd
> need must_eq (X, 0) and sometimes must_eq (X, 0U).

Is that because they are templates?  Maybe providing a partial specialization
would help?

I'd be fine with must_eq_p and may_eq_0.

Richard.

>  Having a specific
> function seemed cleaner, especially in routines that were polymorphic
> in X.
>
> Or we could suppress warnings by forcibly converting the input.
> Sometimes the warnings are useful though.
>
> Thanks,
> Richard

Reply via email to