This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch]: Add support of new __int128 type for targets having 128-bit integer scalar support


2010/5/25 Jason Merrill <jason@redhat.com>:
> On 05/25/2010 12:00 PM, Joseph S. Myers wrote:
>>
>> On Tue, 25 May 2010, Jason Merrill wrote:
>>>
>>> So, how do you write the largest unsigned __int128 as a literal?
>>
>> ((unsigned __int128)-1 or ~(unsigned
>> __int128)0 would be the simplest way of expressing that particular value.)
>
> Good enough.
>
> Jason
>

So I added here a additional patch for g++.dg testsuite, which
addresses enum1.C (and some other adjustment for LLP64 target),

ChangeLog
2010-05-25  Kai Tietz

        * g++.dg/init/enum1.C: Handle __int128 case and add -Wno-overflow.
        * g++.dg/cpp0x/nullptr04.C: Use __SIZE_TYPE__ for getting
pointer-wide scalar.
        * g++.dg/other/pr25632.C: Likewise.
        * g++.dg/other/large-size-array.C (DIM): Use ULLONG_MAX for win64 case.
        * g++.dg/warn/pr13358-2.C: Add llp64 for check of special
overflow warnings.
        * g++.dg/warn/pr13358-4.C: Likewise.
        * g++.dg/warn/Wconversion-null-2.C:  Add 'long long' case.
        * g++.dg/warn/Wconversion-null.C: Likewise.

Here the updated patch for __int128. It doesn't use for __int128
keyword the D_EXT any more. Not sure if this is that good, as it means
that the token __int128 is interpreted as keyword for
non-gnu-extension, but well.

        * builtin-types.def (BT_INT128): New primitive type.
        (BT_UINT128): Likewise.
        * c-common.c (c_common_r): Add __int128 keyword.
        (c_common_type_for_size): Handle __int128.
        (c_common_type_for_mode): Likewise.
        (c_common_signed_or_unsigned_type): Likewise.
        (c_common_nodes_and_builtins): Add builtin type
        if target supports 128-bit integer scalar.
        * c-common.h (enum rid): Add RID_INT128.
        * c-cppbuiltin.c (c_cpp_builtins): Define __SIZEOF_INT128__
        if target supports 128-bit integer scalar.
        * c-decl.c (declspecs_add_type): Handle new keyword
        __int128.
        (finish_declspecs): Likewise.
        * c-parser.c (c_token_starts_typename): Handle RID_INT128.
        (c_token_starts_declspecs): Likewise.
        (c_parser_declspecs): Likewise.
        (c_parser_attributes): Likewise.
        (c_parser_objc_selector): Likewise.
        * c-pretty-print.c (pp_c_integer_constant): Handle __int128.
        * c-tree.h (enum c_typespec_keyword): Add cts_int128.
        * gimple.c (gimple_signed_or_unsigned_type): Handle int128 types.
        * tree.c (make_or_reuse_type): Likewise.
        (make_unsigned_type): Likewise.
        (build_common_tree_nodes_2): Likewise.
        * tree.h (enum integer_type_kind): Add itk_int128 and
        itk_unsigned_int128.
        (int128_integer_type_node): New define..
        (int128_unsigned_type_node): New define.
        * cp/cp-tree.h (cp_decl_specifier_seq): Add new bifield
        explicit_int128_p.
        * cp/decl.c (grokdeclarator): Handle __int128.
        * cp/parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
        (cp_parser_simple_type_specifier): Likewise.
        * cp/rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
        * cp/typeck.c (cp_common_type): Handle __int128.
        * doc/extend.texi: Add documentation about __int128 type.

2010-05-25  Kai Tietz

       * lib/target-supports.exp (check_effective_target_int128): New
       function to check if __int128 types are available for target.
       * testsuite/c-c++-common/int128-types-1.c: New.
       * testsuite/c-c++-common/int128-1.c: New.
       * testsuite/c-c++-common/int128-2.c: New.

Patches tested for i686-pc-linux-gnu, x86_64-pc-linux-gnu,
i686-pc-mingw32, x86_64-pc-mingw32, and i686-pc-cygwin. Ok for apply?

Regards,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

Attachment: x64_test.diff
Description: Binary data

Attachment: int128doc.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]