[m-users.] Change in compiler behaviour for 22.01.8 ? Pointer type strictness increased?
Volker Wysk
post at volker-wysk.de
Wed May 1 04:34:01 AEST 2024
Am Samstag, dem 27.04.2024 um 10:25 -0700 schrieb M McDonough:
>
> I just want to note this, as it's caused me issues in the past. It's a
> bad idea to have anything other than a variable or integral expression
> (no function calls, no macros, etc) as the argument to MR_list_cons
> (and I would generally say any of the MR_* macros unless you've read
> them carefully). You can end up with issues where things are executed
> in an unexpected order, and in particular on the low-level C grades,
> this can cause big issues with Mercury registers being clobbered
> leading to very hard to debug issues with seemingly impossible
> behavior.
Hmmm... I've read your thread from July 2023 about this problem. I'm
wondering if it could be remedied by wrapping it in an inline C function,
like this:
static inline MR_Word mr_list_cons(MR_Word head, MR_Word tail)
{
MR_Word result = MR_list_cons(head, tail);
return result;
}
This would ensure that the expressions head, tail and the body of
MR_list_cons are evaluated in the expected order.
Cheers,
Volker
More information about the users
mailing list