Thanks for the response.

> On most reasonable computers, every data pointer has the same size and
> representation (so same size, same alignment, internally represented as some
> "word" eg 64 bits).
>
> So you could at least make the libgccjit calls to build the equivalent of 
>
>     union u {
>        int x;
>        void* p;
>     };
>
> and then use libgccjit casts to transform the p to a union u* pointer.
>
> Assuming your libgccjit context has some optimization enabled, the generated
> code should be the same.

I was either thinking of doing this, or else wrapping the union in a
struct, as in

        struct s {
                union {
                        int x;
                        struct s* p;
                } u;
        };

I think in both cases the generated code should optimize to the same? I
suspect that it would be a pretty substantial change to introduce a
gcc_jit_union type and gcc_jit_context_new_opaque_union, to match
structs, but not having those makes this feature significantly more
complicated to implement.

Reply via email to