>>809のいっていることでよくわからんことがあるんだが、
おれが勘違いしているかもしれないんで低姿勢で聞いておく。

tagっていうのは pointer (もどき) の下位 bitsを使って、
pointerの解釈を変えるものですよね?
000 だったら、実はそれは 29bit fixnumだったとか。

12bytesの mpz_tに tagをつけても pointerもどきには収まらない
(たぶん 32bitか 64bitだよなあ) から、そんなもんに tagつけても
意味ないじゃん、って思うんだけど、勘違い?
mpz_tをさす pointerに tagつけるならわかるけど、それだったら
mpq_tに無駄ができるとかいうのが意味がわからない...