The following five patches are the latest in my ongoing work to
replace the hard-coded __int128 type with a more flexible __int<N>
system that allows target-specific types that correspond to
partial-int modes.  Specifically, this will allow targets to have
pointers that aren't powers-of-two in size.  Tested on x86-64 with no
regressions and msp430-elf with a few where I couldn't figure out how
to fix the testsuite to properly detect the msp430's 20-bit pointer
size (but the msp430 results had a lot more new passes with my patches ;)

I'm pretty sure I've addressed everyone's concerns, and once again
I've manually split up the ChangeLog and patch into multiple posts for
the convenience of review....

__intN patch 1/5: convert-move optimization

        A standalone patch that allows targets to provide a converter
        (trunc/extend) between *any* two modes.  Needed for the msp430
        patch.

__intN patch 2/5: Fix assumptions about mode precisions

        Many places in gcc use TYPE_SIZE instead of TYPE_PRECISION.
        This patch set fixes many (I doubt I found *all* of them) such
        cases.

__intN patch 3/5: main __int128 -> __intN conversion.

        This is the main part of the patch.  Doesn't require the other
        patches for targets that only have power-of-two pointers.

__intN patch 4/5: testsuite updates

        Some of the tests had their own assumption about pointer sizes
        :-P

__intN patch 5/5: msp430-specific changes

        For completeness, this is the msp430-specific fixes and
        optimizations to fully support 20-bit pointers.

Reply via email to