Index: gcc/gcc/builtin-types.def =================================================================== --- gcc.orig/gcc/builtin-types.def 2010-04-08 11:38:54.333092000 +0200 +++ gcc/gcc/builtin-types.def 2010-04-08 11:45:25.504967600 +0200 @@ -72,6 +72,8 @@ DEF_PRIMITIVE_TYPE (BT_LONG, long_intege DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node) DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node) DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node) +DEF_PRIMITIVE_TYPE (BT_INT128, int128_integer_type_node) +DEF_PRIMITIVE_TYPE (BT_UINT128, int128_unsigned_type_node) DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node) DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node) DEF_PRIMITIVE_TYPE (BT_UINT32, uint32_type_node) Index: gcc/gcc/c-common.c =================================================================== --- gcc.orig/gcc/c-common.c 2010-04-08 11:42:03.223717600 +0200 +++ gcc/gcc/c-common.c 2010-04-08 11:45:25.504967600 +0200 @@ -63,10 +63,12 @@ cpp_reader *parse_in; /* Declared in c- tree short_integer_type_node; tree long_integer_type_node; tree long_long_integer_type_node; + tree int128_integer_type_node; tree short_unsigned_type_node; tree long_unsigned_type_node; tree long_long_unsigned_type_node; + tree int128_unsigned_type_node; tree truthvalue_type_node; tree truthvalue_false_node; @@ -86,6 +88,7 @@ cpp_reader *parse_in; /* Declared in c- tree long_double_type_node; tree complex_integer_type_node; + tree complex_int128_type_node; tree complex_float_type_node; tree complex_double_type_node; tree complex_long_double_type_node; @@ -591,6 +594,7 @@ const struct c_common_resword c_common_r { "__has_trivial_copy", RID_HAS_TRIVIAL_COPY, D_CXXONLY }, { "__has_trivial_destructor", RID_HAS_TRIVIAL_DESTRUCTOR, D_CXXONLY }, { "__has_virtual_destructor", RID_HAS_VIRTUAL_DESTRUCTOR, D_CXXONLY }, + { "__int128", RID_INT128, D_EXT }, { "__is_abstract", RID_IS_ABSTRACT, D_CXXONLY }, { "__is_base_of", RID_IS_BASE_OF, D_CXXONLY }, { "__is_class", RID_IS_CLASS, D_CXXONLY }, @@ -2848,6 +2852,10 @@ c_common_type_for_size (unsigned int bit return (unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node); + if (bits == TYPE_PRECISION (int128_integer_type_node)) + return (unsignedp ? int128_unsigned_type_node + : int128_integer_type_node); + if (bits == TYPE_PRECISION (widest_integer_literal_type_node)) return (unsignedp ? widest_unsigned_literal_type_node : widest_integer_literal_type_node); @@ -2926,6 +2934,9 @@ c_common_type_for_mode (enum machine_mod if (mode == TYPE_MODE (long_long_integer_type_node)) return unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node; + if (mode == TYPE_MODE (int128_integer_type_node)) + return unsignedp ? int128_unsigned_type_node : int128_integer_type_node; + if (mode == TYPE_MODE (widest_integer_literal_type_node)) return unsignedp ? widest_unsigned_literal_type_node : widest_integer_literal_type_node; @@ -2983,6 +2994,8 @@ c_common_type_for_mode (enum machine_mod if (mode == TYPE_MODE (complex_integer_type_node) && !unsignedp) return complex_integer_type_node; + if (mode == TYPE_MODE (complex_int128_type_node) && !unsignedp) + return complex_int128_type_node; inner_mode = GET_MODE_INNER (mode); inner_type = c_common_type_for_mode (inner_mode, unsignedp); @@ -3139,6 +3152,8 @@ c_common_signed_or_unsigned_type (int un return unsignedp ? long_unsigned_type_node : long_integer_type_node; if (type1 == long_long_integer_type_node || type1 == long_long_unsigned_type_node) return unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node; + if (type1 == int128_integer_type_node || type1 == int128_unsigned_type_node) + return unsignedp ? int128_unsigned_type_node : int128_integer_type_node; if (type1 == widest_integer_literal_type_node || type1 == widest_unsigned_literal_type_node) return unsignedp ? widest_unsigned_literal_type_node : widest_integer_literal_type_node; #if HOST_BITS_PER_WIDE_INT >= 64 @@ -3253,6 +3268,9 @@ c_common_signed_or_unsigned_type (int un if (TYPE_OK (long_long_integer_type_node)) return (unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node); + if (TYPE_OK (int128_integer_type_node)) + return (unsignedp ? int128_unsigned_type_node + : int128_integer_type_node); if (TYPE_OK (widest_integer_literal_type_node)) return (unsignedp ? widest_unsigned_literal_type_node : widest_integer_literal_type_node); @@ -3296,6 +3314,9 @@ c_build_bitfield_integer_type (unsigned if (width == TYPE_PRECISION (long_long_integer_type_node)) return (unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node); + if (width == TYPE_PRECISION (int128_integer_type_node)) + return (unsignedp ? int128_unsigned_type_node + : int128_integer_type_node); return build_nonstandard_integer_type (width, unsignedp); } @@ -4682,6 +4703,13 @@ c_common_nodes_and_builtins (void) record_builtin_type (RID_UNSIGNED, "unsigned int", unsigned_type_node); record_builtin_type (RID_MAX, "long unsigned int", long_unsigned_type_node); + if (targetm.scalar_mode_supported_p (TYPE_MODE (int128_integer_type_node))) + { + record_builtin_type (RID_INT128, "__int128", + int128_integer_type_node); + record_builtin_type (RID_MAX, "__int128 unsigned", + int128_unsigned_type_node); + } if (c_dialect_cxx ()) record_builtin_type (RID_MAX, "unsigned long", long_unsigned_type_node); record_builtin_type (RID_MAX, "long long int", @@ -4689,8 +4717,10 @@ c_common_nodes_and_builtins (void) record_builtin_type (RID_MAX, "long long unsigned int", long_long_unsigned_type_node); if (c_dialect_cxx ()) - record_builtin_type (RID_MAX, "long long unsigned", - long_long_unsigned_type_node); + { + record_builtin_type (RID_MAX, "long long unsigned", + long_long_unsigned_type_node); + } record_builtin_type (RID_SHORT, "short int", short_integer_type_node); record_builtin_type (RID_MAX, "short unsigned int", short_unsigned_type_node); @@ -4851,6 +4881,10 @@ c_common_nodes_and_builtins (void) complex_integer_type_node)); lang_hooks.decls.pushdecl (build_decl (UNKNOWN_LOCATION, TYPE_DECL, + get_identifier ("complex __int128"), + complex_int128_type_node)); + lang_hooks.decls.pushdecl (build_decl (UNKNOWN_LOCATION, + TYPE_DECL, get_identifier ("complex float"), complex_float_type_node)); lang_hooks.decls.pushdecl (build_decl (UNKNOWN_LOCATION, Index: gcc/gcc/c-common.h =================================================================== --- gcc.orig/gcc/c-common.h 2010-04-08 11:38:54.337092000 +0200 +++ gcc/gcc/c-common.h 2010-04-08 11:45:25.504967600 +0200 @@ -69,6 +69,7 @@ enum rid /* C */ RID_INT, RID_CHAR, RID_FLOAT, RID_DOUBLE, RID_VOID, + RID_INT128, RID_ENUM, RID_STRUCT, RID_UNION, RID_IF, RID_ELSE, RID_WHILE, RID_DO, RID_FOR, RID_SWITCH, RID_CASE, RID_DEFAULT, RID_BREAK, RID_CONTINUE, RID_RETURN, RID_GOTO, Index: gcc/gcc/c-cppbuiltin.c =================================================================== --- gcc.orig/gcc/c-cppbuiltin.c 2010-04-08 11:38:54.339092000 +0200 +++ gcc/gcc/c-cppbuiltin.c 2010-04-08 11:45:25.520592600 +0200 @@ -802,6 +802,9 @@ c_cpp_builtins (cpp_reader *pfile) builtin_define_type_sizeof ("__SIZEOF_LONG__", long_integer_type_node); builtin_define_type_sizeof ("__SIZEOF_LONG_LONG__", long_long_integer_type_node); + if (targetm.scalar_mode_supported_p (TYPE_MODE (int128_integer_type_node))) + builtin_define_type_sizeof ("__SIZEOF_INT128__", + int128_integer_type_node); builtin_define_type_sizeof ("__SIZEOF_SHORT__", short_integer_type_node); builtin_define_type_sizeof ("__SIZEOF_FLOAT__", float_type_node); builtin_define_type_sizeof ("__SIZEOF_DOUBLE__", double_type_node); @@ -972,11 +975,13 @@ builtin_define_with_hex_fp_value (const static const char * type_suffix (tree type) { - static const char *const suffixes[] = { "", "U", "L", "UL", "LL", "ULL" }; + static const char *const suffixes[] = { "", "U", "L", "UL", "LL", "ULL", "I128", "UI128" }; int unsigned_suffix; int is_long; - if (type == long_long_integer_type_node + if (type == int128_integer_type_node || type == int128_unsigned_type_node) + is_long = 3; + else if (type == long_long_integer_type_node || type == long_long_unsigned_type_node) is_long = 2; else if (type == long_integer_type_node Index: gcc/gcc/c-decl.c =================================================================== --- gcc.orig/gcc/c-decl.c 2010-04-08 11:42:03.129967600 +0200 +++ gcc/gcc/c-decl.c 2010-04-08 11:45:25.520592600 +0200 @@ -8551,6 +8551,13 @@ declspecs_add_type (location_t loc, stru switch (i) { case RID_LONG: + if (specs->typespec_word == cts_int128) + { + error_at (loc, + ("both % and %<__int128%> in " + "declaration specifiers")); + break; + } if (specs->long_long_p) { error_at (loc, "% is too long for GCC"); @@ -8607,7 +8614,13 @@ declspecs_add_type (location_t loc, stru break; case RID_SHORT: dupe = specs->short_p; - if (specs->long_p) + if (specs->typespec_word == cts_int128) + { + error_at (loc, + ("both % and %<__int128%> in " + "declaration specifiers")); + } + else if (specs->long_p) error_at (loc, ("both % and % in " "declaration specifiers")); @@ -8725,6 +8738,7 @@ declspecs_add_type (location_t loc, stru if (!flag_isoc99 && !in_system_header) pedwarn (loc, OPT_pedantic, "ISO C90 does not support complex types"); + if (specs->typespec_word == cts_void) error_at (loc, ("both % and % in " @@ -8764,7 +8778,13 @@ declspecs_add_type (location_t loc, stru dupe = specs->saturating_p; pedwarn (loc, OPT_pedantic, "ISO C does not support saturating types"); - if (specs->typespec_word == cts_void) + if (specs->typespec_word == cts_int128) + { + error_at (loc, + ("both %<_Sat%> and %<__int128%> in " + "declaration specifiers")); + } + else if (specs->typespec_word == cts_void) error_at (loc, ("both %<_Sat%> and % in " "declaration specifiers")); @@ -8819,7 +8839,7 @@ declspecs_add_type (location_t loc, stru else { /* "void", "_Bool", "char", "int", "float", "double", "_Decimal32", - "_Decimal64", "_Decimal128", "_Fract" or "_Accum". */ + "__int128", "_Decimal64", "_Decimal128", "_Fract" or "_Accum". */ if (specs->typespec_word != cts_none) { error_at (loc, @@ -8828,6 +8848,67 @@ declspecs_add_type (location_t loc, stru } switch (i) { + case RID_INT128: + if (!targetm.scalar_mode_supported_p (TYPE_MODE (int128_integer_type_node))) + { + error_at (loc, "%<__int128%> is not supported for this target"); + return specs; + } + if (!in_system_header) + pedwarn (loc, OPT_pedantic, + "ISO C does not support %<__int128%> type"); + + if (specs->long_long_p) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->long_p) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->short_p) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_void) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_char) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_float) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_dfloat32) + error_at (loc, + ("both %<__int128%> and %<_Decimal32%> in " + "declaration specifiers")); + else if (specs->typespec_word == cts_void) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_dfloat64) + error_at (loc, + ("both %<__int128%> and %<_Decimal64%> in " + "declaration specifiers")); + else if (specs->typespec_word == cts_dfloat128) + error_at (loc, + ("both %<__int128%> and %<_Decimal128%> in " + "declaration specifiers")); + else if (specs->typespec_word == cts_bool) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else if (specs->typespec_word == cts_double) + error_at (loc, + ("both %<__int128%> and % in " + "declaration specifiers")); + else + specs->typespec_word = cts_int128; + return specs; case RID_VOID: if (specs->long_p) error_at (loc, @@ -8972,7 +9053,7 @@ declspecs_add_type (location_t loc, stru ("both % and %<%s%> in " "declaration specifiers"), str); - if (specs->long_p) + else if (specs->long_p) error_at (loc, ("both % and %<%s%> in " "declaration specifiers"), @@ -9024,7 +9105,7 @@ declspecs_add_type (location_t loc, stru str = "_Fract"; else str = "_Accum"; - if (specs->complex_p) + if (specs->complex_p) error_at (loc, ("both % and %<%s%> in " "declaration specifiers"), @@ -9300,10 +9381,17 @@ finish_declspecs (struct c_declspecs *sp specs->type = build_complex_type (specs->type); } break; + case cts_int128: + gcc_assert (!specs->long_p && !specs->short_p && !specs->long_long_p); + /* Fall through. */ case cts_int: gcc_assert (!(specs->long_p && specs->short_p)); gcc_assert (!(specs->signed_p && specs->unsigned_p)); - if (specs->long_long_p) + if (specs->typespec_word == cts_int128) + specs->type = (specs->unsigned_p + ? int128_unsigned_type_node + : int128_integer_type_node); + else if (specs->long_long_p) specs->type = (specs->unsigned_p ? long_long_unsigned_type_node : long_long_integer_type_node); Index: gcc/gcc/c-parser.c =================================================================== --- gcc.orig/gcc/c-parser.c 2010-04-08 11:42:03.270592600 +0200 +++ gcc/gcc/c-parser.c 2010-04-08 11:45:25.536217600 +0200 @@ -380,6 +380,7 @@ c_token_starts_typename (c_token *token) { case RID_UNSIGNED: case RID_LONG: + case RID_INT128: case RID_SHORT: case RID_SIGNED: case RID_COMPLEX: @@ -459,6 +460,7 @@ c_token_starts_declspecs (c_token *token case RID_THREAD: case RID_UNSIGNED: case RID_LONG: + case RID_INT128: case RID_SHORT: case RID_SIGNED: case RID_COMPLEX: @@ -1448,6 +1450,7 @@ c_parser_asm_definition (c_parser *parse type-specifier: typeof-specifier + __int128 _Decimal32 _Decimal64 _Decimal128 @@ -1565,6 +1568,7 @@ c_parser_declspecs (c_parser *parser, st break; case RID_UNSIGNED: case RID_LONG: + case RID_INT128: case RID_SHORT: case RID_SIGNED: case RID_COMPLEX: @@ -2871,6 +2875,7 @@ c_parser_attributes (c_parser *parser) case RID_STATIC: case RID_UNSIGNED: case RID_LONG: + case RID_INT128: case RID_CONST: case RID_EXTERN: case RID_REGISTER: @@ -6835,6 +6840,7 @@ c_parser_objc_selector (c_parser *parser case RID_ALIGNOF: case RID_UNSIGNED: case RID_LONG: + case RID_INT128: case RID_CONST: case RID_SHORT: case RID_VOLATILE: Index: gcc/gcc/c-pretty-print.c =================================================================== --- gcc.orig/gcc/c-pretty-print.c 2010-04-08 11:38:54.344092000 +0200 +++ gcc/gcc/c-pretty-print.c 2010-04-08 11:45:25.536217600 +0200 @@ -864,6 +864,9 @@ pp_c_integer_constant (c_pretty_printer else if (type == long_long_integer_type_node || type == long_long_unsigned_type_node) pp_string (pp, "ll"); + else if (type == int128_integer_type_node + || type == int128_unsigned_type_node) + pp_string (pp, "I128"); } /* Print out a CHARACTER literal. */ Index: gcc/gcc/c-tree.h =================================================================== --- gcc.orig/gcc/c-tree.h 2010-04-08 11:42:03.083092600 +0200 +++ gcc/gcc/c-tree.h 2010-04-08 11:45:25.536217600 +0200 @@ -196,6 +196,7 @@ enum c_typespec_keyword { cts_char, cts_int, cts_float, + cts_int128, cts_double, cts_dfloat32, cts_dfloat64, Index: gcc/gcc/cp/cp-tree.h =================================================================== --- gcc.orig/gcc/cp/cp-tree.h 2010-04-08 11:42:00.614342600 +0200 +++ gcc/gcc/cp/cp-tree.h 2010-04-08 11:45:25.536217600 +0200 @@ -4395,6 +4395,8 @@ typedef struct cp_decl_specifier_seq { BOOL_BITFIELD any_type_specifiers_p : 1; /* True iff "int" was explicitly provided. */ BOOL_BITFIELD explicit_int_p : 1; + /* True iff "__int128" was explicitly provided. */ + BOOL_BITFIELD explicit_int128_p : 1; /* True iff "char" was explicitly provided. */ BOOL_BITFIELD explicit_char_p : 1; } cp_decl_specifier_seq; Index: gcc/gcc/cp/decl.c =================================================================== --- gcc.orig/gcc/cp/decl.c 2010-04-08 11:42:00.520592600 +0200 +++ gcc/gcc/cp/decl.c 2010-04-08 11:45:25.551842600 +0200 @@ -7648,6 +7648,7 @@ grokdeclarator (const cp_declarator *dec { tree type = NULL_TREE; int longlong = 0; + int explicit_int128 = 0; int virtualp, explicitp, friendp, inlinep, staticp; int explicit_int = 0; int explicit_char = 0; @@ -7711,6 +7712,7 @@ grokdeclarator (const cp_declarator *dec short_p = declspecs->specs[(int)ds_short]; long_p = declspecs->specs[(int)ds_long]; longlong = declspecs->specs[(int)ds_long] >= 2; + explicit_int128 = declspecs->explicit_int128_p; thread_p = declspecs->specs[(int)ds_thread]; if (decl_context == FUNCDEF) @@ -8020,7 +8022,8 @@ grokdeclarator (const cp_declarator *dec and check for invalid combinations. */ /* Long double is a special combination. */ - if (long_p && !longlong && TYPE_MAIN_VARIANT (type) == double_type_node) + if (long_p && !longlong && !explicit_int128 + && TYPE_MAIN_VARIANT (type) == double_type_node) { long_p = false; type = build_qualified_type (long_double_type_node, @@ -8039,12 +8042,16 @@ grokdeclarator (const cp_declarator *dec error ("% and % specified together for %qs", name); else if (longlong && TREE_CODE (type) != INTEGER_TYPE) error ("% invalid for %qs", name); + else if (explicit_int128 && TREE_CODE (type) != INTEGER_TYPE) + error ("%<__int128%> invalid for %qs", name); else if (long_p && TREE_CODE (type) == REAL_TYPE) error ("% invalid for %qs", name); else if (short_p && TREE_CODE (type) == REAL_TYPE) error ("% invalid for %qs", name); else if ((long_p || short_p) && TREE_CODE (type) != INTEGER_TYPE) error ("% or % invalid for %qs", name); + else if ((long_p || short_p || explicit_char || explicit_int) && explicit_int128) + error ("%, %, %, or % invalid for %qs", name); else if ((long_p || short_p) && explicit_char) error ("% or % specified with char for %qs", name); else if (long_p && short_p) @@ -8059,14 +8066,30 @@ grokdeclarator (const cp_declarator *dec else { ok = 1; - if (!explicit_int && !defaulted_int && !explicit_char && pedantic) + if (!explicit_int && !defaulted_int && !explicit_char && !explicit_int128 && pedantic) { pedwarn (input_location, OPT_pedantic, - "long, short, signed or unsigned used invalidly for %qs", + "__int128, long, short, signed or unsigned used invalidly for %qs", name); if (flag_pedantic_errors) ok = 0; } + if (explicit_int128) + { + if (! targetm.scalar_mode_supported_p (TYPE_MODE (int128_integer_type_node))) + { + error ("%<__int128%> is not supported by this target"); + ok = 0; + } + else if (pedantic) + { + pedwarn (input_location, OPT_pedantic, + "ISO C++ does not support %<__int128%> for %qs", + name); + if (flag_pedantic_errors) + ok = 0; + } + } } /* Discard the type modifiers if they are invalid. */ @@ -8077,6 +8100,7 @@ grokdeclarator (const cp_declarator *dec long_p = false; short_p = false; longlong = 0; + explicit_int128 = false; } } @@ -8101,7 +8125,9 @@ grokdeclarator (const cp_declarator *dec && TREE_CODE (type) == INTEGER_TYPE && !same_type_p (TYPE_MAIN_VARIANT (type), wchar_type_node))) { - if (longlong) + if (explicit_int128) + type = int128_unsigned_type_node; + else if (longlong) type = long_long_unsigned_type_node; else if (long_p) type = long_unsigned_type_node; @@ -8116,6 +8142,8 @@ grokdeclarator (const cp_declarator *dec } else if (signed_p && type == char_type_node) type = signed_char_type_node; + else if (explicit_int128) + type = int128_integer_type_node; else if (longlong) type = long_long_integer_type_node; else if (long_p) @@ -8131,10 +8159,11 @@ grokdeclarator (const cp_declarator *dec "complex double", but if any modifiers at all are specified it is the complex form of TYPE. E.g, "complex short" is "complex short int". */ - - else if (defaulted_int && ! longlong + else if (defaulted_int && ! longlong && ! explicit_int128 && ! (long_p || short_p || signed_p || unsigned_p)) type = complex_double_type_node; + else if (type == int128_integer_type_node) + type = complex_int128_type_node; else if (type == integer_type_node) type = complex_integer_type_node; else if (type == float_type_node) Index: gcc/gcc/cp/parser.c =================================================================== --- gcc.orig/gcc/cp/parser.c 2010-04-08 11:38:54.350092000 +0200 +++ gcc/gcc/cp/parser.c 2010-04-08 11:45:25.567467600 +0200 @@ -562,6 +562,7 @@ cp_lexer_next_token_is_decl_specifier_ke case RID_SHORT: case RID_INT: case RID_LONG: + case RID_INT128: case RID_SIGNED: case RID_UNSIGNED: case RID_FLOAT: @@ -11892,6 +11893,7 @@ cp_parser_type_specifier (cp_parser* par GNU Extension: simple-type-specifier: + __int128 __typeof__ unary-expression __typeof__ ( type-id ) @@ -11939,6 +11941,11 @@ cp_parser_simple_type_specifier (cp_pars decl_specs->explicit_int_p = true; type = integer_type_node; break; + case RID_INT128: + if (decl_specs) + decl_specs->explicit_int128_p = true; + type = int128_integer_type_node; + break; case RID_LONG: if (decl_specs) ++decl_specs->specs[(int) ds_long]; Index: gcc/gcc/cp/rtti.c =================================================================== --- gcc.orig/gcc/cp/rtti.c 2010-04-08 11:38:54.352092000 +0200 +++ gcc/gcc/cp/rtti.c 2010-04-08 11:45:25.583092600 +0200 @@ -1450,6 +1450,7 @@ emit_support_tinfos (void) &integer_type_node, &unsigned_type_node, &long_integer_type_node, &long_unsigned_type_node, &long_long_integer_type_node, &long_long_unsigned_type_node, + &int128_integer_type_node, &int128_unsigned_type_node, &float_type_node, &double_type_node, &long_double_type_node, &dfloat32_type_node, &dfloat64_type_node, &dfloat128_type_node, 0 Index: gcc/gcc/cp/typeck.c =================================================================== --- gcc.orig/gcc/cp/typeck.c 2010-04-08 11:42:00.504967600 +0200 +++ gcc/gcc/cp/typeck.c 2010-04-08 11:45:25.583092600 +0200 @@ -352,6 +352,14 @@ cp_common_type (tree t1, tree t2) : long_long_integer_type_node); return build_type_attribute_variant (t, attributes); } + if (same_type_p (TYPE_MAIN_VARIANT (t1), int128_integer_type_node) + || same_type_p (TYPE_MAIN_VARIANT (t2), int128_integer_type_node)) + { + tree t = ((TYPE_UNSIGNED (t1) || TYPE_UNSIGNED (t2)) + ? int128_unsigned_type_node + : int128_integer_type_node); + return build_type_attribute_variant (t, attributes); + } /* Go through the same procedure, but for longs. */ if (same_type_p (TYPE_MAIN_VARIANT (t1), long_unsigned_type_node) Index: gcc/gcc/defaults.h =================================================================== --- gcc.orig/gcc/defaults.h 2010-04-08 11:38:54.357092000 +0200 +++ gcc/gcc/defaults.h 2010-04-08 11:45:25.583092600 +0200 @@ -446,6 +446,10 @@ see the files COPYING3 and COPYING.RUNTI #define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2) #endif +#ifndef INT128_TYPE_SIZE +#define INT128_TYPE_SIZE 128 +#endif + #ifndef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE INT_TYPE_SIZE #endif Index: gcc/gcc/doc/extend.texi =================================================================== --- gcc.orig/gcc/doc/extend.texi 2010-04-08 11:38:54.358092000 +0200 +++ gcc/gcc/doc/extend.texi 2010-04-08 11:45:25.598717600 +0200 @@ -33,6 +33,7 @@ extensions, accepted by GCC in C90 mode * Typeof:: @code{typeof}: referring to the type of an expression. * Conditionals:: Omitting the middle operand of a @samp{?:} expression. * Long Long:: Double-word integers---@code{long long int}. +* __int128:: 128-bit integers---@code{__int128}. * Complex:: Data types for complex numbers. * Floating Types:: Additional Floating Types. * Half-Precision:: Half-Precision Floating Point. @@ -804,6 +805,17 @@ the operand in the middle would perform the middle operand uses the value already computed without the undesirable effects of recomputing it. +@node __int128 +@section 128-bits integers +@cindex @code{__int128} data types + +As extension the integer scalar type @code{__int128} is supported for +targets with have an integer mode wide enough to hold 128-bit. +Simply write @code{__int128} for a signed 128-bit integer, or +@code{unsigned __int128} for an unsigned 128-bit integer. There is no +support in gcc to express an integer constant of type @code{__int128} +for targets having @code{long long} integer with less then 128 bit width. + @node Long Long @section Double-Word Integers @cindex @code{long long} data types Index: gcc/gcc/doc/tm.texi =================================================================== --- gcc.orig/gcc/doc/tm.texi 2010-04-08 11:38:54.360092000 +0200 +++ gcc/gcc/doc/tm.texi 2010-04-08 11:45:25.614342600 +0200 @@ -1574,6 +1574,13 @@ words. If you want to support GNU Ada o macro must be at least 64. @end defmac +@defmac INT128_TYPE_SIZE +A C expression for the size in bits of the type @code{__int128} on the +target machine. If you don't define this, the default is 128 bits. +The @code{__int128} type is supported, if the target has an mode +wide enough to hold an 128-bit integer scalar. +@end defmac + @defmac CHAR_TYPE_SIZE A C expression for the size in bits of the type @code{char} on the target machine. If you don't define this, the default is Index: gcc/gcc/gimple.c =================================================================== --- gcc.orig/gcc/gimple.c 2010-04-08 11:42:03.239342600 +0200 +++ gcc/gcc/gimple.c 2010-04-08 11:45:25.614342600 +0200 @@ -3966,6 +3966,10 @@ gimple_signed_or_unsigned_type (bool uns return unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node; + if (type1 == int128_integer_type_node || type1 == int128_unsigned_type_node) + return unsignedp + ? int128_unsigned_type_node + : int128_integer_type_node; #if HOST_BITS_PER_WIDE_INT >= 64 if (type1 == intTI_type_node || type1 == unsigned_intTI_type_node) return unsignedp ? unsigned_intTI_type_node : intTI_type_node; @@ -4078,6 +4082,10 @@ gimple_signed_or_unsigned_type (bool uns return (unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node); + if (TYPE_OK (int128_integer_type_node)) + return (unsignedp + ? int128_unsigned_type_node + : int128_integer_type_node); #if HOST_BITS_PER_WIDE_INT >= 64 if (TYPE_OK (intTI_type_node)) Index: gcc/gcc/testsuite/c-c++-common/int128-types-1.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gcc/gcc/testsuite/c-c++-common/int128-types-1.c 2010-04-08 11:45:25.629967600 +0200 @@ -0,0 +1,665 @@ +/* Test for valid and invalid combinations of type specifiers using __int128. + */ +/* Origin: Kai Tietz */ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-std=gnu" } */ + +typedef char type; +__int128 *x0; +void __int128 *x1; /* { dg-error "error" "void __int128" } */ +char __int128 *x2; /* { dg-error "error" "char __int128" } */ +short __int128 *x3; /* { dg-error "error" "short __int128" } */ +int __int128 *x4; /* { dg-error "error" "int __int128" } */ +__int128 void *x5; /* { dg-error "error" "__int128 void" } */ +__int128 char *x6; /* { dg-error "error" "__int128 char" } */ +__int128 short *x7; /* { dg-error "error" "__int128 short" } */ +__int128 int *x8; /* { dg-error "error" "__int128 int" } */ +__int128 __int128 *x9; /* { dg-error "error" "__int128 __int128" } */ +__int128 long *x10; /* { dg-error "error" "__int128 long" } */ +__int128 float *x11; /* { dg-error "error" "__int128 float" } */ +__int128 double *x12; /* { dg-error "error" "__int128 double" } */ +__int128 signed *x13; +__int128 unsigned *x14; +__int128 _Bool *x15; /* { dg-error "error" "__int128 _Bool" } */ +__int128 _Complex *x16; +long __int128 *x17; /* { dg-error "error" "long __int128" } */ +float __int128 *x18; /* { dg-error "error" "float __int128" } */ +double __int128 *x19; /* { dg-error "error" "double __int128" } */ +signed __int128 *x20; +unsigned __int128 *x21; +_Bool __int128 *x22; /* { dg-error "error" "_Bool __int128" } */ +_Complex __int128 *x23; +type __int128 *x24; /* { dg-error "error" "type __int128" } */ +char signed __int128 *x25; /* { dg-error "error" "char signed __int128" } */ +char unsigned __int128 *x26; /* { dg-error "error" "char unsigned __int128" } */ +char _Complex __int128 *x27; /* { dg-error "error" "char _Complex __int128" } */ +short int __int128 *x28; /* { dg-error "error" "short int __int128" } */ +short signed __int128 *x29; /* { dg-error "error" "short signed __int128" } */ +short unsigned __int128 *x30; /* { dg-error "error" "short unsigned __int128" } */ +short _Complex __int128 *x31; /* { dg-error "error" "short _Complex __int128" } */ +int short __int128 *x32; /* { dg-error "error" "int short __int128" } */ +int long __int128 *x33; /* { dg-error "error" "int long __int128" } */ +int signed __int128 *x34; /* { dg-error "error" "int signed __int128" } */ +int unsigned __int128 *x35; /* { dg-error "error" "int unsigned __int128" } */ +int _Complex __int128 *x36; /* { dg-error "error" "int _Complex __int128" } */ +__int128 signed void *x37; /* { dg-error "error" "__int128 signed void" } */ +__int128 signed char *x38; /* { dg-error "error" "__int128 signed char" } */ +__int128 signed short *x39; /* { dg-error "error" "__int128 signed short" } */ +__int128 signed int *x40; /* { dg-error "error" "__int128 signed int" } */ +__int128 signed __int128 *x41; /* { dg-error "error" "__int128 signed __int128" } */ +__int128 signed long *x42; /* { dg-error "error" "__int128 signed long" } */ +__int128 signed float *x43; /* { dg-error "error" "__int128 signed float" } */ +__int128 signed double *x44; /* { dg-error "error" "__int128 signed double" } */ +__int128 signed signed *x45; /* { dg-error "error" "__int128 signed signed" } */ +__int128 signed unsigned *x46; /* { dg-error "error" "__int128 signed unsigned" } */ +__int128 signed _Bool *x47; /* { dg-error "error" "__int128 signed _Bool" } */ +__int128 signed _Complex *x48; +__int128 unsigned void *x49; /* { dg-error "error" "__int128 unsigned void" } */ +__int128 unsigned char *x50; /* { dg-error "error" "__int128 unsigned char" } */ +__int128 unsigned short *x51; /* { dg-error "error" "__int128 unsigned short" } */ +__int128 unsigned int *x52; /* { dg-error "error" "__int128 unsigned int" } */ +__int128 unsigned __int128 *x53; /* { dg-error "error" "__int128 unsigned __int128" } */ +__int128 unsigned long *x54; /* { dg-error "error" "__int128 unsigned long" } */ +__int128 unsigned float *x55; /* { dg-error "error" "__int128 unsigned float" } */ +__int128 unsigned double *x56; /* { dg-error "error" "__int128 unsigned double" } */ +__int128 unsigned signed *x57; /* { dg-error "error" "__int128 unsigned signed" } */ +__int128 unsigned unsigned *x58; /* { dg-error "error" "__int128 unsigned unsigned" } */ +__int128 unsigned _Bool *x59; /* { dg-error "error" "__int128 unsigned _Bool" } */ +__int128 unsigned _Complex *x60; +__int128 _Complex void *x61; /* { dg-error "error" "__int128 _Complex void" } */ +__int128 _Complex char *x62; /* { dg-error "error" "__int128 _Complex char" } */ +__int128 _Complex short *x63; /* { dg-error "error" "__int128 _Complex short" } */ +__int128 _Complex int *x64; /* { dg-error "error" "__int128 _Complex int" } */ +__int128 _Complex __int128 *x65; /* { dg-error "error" "__int128 _Complex __int128" } */ +__int128 _Complex long *x66; /* { dg-error "error" "__int128 _Complex long" } */ +__int128 _Complex float *x67; /* { dg-error "error" "__int128 _Complex float" } */ +__int128 _Complex double *x68; /* { dg-error "error" "__int128 _Complex double" } */ +__int128 _Complex signed *x69; +__int128 _Complex unsigned *x70; +__int128 _Complex _Bool *x71; /* { dg-error "error" "__int128 _Complex _Bool" } */ +__int128 _Complex _Complex *x72; /* { dg-error "error" "__int128 _Complex _Complex" } */ +long int __int128 *x73; /* { dg-error "error" "long int __int128" } */ +long long __int128 *x74; /* { dg-error "error" "long long __int128" } */ +long double __int128 *x75; /* { dg-error "error" "long double __int128" } */ +long signed __int128 *x76; /* { dg-error "error" "long signed __int128" } */ +long unsigned __int128 *x77; /* { dg-error "error" "long unsigned __int128" } */ +long _Complex __int128 *x78; /* { dg-error "error" "long _Complex __int128" } */ +float _Complex __int128 *x79; /* { dg-error "error" "float _Complex __int128" } */ +double long __int128 *x80; /* { dg-error "error" "double long __int128" } */ +double _Complex __int128 *x81; /* { dg-error "error" "double _Complex __int128" } */ +signed char __int128 *x82; /* { dg-error "error" "signed char __int128" } */ +signed short __int128 *x83; /* { dg-error "error" "signed short __int128" } */ +signed int __int128 *x84; /* { dg-error "error" "signed int __int128" } */ +signed __int128 void *x85; /* { dg-error "error" "signed __int128 void" } */ +signed __int128 char *x86; /* { dg-error "error" "signed __int128 char" } */ +signed __int128 short *x87; /* { dg-error "error" "signed __int128 short" } */ +signed __int128 int *x88; /* { dg-error "error" "signed __int128 int" } */ +signed __int128 __int128 *x89; /* { dg-error "error" "signed __int128 __int128" } */ +signed __int128 long *x90; /* { dg-error "error" "signed __int128 long" } */ +signed __int128 float *x91; /* { dg-error "error" "signed __int128 float" } */ +signed __int128 double *x92; /* { dg-error "error" "signed __int128 double" } */ +signed __int128 signed *x93; /* { dg-error "error" "signed __int128 signed" } */ +signed __int128 unsigned *x94; /* { dg-error "error" "signed __int128 unsigned" } */ +signed __int128 _Bool *x95; /* { dg-error "error" "signed __int128 _Bool" } */ +signed __int128 _Complex *x96; +signed long __int128 *x97; /* { dg-error "error" "signed long __int128" } */ +signed _Complex __int128 *x98; +unsigned char __int128 *x99; /* { dg-error "error" "unsigned char __int128" } */ +unsigned short __int128 *x100; /* { dg-error "error" "unsigned short __int128" } */ +unsigned int __int128 *x101; /* { dg-error "error" "unsigned int __int128" } */ +unsigned __int128 void *x102; /* { dg-error "error" "unsigned __int128 void" } */ +unsigned __int128 char *x103; /* { dg-error "error" "unsigned __int128 char" } */ +unsigned __int128 short *x104; /* { dg-error "error" "unsigned __int128 short" } */ +unsigned __int128 int *x105; /* { dg-error "error" "unsigned __int128 int" } */ +unsigned __int128 __int128 *x106; /* { dg-error "error" "unsigned __int128 __int128" } */ +unsigned __int128 long *x107; /* { dg-error "error" "unsigned __int128 long" } */ +unsigned __int128 float *x108; /* { dg-error "error" "unsigned __int128 float" } */ +unsigned __int128 double *x109; /* { dg-error "error" "unsigned __int128 double" } */ +unsigned __int128 signed *x110; /* { dg-error "error" "unsigned __int128 signed" } */ +unsigned __int128 unsigned *x111; /* { dg-error "error" "unsigned __int128 unsigned" } */ +unsigned __int128 _Bool *x112; /* { dg-error "error" "unsigned __int128 _Bool" } */ +unsigned __int128 _Complex *x113; +unsigned long __int128 *x114; /* { dg-error "error" "unsigned long __int128" } */ +unsigned _Complex __int128 *x115; +_Complex char __int128 *x116; /* { dg-error "error" "_Complex char __int128" } */ +_Complex short __int128 *x117; /* { dg-error "error" "_Complex short __int128" } */ +_Complex int __int128 *x118; /* { dg-error "error" "_Complex int __int128" } */ +_Complex __int128 void *x119; /* { dg-error "error" "_Complex __int128 void" } */ +_Complex __int128 char *x120; /* { dg-error "error" "_Complex __int128 char" } */ +_Complex __int128 short *x121; /* { dg-error "error" "_Complex __int128 short" } */ +_Complex __int128 int *x122; /* { dg-error "error" "_Complex __int128 int" } */ +_Complex __int128 __int128 *x123; /* { dg-error "error" "_Complex __int128 __int128" } */ +_Complex __int128 long *x124; /* { dg-error "error" "_Complex __int128 long" } */ +_Complex __int128 float *x125; /* { dg-error "error" "_Complex __int128 float" } */ +_Complex __int128 double *x126; /* { dg-error "error" "_Complex __int128 double" } */ +_Complex __int128 signed *x127; +_Complex __int128 unsigned *x128; +_Complex __int128 _Bool *x129; /* { dg-error "error" "_Complex __int128 _Bool" } */ +_Complex __int128 _Complex *x130; /* { dg-error "error" "_Complex __int128 _Complex" } */ +_Complex long __int128 *x131; /* { dg-error "error" "_Complex long __int128" } */ +_Complex float __int128 *x132; /* { dg-error "error" "_Complex float __int128" } */ +_Complex double __int128 *x133; /* { dg-error "error" "_Complex double __int128" } */ +_Complex signed __int128 *x134; +_Complex unsigned __int128 *x135; +char signed _Complex __int128 *x136; /* { dg-error "error" "char signed _Complex __int128" } */ +char unsigned _Complex __int128 *x137; /* { dg-error "error" "char unsigned _Complex __int128" } */ +char _Complex signed __int128 *x138; /* { dg-error "error" "char _Complex signed __int128" } */ +char _Complex unsigned __int128 *x139; /* { dg-error "error" "char _Complex unsigned __int128" } */ +short int signed __int128 *x140; /* { dg-error "error" "short int signed __int128" } */ +short int unsigned __int128 *x141; /* { dg-error "error" "short int unsigned __int128" } */ +short int _Complex __int128 *x142; /* { dg-error "error" "short int _Complex __int128" } */ +short signed int __int128 *x143; /* { dg-error "error" "short signed int __int128" } */ +short signed _Complex __int128 *x144; /* { dg-error "error" "short signed _Complex __int128" } */ +short unsigned int __int128 *x145; /* { dg-error "error" "short unsigned int __int128" } */ +short unsigned _Complex __int128 *x146; /* { dg-error "error" "short unsigned _Complex __int128" } */ +short _Complex int __int128 *x147; /* { dg-error "error" "short _Complex int __int128" } */ +short _Complex signed __int128 *x148; /* { dg-error "error" "short _Complex signed __int128" } */ +short _Complex unsigned __int128 *x149; /* { dg-error "error" "short _Complex unsigned __int128" } */ +int short signed __int128 *x150; /* { dg-error "error" "int short signed __int128" } */ +int short unsigned __int128 *x151; /* { dg-error "error" "int short unsigned __int128" } */ +int short _Complex __int128 *x152; /* { dg-error "error" "int short _Complex __int128" } */ +int long long __int128 *x153; /* { dg-error "error" "int long long __int128" } */ +int long signed __int128 *x154; /* { dg-error "error" "int long signed __int128" } */ +int long unsigned __int128 *x155; /* { dg-error "error" "int long unsigned __int128" } */ +int long _Complex __int128 *x156; /* { dg-error "error" "int long _Complex __int128" } */ +int signed short __int128 *x157; /* { dg-error "error" "int signed short __int128" } */ +int signed long __int128 *x158; /* { dg-error "error" "int signed long __int128" } */ +int signed _Complex __int128 *x159; /* { dg-error "error" "int signed _Complex __int128" } */ +int unsigned short __int128 *x160; /* { dg-error "error" "int unsigned short __int128" } */ +int unsigned long __int128 *x161; /* { dg-error "error" "int unsigned long __int128" } */ +int unsigned _Complex __int128 *x162; /* { dg-error "error" "int unsigned _Complex __int128" } */ +int _Complex short __int128 *x163; /* { dg-error "error" "int _Complex short __int128" } */ +int _Complex long __int128 *x164; /* { dg-error "error" "int _Complex long __int128" } */ +int _Complex signed __int128 *x165; /* { dg-error "error" "int _Complex signed __int128" } */ +int _Complex unsigned __int128 *x166; /* { dg-error "error" "int _Complex unsigned __int128" } */ +__int128 signed _Complex void *x167; /* { dg-error "error" "__int128 signed _Complex void" } */ +__int128 signed _Complex char *x168; /* { dg-error "error" "__int128 signed _Complex char" } */ +__int128 signed _Complex short *x169; /* { dg-error "error" "__int128 signed _Complex short" } */ +__int128 signed _Complex int *x170; /* { dg-error "error" "__int128 signed _Complex int" } */ +__int128 signed _Complex __int128 *x171; /* { dg-error "error" "__int128 signed _Complex __int128" } */ +__int128 signed _Complex long *x172; /* { dg-error "error" "__int128 signed _Complex long" } */ +__int128 signed _Complex float *x173; /* { dg-error "error" "__int128 signed _Complex float" } */ +__int128 signed _Complex double *x174; /* { dg-error "error" "__int128 signed _Complex double" } */ +__int128 signed _Complex signed *x175; /* { dg-error "error" "__int128 signed _Complex signed" } */ +__int128 signed _Complex unsigned *x176; /* { dg-error "error" "__int128 signed _Complex unsigned" } */ +__int128 signed _Complex _Bool *x177; /* { dg-error "error" "__int128 signed _Complex _Bool" } */ +__int128 signed _Complex _Complex *x178; /* { dg-error "error" "__int128 signed _Complex _Complex" } */ +__int128 unsigned _Complex void *x179; /* { dg-error "error" "__int128 unsigned _Complex void" } */ +__int128 unsigned _Complex char *x180; /* { dg-error "error" "__int128 unsigned _Complex char" } */ +__int128 unsigned _Complex short *x181; /* { dg-error "error" "__int128 unsigned _Complex short" } */ +__int128 unsigned _Complex int *x182; /* { dg-error "error" "__int128 unsigned _Complex int" } */ +__int128 unsigned _Complex __int128 *x183; /* { dg-error "error" "__int128 unsigned _Complex __int128" } */ +__int128 unsigned _Complex long *x184; /* { dg-error "error" "__int128 unsigned _Complex long" } */ +__int128 unsigned _Complex float *x185; /* { dg-error "error" "__int128 unsigned _Complex float" } */ +__int128 unsigned _Complex double *x186; /* { dg-error "error" "__int128 unsigned _Complex double" } */ +__int128 unsigned _Complex signed *x187; /* { dg-error "error" "__int128 unsigned _Complex signed" } */ +__int128 unsigned _Complex unsigned *x188; /* { dg-error "error" "__int128 unsigned _Complex unsigned" } */ +__int128 unsigned _Complex _Bool *x189; /* { dg-error "error" "__int128 unsigned _Complex _Bool" } */ +__int128 unsigned _Complex _Complex *x190; /* { dg-error "error" "__int128 unsigned _Complex _Complex" } */ +__int128 _Complex signed void *x191; /* { dg-error "error" "__int128 _Complex signed void" } */ +__int128 _Complex signed char *x192; /* { dg-error "error" "__int128 _Complex signed char" } */ +__int128 _Complex signed short *x193; /* { dg-error "error" "__int128 _Complex signed short" } */ +__int128 _Complex signed int *x194; /* { dg-error "error" "__int128 _Complex signed int" } */ +__int128 _Complex signed __int128 *x195; /* { dg-error "error" "__int128 _Complex signed __int128" } */ +__int128 _Complex signed long *x196; /* { dg-error "error" "__int128 _Complex signed long" } */ +__int128 _Complex signed float *x197; /* { dg-error "error" "__int128 _Complex signed float" } */ +__int128 _Complex signed double *x198; /* { dg-error "error" "__int128 _Complex signed double" } */ +__int128 _Complex signed signed *x199; /* { dg-error "error" "__int128 _Complex signed signed" } */ +__int128 _Complex signed unsigned *x200; /* { dg-error "error" "__int128 _Complex signed unsigned" } */ +__int128 _Complex signed _Bool *x201; /* { dg-error "error" "__int128 _Complex signed _Bool" } */ +__int128 _Complex signed _Complex *x202; /* { dg-error "error" "__int128 _Complex signed _Complex" } */ +__int128 _Complex unsigned void *x203; /* { dg-error "error" "__int128 _Complex unsigned void" } */ +__int128 _Complex unsigned char *x204; /* { dg-error "error" "__int128 _Complex unsigned char" } */ +__int128 _Complex unsigned short *x205; /* { dg-error "error" "__int128 _Complex unsigned short" } */ +__int128 _Complex unsigned int *x206; /* { dg-error "error" "__int128 _Complex unsigned int" } */ +__int128 _Complex unsigned __int128 *x207; /* { dg-error "error" "__int128 _Complex unsigned __int128" } */ +__int128 _Complex unsigned long *x208; /* { dg-error "error" "__int128 _Complex unsigned long" } */ +__int128 _Complex unsigned float *x209; /* { dg-error "error" "__int128 _Complex unsigned float" } */ +__int128 _Complex unsigned double *x210; /* { dg-error "error" "__int128 _Complex unsigned double" } */ +__int128 _Complex unsigned signed *x211; /* { dg-error "error" "__int128 _Complex unsigned signed" } */ +__int128 _Complex unsigned unsigned *x212; /* { dg-error "error" "__int128 _Complex unsigned unsigned" } */ +__int128 _Complex unsigned _Bool *x213; /* { dg-error "error" "__int128 _Complex unsigned _Bool" } */ +__int128 _Complex unsigned _Complex *x214; /* { dg-error "error" "__int128 _Complex unsigned _Complex" } */ +long int long __int128 *x215; /* { dg-error "error" "long int long __int128" } */ +long int signed __int128 *x216; /* { dg-error "error" "long int signed __int128" } */ +long int unsigned __int128 *x217; /* { dg-error "error" "long int unsigned __int128" } */ +long int _Complex __int128 *x218; /* { dg-error "error" "long int _Complex __int128" } */ +long long int __int128 *x219; /* { dg-error "error" "long long int __int128" } */ +long long signed __int128 *x220; /* { dg-error "error" "long long signed __int128" } */ +long long unsigned __int128 *x221; /* { dg-error "error" "long long unsigned __int128" } */ +long long _Complex __int128 *x222; /* { dg-error "error" "long long _Complex __int128" } */ +long double _Complex __int128 *x223; /* { dg-error "error" "long double _Complex __int128" } */ +long signed int __int128 *x224; /* { dg-error "error" "long signed int __int128" } */ +long signed long __int128 *x225; /* { dg-error "error" "long signed long __int128" } */ +long signed _Complex __int128 *x226; /* { dg-error "error" "long signed _Complex __int128" } */ +long unsigned int __int128 *x227; /* { dg-error "error" "long unsigned int __int128" } */ +long unsigned long __int128 *x228; /* { dg-error "error" "long unsigned long __int128" } */ +long unsigned _Complex __int128 *x229; /* { dg-error "error" "long unsigned _Complex __int128" } */ +long _Complex int __int128 *x230; /* { dg-error "error" "long _Complex int __int128" } */ +long _Complex long __int128 *x231; /* { dg-error "error" "long _Complex long __int128" } */ +long _Complex double __int128 *x232; /* { dg-error "error" "long _Complex double __int128" } */ +long _Complex signed __int128 *x233; /* { dg-error "error" "long _Complex signed __int128" } */ +long _Complex unsigned __int128 *x234; /* { dg-error "error" "long _Complex unsigned __int128" } */ +double long _Complex __int128 *x235; /* { dg-error "error" "double long _Complex __int128" } */ +double _Complex long __int128 *x236; /* { dg-error "error" "double _Complex long __int128" } */ +signed char _Complex __int128 *x237; /* { dg-error "error" "signed char _Complex __int128" } */ +signed short int __int128 *x238; /* { dg-error "error" "signed short int __int128" } */ +signed short _Complex __int128 *x239; /* { dg-error "error" "signed short _Complex __int128" } */ +signed int short __int128 *x240; /* { dg-error "error" "signed int short __int128" } */ +signed int long __int128 *x241; /* { dg-error "error" "signed int long __int128" } */ +signed int _Complex __int128 *x242; /* { dg-error "error" "signed int _Complex __int128" } */ +signed __int128 _Complex void *x243; /* { dg-error "error" "signed __int128 _Complex void" } */ +signed __int128 _Complex char *x244; /* { dg-error "error" "signed __int128 _Complex char" } */ +signed __int128 _Complex short *x245; /* { dg-error "error" "signed __int128 _Complex short" } */ +signed __int128 _Complex int *x246; /* { dg-error "error" "signed __int128 _Complex int" } */ +signed __int128 _Complex __int128 *x247; /* { dg-error "error" "signed __int128 _Complex __int128" } */ +signed __int128 _Complex long *x248; /* { dg-error "error" "signed __int128 _Complex long" } */ +signed __int128 _Complex float *x249; /* { dg-error "error" "signed __int128 _Complex float" } */ +signed __int128 _Complex double *x250; /* { dg-error "error" "signed __int128 _Complex double" } */ +signed __int128 _Complex signed *x251; /* { dg-error "error" "signed __int128 _Complex signed" } */ +signed __int128 _Complex unsigned *x252; /* { dg-error "error" "signed __int128 _Complex unsigned" } */ +signed __int128 _Complex _Bool *x253; /* { dg-error "error" "signed __int128 _Complex _Bool" } */ +signed __int128 _Complex _Complex *x254; /* { dg-error "error" "signed __int128 _Complex _Complex" } */ +signed long int __int128 *x255; /* { dg-error "error" "signed long int __int128" } */ +signed long long __int128 *x256; /* { dg-error "error" "signed long long __int128" } */ +signed long _Complex __int128 *x257; /* { dg-error "error" "signed long _Complex __int128" } */ +signed _Complex char __int128 *x258; /* { dg-error "error" "signed _Complex char __int128" } */ +signed _Complex short __int128 *x259; /* { dg-error "error" "signed _Complex short __int128" } */ +signed _Complex int __int128 *x260; /* { dg-error "error" "signed _Complex int __int128" } */ +signed _Complex __int128 void *x261; /* { dg-error "error" "signed _Complex __int128 void" } */ +signed _Complex __int128 char *x262; /* { dg-error "error" "signed _Complex __int128 char" } */ +signed _Complex __int128 short *x263; /* { dg-error "error" "signed _Complex __int128 short" } */ +signed _Complex __int128 int *x264; /* { dg-error "error" "signed _Complex __int128 int" } */ +signed _Complex __int128 __int128 *x265; /* { dg-error "error" "signed _Complex __int128 __int128" } */ +signed _Complex __int128 long *x266; /* { dg-error "error" "signed _Complex __int128 long" } */ +signed _Complex __int128 float *x267; /* { dg-error "error" "signed _Complex __int128 float" } */ +signed _Complex __int128 double *x268; /* { dg-error "error" "signed _Complex __int128 double" } */ +signed _Complex __int128 signed *x269; /* { dg-error "error" "signed _Complex __int128 signed" } */ +signed _Complex __int128 unsigned *x270; /* { dg-error "error" "signed _Complex __int128 unsigned" } */ +signed _Complex __int128 _Bool *x271; /* { dg-error "error" "signed _Complex __int128 _Bool" } */ +signed _Complex __int128 _Complex *x272; /* { dg-error "error" "signed _Complex __int128 _Complex" } */ +signed _Complex long __int128 *x273; /* { dg-error "error" "signed _Complex long __int128" } */ +unsigned char _Complex __int128 *x274; /* { dg-error "error" "unsigned char _Complex __int128" } */ +unsigned short int __int128 *x275; /* { dg-error "error" "unsigned short int __int128" } */ +unsigned short _Complex __int128 *x276; /* { dg-error "error" "unsigned short _Complex __int128" } */ +unsigned int short __int128 *x277; /* { dg-error "error" "unsigned int short __int128" } */ +unsigned int long __int128 *x278; /* { dg-error "error" "unsigned int long __int128" } */ +unsigned int _Complex __int128 *x279; /* { dg-error "error" "unsigned int _Complex __int128" } */ +unsigned __int128 _Complex void *x280; /* { dg-error "error" "unsigned __int128 _Complex void" } */ +unsigned __int128 _Complex char *x281; /* { dg-error "error" "unsigned __int128 _Complex char" } */ +unsigned __int128 _Complex short *x282; /* { dg-error "error" "unsigned __int128 _Complex short" } */ +unsigned __int128 _Complex int *x283; /* { dg-error "error" "unsigned __int128 _Complex int" } */ +unsigned __int128 _Complex __int128 *x284; /* { dg-error "error" "unsigned __int128 _Complex __int128" } */ +unsigned __int128 _Complex long *x285; /* { dg-error "error" "unsigned __int128 _Complex long" } */ +unsigned __int128 _Complex float *x286; /* { dg-error "error" "unsigned __int128 _Complex float" } */ +unsigned __int128 _Complex double *x287; /* { dg-error "error" "unsigned __int128 _Complex double" } */ +unsigned __int128 _Complex signed *x288; /* { dg-error "error" "unsigned __int128 _Complex signed" } */ +unsigned __int128 _Complex unsigned *x289; /* { dg-error "error" "unsigned __int128 _Complex unsigned" } */ +unsigned __int128 _Complex _Bool *x290; /* { dg-error "error" "unsigned __int128 _Complex _Bool" } */ +unsigned __int128 _Complex _Complex *x291; /* { dg-error "error" "unsigned __int128 _Complex _Complex" } */ +unsigned long int __int128 *x292; /* { dg-error "error" "unsigned long int __int128" } */ +unsigned long long __int128 *x293; /* { dg-error "error" "unsigned long long __int128" } */ +unsigned long _Complex __int128 *x294; /* { dg-error "error" "unsigned long _Complex __int128" } */ +unsigned _Complex char __int128 *x295; /* { dg-error "error" "unsigned _Complex char __int128" } */ +unsigned _Complex short __int128 *x296; /* { dg-error "error" "unsigned _Complex short __int128" } */ +unsigned _Complex int __int128 *x297; /* { dg-error "error" "unsigned _Complex int __int128" } */ +unsigned _Complex __int128 void *x298; /* { dg-error "error" "unsigned _Complex __int128 void" } */ +unsigned _Complex __int128 char *x299; /* { dg-error "error" "unsigned _Complex __int128 char" } */ +unsigned _Complex __int128 short *x300; /* { dg-error "error" "unsigned _Complex __int128 short" } */ +unsigned _Complex __int128 int *x301; /* { dg-error "error" "unsigned _Complex __int128 int" } */ +unsigned _Complex __int128 __int128 *x302; /* { dg-error "error" "unsigned _Complex __int128 __int128" } */ +unsigned _Complex __int128 long *x303; /* { dg-error "error" "unsigned _Complex __int128 long" } */ +unsigned _Complex __int128 float *x304; /* { dg-error "error" "unsigned _Complex __int128 float" } */ +unsigned _Complex __int128 double *x305; /* { dg-error "error" "unsigned _Complex __int128 double" } */ +unsigned _Complex __int128 signed *x306; /* { dg-error "error" "unsigned _Complex __int128 signed" } */ +unsigned _Complex __int128 unsigned *x307; /* { dg-error "error" "unsigned _Complex __int128 unsigned" } */ +unsigned _Complex __int128 _Bool *x308; /* { dg-error "error" "unsigned _Complex __int128 _Bool" } */ +unsigned _Complex __int128 _Complex *x309; /* { dg-error "error" "unsigned _Complex __int128 _Complex" } */ +unsigned _Complex long __int128 *x310; /* { dg-error "error" "unsigned _Complex long __int128" } */ +_Complex char signed __int128 *x311; /* { dg-error "error" "_Complex char signed __int128" } */ +_Complex char unsigned __int128 *x312; /* { dg-error "error" "_Complex char unsigned __int128" } */ +_Complex short int __int128 *x313; /* { dg-error "error" "_Complex short int __int128" } */ +_Complex short signed __int128 *x314; /* { dg-error "error" "_Complex short signed __int128" } */ +_Complex short unsigned __int128 *x315; /* { dg-error "error" "_Complex short unsigned __int128" } */ +_Complex int short __int128 *x316; /* { dg-error "error" "_Complex int short __int128" } */ +_Complex int long __int128 *x317; /* { dg-error "error" "_Complex int long __int128" } */ +_Complex int signed __int128 *x318; /* { dg-error "error" "_Complex int signed __int128" } */ +_Complex int unsigned __int128 *x319; /* { dg-error "error" "_Complex int unsigned __int128" } */ +_Complex __int128 signed void *x320; /* { dg-error "error" "_Complex __int128 signed void" } */ +_Complex __int128 signed char *x321; /* { dg-error "error" "_Complex __int128 signed char" } */ +_Complex __int128 signed short *x322; /* { dg-error "error" "_Complex __int128 signed short" } */ +_Complex __int128 signed int *x323; /* { dg-error "error" "_Complex __int128 signed int" } */ +_Complex __int128 signed __int128 *x324; /* { dg-error "error" "_Complex __int128 signed __int128" } */ +_Complex __int128 signed long *x325; /* { dg-error "error" "_Complex __int128 signed long" } */ +_Complex __int128 signed float *x326; /* { dg-error "error" "_Complex __int128 signed float" } */ +_Complex __int128 signed double *x327; /* { dg-error "error" "_Complex __int128 signed double" } */ +_Complex __int128 signed signed *x328; /* { dg-error "error" "_Complex __int128 signed signed" } */ +_Complex __int128 signed unsigned *x329; /* { dg-error "error" "_Complex __int128 signed unsigned" } */ +_Complex __int128 signed _Bool *x330; /* { dg-error "error" "_Complex __int128 signed _Bool" } */ +_Complex __int128 signed _Complex *x331; /* { dg-error "error" "_Complex __int128 signed _Complex" } */ +_Complex __int128 unsigned void *x332; /* { dg-error "error" "_Complex __int128 unsigned void" } */ +_Complex __int128 unsigned char *x333; /* { dg-error "error" "_Complex __int128 unsigned char" } */ +_Complex __int128 unsigned short *x334; /* { dg-error "error" "_Complex __int128 unsigned short" } */ +_Complex __int128 unsigned int *x335; /* { dg-error "error" "_Complex __int128 unsigned int" } */ +_Complex __int128 unsigned __int128 *x336; /* { dg-error "error" "_Complex __int128 unsigned __int128" } */ +_Complex __int128 unsigned long *x337; /* { dg-error "error" "_Complex __int128 unsigned long" } */ +_Complex __int128 unsigned float *x338; /* { dg-error "error" "_Complex __int128 unsigned float" } */ +_Complex __int128 unsigned double *x339; /* { dg-error "error" "_Complex __int128 unsigned double" } */ +_Complex __int128 unsigned signed *x340; /* { dg-error "error" "_Complex __int128 unsigned signed" } */ +_Complex __int128 unsigned unsigned *x341; /* { dg-error "error" "_Complex __int128 unsigned unsigned" } */ +_Complex __int128 unsigned _Bool *x342; /* { dg-error "error" "_Complex __int128 unsigned _Bool" } */ +_Complex __int128 unsigned _Complex *x343; /* { dg-error "error" "_Complex __int128 unsigned _Complex" } */ +_Complex long int __int128 *x344; /* { dg-error "error" "_Complex long int __int128" } */ +_Complex long long __int128 *x345; /* { dg-error "error" "_Complex long long __int128" } */ +_Complex long double __int128 *x346; /* { dg-error "error" "_Complex long double __int128" } */ +_Complex long signed __int128 *x347; /* { dg-error "error" "_Complex long signed __int128" } */ +_Complex long unsigned __int128 *x348; /* { dg-error "error" "_Complex long unsigned __int128" } */ +_Complex double long __int128 *x349; /* { dg-error "error" "_Complex double long __int128" } */ +_Complex signed char __int128 *x350; /* { dg-error "error" "_Complex signed char __int128" } */ +_Complex signed short __int128 *x351; /* { dg-error "error" "_Complex signed short __int128" } */ +_Complex signed int __int128 *x352; /* { dg-error "error" "_Complex signed int __int128" } */ +_Complex signed __int128 void *x353; /* { dg-error "error" "_Complex signed __int128 void" } */ +_Complex signed __int128 char *x354; /* { dg-error "error" "_Complex signed __int128 char" } */ +_Complex signed __int128 short *x355; /* { dg-error "error" "_Complex signed __int128 short" } */ +_Complex signed __int128 int *x356; /* { dg-error "error" "_Complex signed __int128 int" } */ +_Complex signed __int128 __int128 *x357; /* { dg-error "error" "_Complex signed __int128 __int128" } */ +_Complex signed __int128 long *x358; /* { dg-error "error" "_Complex signed __int128 long" } */ +_Complex signed __int128 float *x359; /* { dg-error "error" "_Complex signed __int128 float" } */ +_Complex signed __int128 double *x360; /* { dg-error "error" "_Complex signed __int128 double" } */ +_Complex signed __int128 signed *x361; /* { dg-error "error" "_Complex signed __int128 signed" } */ +_Complex signed __int128 unsigned *x362; /* { dg-error "error" "_Complex signed __int128 unsigned" } */ +_Complex signed __int128 _Bool *x363; /* { dg-error "error" "_Complex signed __int128 _Bool" } */ +_Complex signed __int128 _Complex *x364; /* { dg-error "error" "_Complex signed __int128 _Complex" } */ +_Complex signed long __int128 *x365; /* { dg-error "error" "_Complex signed long __int128" } */ +_Complex unsigned char __int128 *x366; /* { dg-error "error" "_Complex unsigned char __int128" } */ +_Complex unsigned short __int128 *x367; /* { dg-error "error" "_Complex unsigned short __int128" } */ +_Complex unsigned int __int128 *x368; /* { dg-error "error" "_Complex unsigned int __int128" } */ +_Complex unsigned __int128 void *x369; /* { dg-error "error" "_Complex unsigned __int128 void" } */ +_Complex unsigned __int128 char *x370; /* { dg-error "error" "_Complex unsigned __int128 char" } */ +_Complex unsigned __int128 short *x371; /* { dg-error "error" "_Complex unsigned __int128 short" } */ +_Complex unsigned __int128 int *x372; /* { dg-error "error" "_Complex unsigned __int128 int" } */ +_Complex unsigned __int128 __int128 *x373; /* { dg-error "error" "_Complex unsigned __int128 __int128" } */ +_Complex unsigned __int128 long *x374; /* { dg-error "error" "_Complex unsigned __int128 long" } */ +_Complex unsigned __int128 float *x375; /* { dg-error "error" "_Complex unsigned __int128 float" } */ +_Complex unsigned __int128 double *x376; /* { dg-error "error" "_Complex unsigned __int128 double" } */ +_Complex unsigned __int128 signed *x377; /* { dg-error "error" "_Complex unsigned __int128 signed" } */ +_Complex unsigned __int128 unsigned *x378; /* { dg-error "error" "_Complex unsigned __int128 unsigned" } */ +_Complex unsigned __int128 _Bool *x379; /* { dg-error "error" "_Complex unsigned __int128 _Bool" } */ +_Complex unsigned __int128 _Complex *x380; /* { dg-error "error" "_Complex unsigned __int128 _Complex" } */ +_Complex unsigned long __int128 *x381; /* { dg-error "error" "_Complex unsigned long __int128" } */ +short int signed _Complex __int128 *x382; /* { dg-error "error" "short int signed _Complex __int128" } */ +short int unsigned _Complex __int128 *x383; /* { dg-error "error" "short int unsigned _Complex __int128" } */ +short int _Complex signed __int128 *x384; /* { dg-error "error" "short int _Complex signed __int128" } */ +short int _Complex unsigned __int128 *x385; /* { dg-error "error" "short int _Complex unsigned __int128" } */ +short signed int _Complex __int128 *x386; /* { dg-error "error" "short signed int _Complex __int128" } */ +short signed _Complex int __int128 *x387; /* { dg-error "error" "short signed _Complex int __int128" } */ +short unsigned int _Complex __int128 *x388; /* { dg-error "error" "short unsigned int _Complex __int128" } */ +short unsigned _Complex int __int128 *x389; /* { dg-error "error" "short unsigned _Complex int __int128" } */ +short _Complex int signed __int128 *x390; /* { dg-error "error" "short _Complex int signed __int128" } */ +short _Complex int unsigned __int128 *x391; /* { dg-error "error" "short _Complex int unsigned __int128" } */ +short _Complex signed int __int128 *x392; /* { dg-error "error" "short _Complex signed int __int128" } */ +short _Complex unsigned int __int128 *x393; /* { dg-error "error" "short _Complex unsigned int __int128" } */ +int short signed _Complex __int128 *x394; /* { dg-error "error" "int short signed _Complex __int128" } */ +int short unsigned _Complex __int128 *x395; /* { dg-error "error" "int short unsigned _Complex __int128" } */ +int short _Complex signed __int128 *x396; /* { dg-error "error" "int short _Complex signed __int128" } */ +int short _Complex unsigned __int128 *x397; /* { dg-error "error" "int short _Complex unsigned __int128" } */ +int long long signed __int128 *x398; /* { dg-error "error" "int long long signed __int128" } */ +int long long unsigned __int128 *x399; /* { dg-error "error" "int long long unsigned __int128" } */ +int long long _Complex __int128 *x400; /* { dg-error "error" "int long long _Complex __int128" } */ +int long signed long __int128 *x401; /* { dg-error "error" "int long signed long __int128" } */ +int long signed _Complex __int128 *x402; /* { dg-error "error" "int long signed _Complex __int128" } */ +int long unsigned long __int128 *x403; /* { dg-error "error" "int long unsigned long __int128" } */ +int long unsigned _Complex __int128 *x404; /* { dg-error "error" "int long unsigned _Complex __int128" } */ +int long _Complex long __int128 *x405; /* { dg-error "error" "int long _Complex long __int128" } */ +int long _Complex signed __int128 *x406; /* { dg-error "error" "int long _Complex signed __int128" } */ +int long _Complex unsigned __int128 *x407; /* { dg-error "error" "int long _Complex unsigned __int128" } */ +int signed short _Complex __int128 *x408; /* { dg-error "error" "int signed short _Complex __int128" } */ +int signed long long __int128 *x409; /* { dg-error "error" "int signed long long __int128" } */ +int signed long _Complex __int128 *x410; /* { dg-error "error" "int signed long _Complex __int128" } */ +int signed _Complex short __int128 *x411; /* { dg-error "error" "int signed _Complex short __int128" } */ +int signed _Complex long __int128 *x412; /* { dg-error "error" "int signed _Complex long __int128" } */ +int unsigned short _Complex __int128 *x413; /* { dg-error "error" "int unsigned short _Complex __int128" } */ +int unsigned long long __int128 *x414; /* { dg-error "error" "int unsigned long long __int128" } */ +int unsigned long _Complex __int128 *x415; /* { dg-error "error" "int unsigned long _Complex __int128" } */ +int unsigned _Complex short __int128 *x416; /* { dg-error "error" "int unsigned _Complex short __int128" } */ +int unsigned _Complex long __int128 *x417; /* { dg-error "error" "int unsigned _Complex long __int128" } */ +int _Complex short signed __int128 *x418; /* { dg-error "error" "int _Complex short signed __int128" } */ +int _Complex short unsigned __int128 *x419; /* { dg-error "error" "int _Complex short unsigned __int128" } */ +int _Complex long long __int128 *x420; /* { dg-error "error" "int _Complex long long __int128" } */ +int _Complex long signed __int128 *x421; /* { dg-error "error" "int _Complex long signed __int128" } */ +int _Complex long unsigned __int128 *x422; /* { dg-error "error" "int _Complex long unsigned __int128" } */ +int _Complex signed short __int128 *x423; /* { dg-error "error" "int _Complex signed short __int128" } */ +int _Complex signed long __int128 *x424; /* { dg-error "error" "int _Complex signed long __int128" } */ +int _Complex unsigned short __int128 *x425; /* { dg-error "error" "int _Complex unsigned short __int128" } */ +int _Complex unsigned long __int128 *x426; /* { dg-error "error" "int _Complex unsigned long __int128" } */ +long int long signed __int128 *x427; /* { dg-error "error" "long int long signed __int128" } */ +long int long unsigned __int128 *x428; /* { dg-error "error" "long int long unsigned __int128" } */ +long int long _Complex __int128 *x429; /* { dg-error "error" "long int long _Complex __int128" } */ +long int signed long __int128 *x430; /* { dg-error "error" "long int signed long __int128" } */ +long int signed _Complex __int128 *x431; /* { dg-error "error" "long int signed _Complex __int128" } */ +long int unsigned long __int128 *x432; /* { dg-error "error" "long int unsigned long __int128" } */ +long int unsigned _Complex __int128 *x433; /* { dg-error "error" "long int unsigned _Complex __int128" } */ +long int _Complex long __int128 *x434; /* { dg-error "error" "long int _Complex long __int128" } */ +long int _Complex signed __int128 *x435; /* { dg-error "error" "long int _Complex signed __int128" } */ +long int _Complex unsigned __int128 *x436; /* { dg-error "error" "long int _Complex unsigned __int128" } */ +long long int signed __int128 *x437; /* { dg-error "error" "long long int signed __int128" } */ +long long int unsigned __int128 *x438; /* { dg-error "error" "long long int unsigned __int128" } */ +long long int _Complex __int128 *x439; /* { dg-error "error" "long long int _Complex __int128" } */ +long long signed int __int128 *x440; /* { dg-error "error" "long long signed int __int128" } */ +long long signed _Complex __int128 *x441; /* { dg-error "error" "long long signed _Complex __int128" } */ +long long unsigned int __int128 *x442; /* { dg-error "error" "long long unsigned int __int128" } */ +long long unsigned _Complex __int128 *x443; /* { dg-error "error" "long long unsigned _Complex __int128" } */ +long long _Complex int __int128 *x444; /* { dg-error "error" "long long _Complex int __int128" } */ +long long _Complex signed __int128 *x445; /* { dg-error "error" "long long _Complex signed __int128" } */ +long long _Complex unsigned __int128 *x446; /* { dg-error "error" "long long _Complex unsigned __int128" } */ +long signed int long __int128 *x447; /* { dg-error "error" "long signed int long __int128" } */ +long signed int _Complex __int128 *x448; /* { dg-error "error" "long signed int _Complex __int128" } */ +long signed long int __int128 *x449; /* { dg-error "error" "long signed long int __int128" } */ +long signed long _Complex __int128 *x450; /* { dg-error "error" "long signed long _Complex __int128" } */ +long signed _Complex int __int128 *x451; /* { dg-error "error" "long signed _Complex int __int128" } */ +long signed _Complex long __int128 *x452; /* { dg-error "error" "long signed _Complex long __int128" } */ +long unsigned int long __int128 *x453; /* { dg-error "error" "long unsigned int long __int128" } */ +long unsigned int _Complex __int128 *x454; /* { dg-error "error" "long unsigned int _Complex __int128" } */ +long unsigned long int __int128 *x455; /* { dg-error "error" "long unsigned long int __int128" } */ +long unsigned long _Complex __int128 *x456; /* { dg-error "error" "long unsigned long _Complex __int128" } */ +long unsigned _Complex int __int128 *x457; /* { dg-error "error" "long unsigned _Complex int __int128" } */ +long unsigned _Complex long __int128 *x458; /* { dg-error "error" "long unsigned _Complex long __int128" } */ +long _Complex int long __int128 *x459; /* { dg-error "error" "long _Complex int long __int128" } */ +long _Complex int signed __int128 *x460; /* { dg-error "error" "long _Complex int signed __int128" } */ +long _Complex int unsigned __int128 *x461; /* { dg-error "error" "long _Complex int unsigned __int128" } */ +long _Complex long int __int128 *x462; /* { dg-error "error" "long _Complex long int __int128" } */ +long _Complex long signed __int128 *x463; /* { dg-error "error" "long _Complex long signed __int128" } */ +long _Complex long unsigned __int128 *x464; /* { dg-error "error" "long _Complex long unsigned __int128" } */ +long _Complex signed int __int128 *x465; /* { dg-error "error" "long _Complex signed int __int128" } */ +long _Complex signed long __int128 *x466; /* { dg-error "error" "long _Complex signed long __int128" } */ +long _Complex unsigned int __int128 *x467; /* { dg-error "error" "long _Complex unsigned int __int128" } */ +long _Complex unsigned long __int128 *x468; /* { dg-error "error" "long _Complex unsigned long __int128" } */ +signed short int _Complex __int128 *x469; /* { dg-error "error" "signed short int _Complex __int128" } */ +signed short _Complex int __int128 *x470; /* { dg-error "error" "signed short _Complex int __int128" } */ +signed int short _Complex __int128 *x471; /* { dg-error "error" "signed int short _Complex __int128" } */ +signed int long long __int128 *x472; /* { dg-error "error" "signed int long long __int128" } */ +signed int long _Complex __int128 *x473; /* { dg-error "error" "signed int long _Complex __int128" } */ +signed int _Complex short __int128 *x474; /* { dg-error "error" "signed int _Complex short __int128" } */ +signed int _Complex long __int128 *x475; /* { dg-error "error" "signed int _Complex long __int128" } */ +signed long int long __int128 *x476; /* { dg-error "error" "signed long int long __int128" } */ +signed long int _Complex __int128 *x477; /* { dg-error "error" "signed long int _Complex __int128" } */ +signed long long int __int128 *x478; /* { dg-error "error" "signed long long int __int128" } */ +signed long long _Complex __int128 *x479; /* { dg-error "error" "signed long long _Complex __int128" } */ +signed long _Complex int __int128 *x480; /* { dg-error "error" "signed long _Complex int __int128" } */ +signed long _Complex long __int128 *x481; /* { dg-error "error" "signed long _Complex long __int128" } */ +signed _Complex short int __int128 *x482; /* { dg-error "error" "signed _Complex short int __int128" } */ +signed _Complex int short __int128 *x483; /* { dg-error "error" "signed _Complex int short __int128" } */ +signed _Complex int long __int128 *x484; /* { dg-error "error" "signed _Complex int long __int128" } */ +signed _Complex long int __int128 *x485; /* { dg-error "error" "signed _Complex long int __int128" } */ +signed _Complex long long __int128 *x486; /* { dg-error "error" "signed _Complex long long __int128" } */ +unsigned short int _Complex __int128 *x487; /* { dg-error "error" "unsigned short int _Complex __int128" } */ +unsigned short _Complex int __int128 *x488; /* { dg-error "error" "unsigned short _Complex int __int128" } */ +unsigned int short _Complex __int128 *x489; /* { dg-error "error" "unsigned int short _Complex __int128" } */ +unsigned int long long __int128 *x490; /* { dg-error "error" "unsigned int long long __int128" } */ +unsigned int long _Complex __int128 *x491; /* { dg-error "error" "unsigned int long _Complex __int128" } */ +unsigned int _Complex short __int128 *x492; /* { dg-error "error" "unsigned int _Complex short __int128" } */ +unsigned int _Complex long __int128 *x493; /* { dg-error "error" "unsigned int _Complex long __int128" } */ +unsigned long int long __int128 *x494; /* { dg-error "error" "unsigned long int long __int128" } */ +unsigned long int _Complex __int128 *x495; /* { dg-error "error" "unsigned long int _Complex __int128" } */ +unsigned long long int __int128 *x496; /* { dg-error "error" "unsigned long long int __int128" } */ +unsigned long long _Complex __int128 *x497; /* { dg-error "error" "unsigned long long _Complex __int128" } */ +unsigned long _Complex int __int128 *x498; /* { dg-error "error" "unsigned long _Complex int __int128" } */ +unsigned long _Complex long __int128 *x499; /* { dg-error "error" "unsigned long _Complex long __int128" } */ +unsigned _Complex short int __int128 *x500; /* { dg-error "error" "unsigned _Complex short int __int128" } */ +unsigned _Complex int short __int128 *x501; /* { dg-error "error" "unsigned _Complex int short __int128" } */ +unsigned _Complex int long __int128 *x502; /* { dg-error "error" "unsigned _Complex int long __int128" } */ +unsigned _Complex long int __int128 *x503; /* { dg-error "error" "unsigned _Complex long int __int128" } */ +unsigned _Complex long long __int128 *x504; /* { dg-error "error" "unsigned _Complex long long __int128" } */ +_Complex short int signed __int128 *x505; /* { dg-error "error" "_Complex short int signed __int128" } */ +_Complex short int unsigned __int128 *x506; /* { dg-error "error" "_Complex short int unsigned __int128" } */ +_Complex short signed int __int128 *x507; /* { dg-error "error" "_Complex short signed int __int128" } */ +_Complex short unsigned int __int128 *x508; /* { dg-error "error" "_Complex short unsigned int __int128" } */ +_Complex int short signed __int128 *x509; /* { dg-error "error" "_Complex int short signed __int128" } */ +_Complex int short unsigned __int128 *x510; /* { dg-error "error" "_Complex int short unsigned __int128" } */ +_Complex int long long __int128 *x511; /* { dg-error "error" "_Complex int long long __int128" } */ +_Complex int long signed __int128 *x512; /* { dg-error "error" "_Complex int long signed __int128" } */ +_Complex int long unsigned __int128 *x513; /* { dg-error "error" "_Complex int long unsigned __int128" } */ +_Complex int signed short __int128 *x514; /* { dg-error "error" "_Complex int signed short __int128" } */ +_Complex int signed long __int128 *x515; /* { dg-error "error" "_Complex int signed long __int128" } */ +_Complex int unsigned short __int128 *x516; /* { dg-error "error" "_Complex int unsigned short __int128" } */ +_Complex int unsigned long __int128 *x517; /* { dg-error "error" "_Complex int unsigned long __int128" } */ +_Complex long int long __int128 *x518; /* { dg-error "error" "_Complex long int long __int128" } */ +_Complex long int signed __int128 *x519; /* { dg-error "error" "_Complex long int signed __int128" } */ +_Complex long int unsigned __int128 *x520; /* { dg-error "error" "_Complex long int unsigned __int128" } */ +_Complex long long int __int128 *x521; /* { dg-error "error" "_Complex long long int __int128" } */ +_Complex long long signed __int128 *x522; /* { dg-error "error" "_Complex long long signed __int128" } */ +_Complex long long unsigned __int128 *x523; /* { dg-error "error" "_Complex long long unsigned __int128" } */ +_Complex long signed int __int128 *x524; /* { dg-error "error" "_Complex long signed int __int128" } */ +_Complex long signed long __int128 *x525; /* { dg-error "error" "_Complex long signed long __int128" } */ +_Complex long unsigned int __int128 *x526; /* { dg-error "error" "_Complex long unsigned int __int128" } */ +_Complex long unsigned long __int128 *x527; /* { dg-error "error" "_Complex long unsigned long __int128" } */ +_Complex signed short int __int128 *x528; /* { dg-error "error" "_Complex signed short int __int128" } */ +_Complex signed int short __int128 *x529; /* { dg-error "error" "_Complex signed int short __int128" } */ +_Complex signed int long __int128 *x530; /* { dg-error "error" "_Complex signed int long __int128" } */ +_Complex signed long int __int128 *x531; /* { dg-error "error" "_Complex signed long int __int128" } */ +_Complex signed long long __int128 *x532; /* { dg-error "error" "_Complex signed long long __int128" } */ +_Complex unsigned short int __int128 *x533; /* { dg-error "error" "_Complex unsigned short int __int128" } */ +_Complex unsigned int short __int128 *x534; /* { dg-error "error" "_Complex unsigned int short __int128" } */ +_Complex unsigned int long __int128 *x535; /* { dg-error "error" "_Complex unsigned int long __int128" } */ +_Complex unsigned long int __int128 *x536; /* { dg-error "error" "_Complex unsigned long int __int128" } */ +_Complex unsigned long long __int128 *x537; /* { dg-error "error" "_Complex unsigned long long __int128" } */ +int long long signed _Complex __int128 *x538; /* { dg-error "error" "int long long signed _Complex __int128" } */ +int long long unsigned _Complex __int128 *x539; /* { dg-error "error" "int long long unsigned _Complex __int128" } */ +int long long _Complex signed __int128 *x540; /* { dg-error "error" "int long long _Complex signed __int128" } */ +int long long _Complex unsigned __int128 *x541; /* { dg-error "error" "int long long _Complex unsigned __int128" } */ +int long signed long _Complex __int128 *x542; /* { dg-error "error" "int long signed long _Complex __int128" } */ +int long signed _Complex long __int128 *x543; /* { dg-error "error" "int long signed _Complex long __int128" } */ +int long unsigned long _Complex __int128 *x544; /* { dg-error "error" "int long unsigned long _Complex __int128" } */ +int long unsigned _Complex long __int128 *x545; /* { dg-error "error" "int long unsigned _Complex long __int128" } */ +int long _Complex long signed __int128 *x546; /* { dg-error "error" "int long _Complex long signed __int128" } */ +int long _Complex long unsigned __int128 *x547; /* { dg-error "error" "int long _Complex long unsigned __int128" } */ +int long _Complex signed long __int128 *x548; /* { dg-error "error" "int long _Complex signed long __int128" } */ +int long _Complex unsigned long __int128 *x549; /* { dg-error "error" "int long _Complex unsigned long __int128" } */ +int signed long long _Complex __int128 *x550; /* { dg-error "error" "int signed long long _Complex __int128" } */ +int signed long _Complex long __int128 *x551; /* { dg-error "error" "int signed long _Complex long __int128" } */ +int signed _Complex long long __int128 *x552; /* { dg-error "error" "int signed _Complex long long __int128" } */ +int unsigned long long _Complex __int128 *x553; /* { dg-error "error" "int unsigned long long _Complex __int128" } */ +int unsigned long _Complex long __int128 *x554; /* { dg-error "error" "int unsigned long _Complex long __int128" } */ +int unsigned _Complex long long __int128 *x555; /* { dg-error "error" "int unsigned _Complex long long __int128" } */ +int _Complex long long signed __int128 *x556; /* { dg-error "error" "int _Complex long long signed __int128" } */ +int _Complex long long unsigned __int128 *x557; /* { dg-error "error" "int _Complex long long unsigned __int128" } */ +int _Complex long signed long __int128 *x558; /* { dg-error "error" "int _Complex long signed long __int128" } */ +int _Complex long unsigned long __int128 *x559; /* { dg-error "error" "int _Complex long unsigned long __int128" } */ +int _Complex signed long long __int128 *x560; /* { dg-error "error" "int _Complex signed long long __int128" } */ +int _Complex unsigned long long __int128 *x561; /* { dg-error "error" "int _Complex unsigned long long __int128" } */ +long int long signed _Complex __int128 *x562; /* { dg-error "error" "long int long signed _Complex __int128" } */ +long int long unsigned _Complex __int128 *x563; /* { dg-error "error" "long int long unsigned _Complex __int128" } */ +long int long _Complex signed __int128 *x564; /* { dg-error "error" "long int long _Complex signed __int128" } */ +long int long _Complex unsigned __int128 *x565; /* { dg-error "error" "long int long _Complex unsigned __int128" } */ +long int signed long _Complex __int128 *x566; /* { dg-error "error" "long int signed long _Complex __int128" } */ +long int signed _Complex long __int128 *x567; /* { dg-error "error" "long int signed _Complex long __int128" } */ +long int unsigned long _Complex __int128 *x568; /* { dg-error "error" "long int unsigned long _Complex __int128" } */ +long int unsigned _Complex long __int128 *x569; /* { dg-error "error" "long int unsigned _Complex long __int128" } */ +long int _Complex long signed __int128 *x570; /* { dg-error "error" "long int _Complex long signed __int128" } */ +long int _Complex long unsigned __int128 *x571; /* { dg-error "error" "long int _Complex long unsigned __int128" } */ +long int _Complex signed long __int128 *x572; /* { dg-error "error" "long int _Complex signed long __int128" } */ +long int _Complex unsigned long __int128 *x573; /* { dg-error "error" "long int _Complex unsigned long __int128" } */ +long long int signed _Complex __int128 *x574; /* { dg-error "error" "long long int signed _Complex __int128" } */ +long long int unsigned _Complex __int128 *x575; /* { dg-error "error" "long long int unsigned _Complex __int128" } */ +long long int _Complex signed __int128 *x576; /* { dg-error "error" "long long int _Complex signed __int128" } */ +long long int _Complex unsigned __int128 *x577; /* { dg-error "error" "long long int _Complex unsigned __int128" } */ +long long signed int _Complex __int128 *x578; /* { dg-error "error" "long long signed int _Complex __int128" } */ +long long signed _Complex int __int128 *x579; /* { dg-error "error" "long long signed _Complex int __int128" } */ +long long unsigned int _Complex __int128 *x580; /* { dg-error "error" "long long unsigned int _Complex __int128" } */ +long long unsigned _Complex int __int128 *x581; /* { dg-error "error" "long long unsigned _Complex int __int128" } */ +long long _Complex int signed __int128 *x582; /* { dg-error "error" "long long _Complex int signed __int128" } */ +long long _Complex int unsigned __int128 *x583; /* { dg-error "error" "long long _Complex int unsigned __int128" } */ +long long _Complex signed int __int128 *x584; /* { dg-error "error" "long long _Complex signed int __int128" } */ +long long _Complex unsigned int __int128 *x585; /* { dg-error "error" "long long _Complex unsigned int __int128" } */ +long signed int long _Complex __int128 *x586; /* { dg-error "error" "long signed int long _Complex __int128" } */ +long signed int _Complex long __int128 *x587; /* { dg-error "error" "long signed int _Complex long __int128" } */ +long signed long int _Complex __int128 *x588; /* { dg-error "error" "long signed long int _Complex __int128" } */ +long signed long _Complex int __int128 *x589; /* { dg-error "error" "long signed long _Complex int __int128" } */ +long signed _Complex int long __int128 *x590; /* { dg-error "error" "long signed _Complex int long __int128" } */ +long signed _Complex long int __int128 *x591; /* { dg-error "error" "long signed _Complex long int __int128" } */ +long unsigned int long _Complex __int128 *x592; /* { dg-error "error" "long unsigned int long _Complex __int128" } */ +long unsigned int _Complex long __int128 *x593; /* { dg-error "error" "long unsigned int _Complex long __int128" } */ +long unsigned long int _Complex __int128 *x594; /* { dg-error "error" "long unsigned long int _Complex __int128" } */ +long unsigned long _Complex int __int128 *x595; /* { dg-error "error" "long unsigned long _Complex int __int128" } */ +long unsigned _Complex int long __int128 *x596; /* { dg-error "error" "long unsigned _Complex int long __int128" } */ +long unsigned _Complex long int __int128 *x597; /* { dg-error "error" "long unsigned _Complex long int __int128" } */ +long _Complex int long signed __int128 *x598; /* { dg-error "error" "long _Complex int long signed __int128" } */ +long _Complex int long unsigned __int128 *x599; /* { dg-error "error" "long _Complex int long unsigned __int128" } */ +long _Complex int signed long __int128 *x600; /* { dg-error "error" "long _Complex int signed long __int128" } */ +long _Complex int unsigned long __int128 *x601; /* { dg-error "error" "long _Complex int unsigned long __int128" } */ +long _Complex long int signed __int128 *x602; /* { dg-error "error" "long _Complex long int signed __int128" } */ +long _Complex long int unsigned __int128 *x603; /* { dg-error "error" "long _Complex long int unsigned __int128" } */ +long _Complex long signed int __int128 *x604; /* { dg-error "error" "long _Complex long signed int __int128" } */ +long _Complex long unsigned int __int128 *x605; /* { dg-error "error" "long _Complex long unsigned int __int128" } */ +long _Complex signed int long __int128 *x606; /* { dg-error "error" "long _Complex signed int long __int128" } */ +long _Complex signed long int __int128 *x607; /* { dg-error "error" "long _Complex signed long int __int128" } */ +long _Complex unsigned int long __int128 *x608; /* { dg-error "error" "long _Complex unsigned int long __int128" } */ +long _Complex unsigned long int __int128 *x609; /* { dg-error "error" "long _Complex unsigned long int __int128" } */ +signed int long long _Complex __int128 *x610; /* { dg-error "error" "signed int long long _Complex __int128" } */ +signed int long _Complex long __int128 *x611; /* { dg-error "error" "signed int long _Complex long __int128" } */ +signed int _Complex long long __int128 *x612; /* { dg-error "error" "signed int _Complex long long __int128" } */ +signed long int long _Complex __int128 *x613; /* { dg-error "error" "signed long int long _Complex __int128" } */ +signed long int _Complex long __int128 *x614; /* { dg-error "error" "signed long int _Complex long __int128" } */ +signed long long int _Complex __int128 *x615; /* { dg-error "error" "signed long long int _Complex __int128" } */ +signed long long _Complex int __int128 *x616; /* { dg-error "error" "signed long long _Complex int __int128" } */ +signed long _Complex int long __int128 *x617; /* { dg-error "error" "signed long _Complex int long __int128" } */ +signed long _Complex long int __int128 *x618; /* { dg-error "error" "signed long _Complex long int __int128" } */ +signed _Complex int long long __int128 *x619; /* { dg-error "error" "signed _Complex int long long __int128" } */ +signed _Complex long int long __int128 *x620; /* { dg-error "error" "signed _Complex long int long __int128" } */ +signed _Complex long long int __int128 *x621; /* { dg-error "error" "signed _Complex long long int __int128" } */ +unsigned int long long _Complex __int128 *x622; /* { dg-error "error" "unsigned int long long _Complex __int128" } */ +unsigned int long _Complex long __int128 *x623; /* { dg-error "error" "unsigned int long _Complex long __int128" } */ +unsigned int _Complex long long __int128 *x624; /* { dg-error "error" "unsigned int _Complex long long __int128" } */ +unsigned long int long _Complex __int128 *x625; /* { dg-error "error" "unsigned long int long _Complex __int128" } */ +unsigned long int _Complex long __int128 *x626; /* { dg-error "error" "unsigned long int _Complex long __int128" } */ +unsigned long long int _Complex __int128 *x627; /* { dg-error "error" "unsigned long long int _Complex __int128" } */ +unsigned long long _Complex int __int128 *x628; /* { dg-error "error" "unsigned long long _Complex int __int128" } */ +unsigned long _Complex int long __int128 *x629; /* { dg-error "error" "unsigned long _Complex int long __int128" } */ +unsigned long _Complex long int __int128 *x630; /* { dg-error "error" "unsigned long _Complex long int __int128" } */ +unsigned _Complex int long long __int128 *x631; /* { dg-error "error" "unsigned _Complex int long long __int128" } */ +unsigned _Complex long int long __int128 *x632; /* { dg-error "error" "unsigned _Complex long int long __int128" } */ +unsigned _Complex long long int __int128 *x633; /* { dg-error "error" "unsigned _Complex long long int __int128" } */ +_Complex int long long signed __int128 *x634; /* { dg-error "error" "_Complex int long long signed __int128" } */ +_Complex int long long unsigned __int128 *x635; /* { dg-error "error" "_Complex int long long unsigned __int128" } */ +_Complex int long signed long __int128 *x636; /* { dg-error "error" "_Complex int long signed long __int128" } */ +_Complex int long unsigned long __int128 *x637; /* { dg-error "error" "_Complex int long unsigned long __int128" } */ +_Complex int signed long long __int128 *x638; /* { dg-error "error" "_Complex int signed long long __int128" } */ +_Complex int unsigned long long __int128 *x639; /* { dg-error "error" "_Complex int unsigned long long __int128" } */ +_Complex long int long signed __int128 *x640; /* { dg-error "error" "_Complex long int long signed __int128" } */ +_Complex long int long unsigned __int128 *x641; /* { dg-error "error" "_Complex long int long unsigned __int128" } */ +_Complex long int signed long __int128 *x642; /* { dg-error "error" "_Complex long int signed long __int128" } */ +_Complex long int unsigned long __int128 *x643; /* { dg-error "error" "_Complex long int unsigned long __int128" } */ +_Complex long long int signed __int128 *x644; /* { dg-error "error" "_Complex long long int signed __int128" } */ +_Complex long long int unsigned __int128 *x645; /* { dg-error "error" "_Complex long long int unsigned __int128" } */ +_Complex long long signed int __int128 *x646; /* { dg-error "error" "_Complex long long signed int __int128" } */ +_Complex long long unsigned int __int128 *x647; /* { dg-error "error" "_Complex long long unsigned int __int128" } */ +_Complex long signed int long __int128 *x648; /* { dg-error "error" "_Complex long signed int long __int128" } */ +_Complex long signed long int __int128 *x649; /* { dg-error "error" "_Complex long signed long int __int128" } */ +_Complex long unsigned int long __int128 *x650; /* { dg-error "error" "_Complex long unsigned int long __int128" } */ +_Complex long unsigned long int __int128 *x651; /* { dg-error "error" "_Complex long unsigned long int __int128" } */ +_Complex signed int long long __int128 *x652; /* { dg-error "error" "_Complex signed int long long __int128" } */ +_Complex signed long int long __int128 *x653; /* { dg-error "error" "_Complex signed long int long __int128" } */ +_Complex signed long long int __int128 *x654; /* { dg-error "error" "_Complex signed long long int __int128" } */ +_Complex unsigned int long long __int128 *x655; /* { dg-error "error" "_Complex unsigned int long long __int128" } */ +_Complex unsigned long int long __int128 *x656; /* { dg-error "error" "_Complex unsigned long int long __int128" } */ +_Complex unsigned long long int __int128 *x657; /* { dg-error "error" "_Complex unsigned long long int __int128" } */ Index: gcc/gcc/testsuite/gcc.dg/int128-1.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gcc/gcc/testsuite/gcc.dg/int128-1.c 2010-04-08 11:45:25.661217600 +0200 @@ -0,0 +1,28 @@ +/* { dg-do run { target int128 } } */ +/* { dg-options "-std=gnu99" } */ + +#include + +extern void abort(void); + +void foo(int i, ...) +{ + __int128 q; + va_list va; + + va_start(va, i); + q = va_arg(va, __int128); + va_end(va); + + if (q != 5) + abort(); +} + +int main(void) +{ + __int128 q = 5; + + foo(1, q); + return 0; +} + Index: gcc/gcc/testsuite/gcc.dg/int128-2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gcc/gcc/testsuite/gcc.dg/int128-2.c 2010-04-08 11:45:25.661217600 +0200 @@ -0,0 +1,21 @@ +/* { dg-do run { target int128 } } */ +/* { dg-options "-std=gnu99" } */ + +extern void abort(void); + +__int128 foo (signed __int128 a, unsigned __int128 b) +{ + return (__int128) (a + (__int128) b); +} + +int main(void) +{ + __int128 q = 5; + unsigned __int128 r = 1; + + q = foo (q, r); + if (q != 6) + abort (); + return 0; +} + Index: gcc/gcc/tree.c =================================================================== --- gcc.orig/gcc/tree.c 2010-04-08 11:42:02.973717600 +0200 +++ gcc/gcc/tree.c 2010-04-08 11:45:25.676842600 +0200 @@ -8668,6 +8668,9 @@ make_or_reuse_type (unsigned size, int u if (size == LONG_LONG_TYPE_SIZE) return (unsignedp ? long_long_unsigned_type_node : long_long_integer_type_node); + if (size == INT128_TYPE_SIZE) + return (unsignedp ? int128_unsigned_type_node + : int128_integer_type_node); if (unsignedp) return make_unsigned_type (size); @@ -8783,6 +8786,8 @@ build_common_tree_nodes (bool signed_cha long_unsigned_type_node = make_unsigned_type (LONG_TYPE_SIZE); long_long_integer_type_node = make_signed_type (LONG_LONG_TYPE_SIZE); long_long_unsigned_type_node = make_unsigned_type (LONG_LONG_TYPE_SIZE); + int128_integer_type_node = make_signed_type (INT128_TYPE_SIZE); + int128_unsigned_type_node = make_unsigned_type (INT128_TYPE_SIZE); /* Define a boolean type. This type only represents boolean values but may be larger than char depending on the value of BOOL_TYPE_SIZE. @@ -8892,6 +8897,7 @@ build_common_tree_nodes_2 (int short_dou dfloat128_ptr_type_node = build_pointer_type (dfloat128_type_node); complex_integer_type_node = build_complex_type (integer_type_node); + complex_int128_type_node = build_complex_type (int128_integer_type_node); complex_float_type_node = build_complex_type (float_type_node); complex_double_type_node = build_complex_type (double_type_node); complex_long_double_type_node = build_complex_type (long_double_type_node); Index: gcc/gcc/tree.h =================================================================== --- gcc.orig/gcc/tree.h 2010-04-08 11:42:02.989342600 +0200 +++ gcc/gcc/tree.h 2010-04-08 11:45:25.676842600 +0200 @@ -3452,6 +3452,7 @@ enum tree_index TI_BOOLEAN_TRUE, TI_COMPLEX_INTEGER_TYPE, + TI_COMPLEX_INT128_TYPE, TI_COMPLEX_FLOAT_TYPE, TI_COMPLEX_DOUBLE_TYPE, TI_COMPLEX_LONG_DOUBLE_TYPE, @@ -3612,6 +3613,7 @@ extern GTY(()) tree global_trees[TI_MAX] #define integer_ptr_type_node global_trees[TI_INTEGER_PTR_TYPE] #define complex_integer_type_node global_trees[TI_COMPLEX_INTEGER_TYPE] +#define complex_int128_type_node global_trees[TI_COMPLEX_INT128_TYPE] #define complex_float_type_node global_trees[TI_COMPLEX_FLOAT_TYPE] #define complex_double_type_node global_trees[TI_COMPLEX_DOUBLE_TYPE] #define complex_long_double_type_node global_trees[TI_COMPLEX_LONG_DOUBLE_TYPE] @@ -3762,6 +3764,8 @@ enum integer_type_kind itk_unsigned_long, itk_long_long, itk_unsigned_long_long, + itk_int128, + itk_unsigned_int128, itk_none }; @@ -3782,6 +3786,8 @@ extern GTY(()) tree integer_types[itk_no #define long_unsigned_type_node integer_types[itk_unsigned_long] #define long_long_integer_type_node integer_types[itk_long_long] #define long_long_unsigned_type_node integer_types[itk_unsigned_long_long] +#define int128_integer_type_node integer_types[itk_int128] +#define int128_unsigned_type_node integer_types[itk_unsigned_int128] /* Set to the default thread-local storage (tls) model to use. */ Index: gcc/gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc.orig/gcc/testsuite/lib/target-supports.exp 2010-04-08 11:38:54.395092000 +0200 +++ gcc/gcc/testsuite/lib/target-supports.exp 2010-04-08 11:45:25.676842600 +0200 @@ -1500,6 +1500,19 @@ proc check_effective_target_vect_intfloa return $et_vect_intfloat_cvt_saved } +#Return 1 if we're supporting __int128 for target, 0 otherwise. + +proc check_effective_target_int128 { } { + return [check_no_compiler_messages int128 object { + int dummy[ + #ifndef __SIZEOF_INT128__ + -1 + #else + 1 + #endif + ]; + }] +} # Return 1 if the target supports unsigned int->float conversion #