On Tue, Jan 28, 2020 at 04:56:59PM +0530, Prathamesh Kulkarni wrote:
> Thanks for the suggestions. In the attached patch I bumped up value of
> ERF_RETURNS_ARG_MASK
> to UINT_MAX >> 2, and use highest two bits for ERF_NOALIAS and
> ERF_RETURNS_ARG.
> And use fn spec "Z<argnum>" to store the argument number in fn-spec format.
> Does that look OK ?
No.
+#define ERF_RETURN_ARG_MASK (UINT_MAX >> 2)
/* Nonzero if the return value is equal to the argument number
flags & ERF_RETURN_ARG_MASK. */
-#define ERF_RETURNS_ARG (1 << 2)
+#define ERF_RETURNS_ARG (1 << (BITS_PER_WORD - 2))
How is size of host int related to BITS_PER_WORD? Not to mention that
if BITS_PER_WORD is 64 and host int is 32-bit, 1 << (64 - 2) is UB.
Jakub