diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2016-01-13 14:27:57 +0100 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2016-01-13 14:27:57 +0100 |
commit | d8e1f79a80caf5b40088476b15b29925c0a42348 (patch) | |
tree | e874dcd41321f2d982cb3320784d2b5ea127ec34 | |
parent | 428ded17977c8142625804eb8f7545ae7bb06f7b (diff) |
Merge branches/gcc-5-branch rev 232321.
Change-Id: I69778250351f56596e2aa93cbd9fe5ee12b54548
116 files changed, 5243 insertions, 3274 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 597e408bbcc..66610de4cb7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,266 @@ +2016-01-13 Richard Biener <rguenther@suse.de> + + PR tree-optimization/69013 + * tree-ssa-uninit.c (prune_uninit_phi_opnds_in_unrealizable_paths): + Exchange assert for a test. + +2016-01-12 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2016-01-12 Jakub Jelinek <jakub@redhat.com> + + PR target/69198 + * config/i386/i386.c (ix86_expand_special_args_builtin): Ensure + aligned_mem is properly set for AVX512-VL floating point masked + stores. + + 2015-12-04 Ilya Enkovich <enkovich.gnu@gmail.com> + + * config/i386/sse.md (<avx512>_store<mode>_mask): Fix + operand checked for alignment. + +2016-01-12 James Greenhalgh <james.greenhalgh@arm.com> + + Backport from mainline r222186. + 2015-04-17 Jakub Jelinek <jakub@redhat.com> + + PR target/65689 + * genpreds.c (struct constraint_data): Add maybe_allows_reg and + maybe_allows_mem bitfields. + (maybe_allows_none_start, maybe_allows_none_end, + maybe_allows_reg_start, maybe_allows_reg_end, maybe_allows_mem_start, + maybe_allows_mem_end): New variables. + (compute_maybe_allows): New function. + (add_constraint): Use it to initialize maybe_allows_reg and + maybe_allows_mem fields. + (choose_enum_order): Sort the non-is_register/is_const_int/is_memory/ + is_address constraints such that those that allow neither mem nor + reg come first, then those that only allow reg but not mem, then + those that only allow mem but not reg, then the rest. + (write_allows_reg_mem_function): New function. + (write_tm_preds_h): Call it. + * stmt.c (parse_output_constraint, parse_input_constraint): Use + the generated insn_extra_constraint_allows_reg_mem function + instead of always setting *allows_reg = true; *allows_mem = true; + for unknown extra constraints. + +2016-01-11 John David Anglin <danglin@gcc.gnu.org> + + * config/pa/pa.c (pa_emit_move_sequence): Handle floating point + reloads for other unsupported memory operands. + +2016-01-11 Martin Jambor <mjambor@suse.cz> + + PR ipa/66616 + * cgraphclones.c (duplicate_thunk_for_node): Copy can_change_signature + flag. + +2016-01-11 Yury Gribov <y.gribov@samsung.com> + + Backport from mainline + 2016-01-11 Yury Gribov <y.gribov@samsung.com> + + PR 67425 + * common.opt (frandom-seed): Fix parameter name. + * doc/invoke.texi (frandom-seed): Ditto and describe parameter. + +2016-01-08 Martin Jambor <mjambor@suse.cz> + + Backport from mainline + 2015-12-15 Martin Jambor <mjambor@suse.cz> + + PR ipa/68851 + * cgraph.c (collect_callers_of_node_1): Do not collect thunks. + * cgraph.h (cgraph_node): Change comment of collect_callers. + +2016-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/68648 + * config/arm/arm.md (*andsi_iorsi3_notsi): Try to simplify + the complement of operands[3] during splitting. + +2015-12-31 Kirill Yukhin <kirill.yukhin@intel.com> + + * config/i386/sse.md (define_insn "vec_dup<mode>"): Separate EVEX + alternative. + +2015-12-30 Kirill Yukhin <kirill.yukhin@intel.com> + + * config/i386/sse.md (define_insn "vec_extract_hi_<mode>_maskm"): + Remove "prefix_extra". + (define_insn "vec_extract_hi_<mode>_mask"): New. + (define_insn "vec_extract_hi_<mode>"): Remove masking. + +2015-12-25 Andreas Tobler <andreast@gcc.gnu.org> + + Backport from mainline + 2015-12-25 Andreas Tobler <andreast@gcc.gnu.org> + + * config/rs6000/freebsd64.h: Delete FREEBSD_DYNAMIC_LINKER32/64 + defines. Use FBSD_DYNAMIC_LINKER instead. + Rename and simplify LINK_OS_FREEBSD_SPEC_DEF32/64 to + LINK_OS_FREEBSD_SPEC_DEF. + +2015-12-22 Peter Bergner <bergner@vnet.ibm.com> + + Backport from mainline + PR target/68872 + * config/rs6000/rs6000.h (ASM_CPU_SPEC): For -mcpu=powerpc64le, + pass %(asm_cpu_power8). + +2015-12-19 Eric Botcazou <ebotcazou@adacore.com> + + PR rtl-optimization/68910 + * emit-rtl.c (set_unique_reg_note) <REG_EQUAL>: Add bypass for USEs. + * config/sparc/sparc.md (anddi3): Enable only in 64-bit mode. + (iordi3): Likewise. + (xordi3): Likewise. + (one_cmpldi2): Likewise. + (*anddi3_sp32): Delete. + (*and_not_di_sp32): Likewise. + (*iordi3_sp32): Likewise. + (*or_not_di_sp32): Likewise. + (*xordi3_sp32): Likewise. + (*xor_not_di_sp32): Likewise. + (32-bit DImode logical operations splitter): Likewise. + (*one_cmpldi2_sp32): Likewise. + +2015-13-18 John David Anglin <danglin@gcc.gnu.org> + + PR target/68729 + * config/pa/pa.c (pa_emit_move_sequence): Reorganize handling of + floating-point reloads. Only reload operands that are not valid + floating-point memory operands. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/predicates.md (const_mask_operand): New predicate. + * config/s390/s390-builtins.def: Set a smaller bitmask for a few builtins. + * config/s390/vector.md: Change predicate from immediate_operand + to either const_int_operand or const_mask_operand. Add special + insn conditions on patterns which have to exclude certain values. + * config/s390/vx-builtins.md: Likewise. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/vector.md ("*vec_set<mode>"): Change shift count + mode from DI to SI. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/s390-builtin-types.def: New builtin types added. + * config/s390/s390-builtins.def: Add s390_vec_splat_* definitions. + * config/s390/s390.c (s390_expand_builtin): Always truncate + constants to the mode in the pattern. + * config/s390/vecintrin.h: Let the vec_splat_* macros point to the + respective builtin __builtin_s390_vec_splat_*. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/s390-builtin-types.def: Sort builtin types. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/s390-c.c (s390_get_vstring_flags): Invert the + condition for the RT flag. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/constraints.md: Use private backport of + const_vec_duplicate_p s390_const_vec_duplicate_p. + * config/s390/s390-protos.h: Add prototype for + s390_const_vec_duplicate_p. + * config/s390/s390.c (s390_const_vec_duplicate_p): New function. + (s390_contiguous_bitmask_vector_p): Use s390_const_vec_duplicate_p. + (print_operand): Likewise. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/constraints.md ("jKK"): New constraint. + * config/s390/s390.c (tm-constrs.h): Include for + satisfies_constraint_*. + (s390_legitimate_constant_p): Allow jKK constants. Use + satisfies_constraint_* also for the others. + (legitimate_reload_vector_constant_p): Likewise. + (print_operand): Allow h output modifier on vectors. + * config/s390/vector.md ("mov<mode>"): Add vrepi. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * config/s390/vector.md ("*vec_splats<mode>"): Fix constraint + letter I->K. + +2015-12-18 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2015-12-17 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/68835 + * tree.c (get_int_cst_ext_nunits): Return + cst.get_precision () / HOST_BITS_PER_WIDE_INT + 1 + for all unsigned wi::neg_p (cst) constants. + (build_new_int_cst): If cst.get_precision is not a multiple + of HOST_BITS_PER_WIDE_INT, zero extend -1 to the precision + % HOST_BITS_PER_WIDE_INT. + +2015-12-16 John David Anglin <danglin@gcc.gnu.org> + + PR target/68779 + * config/pa/pa.md (atomic_loaddi): Honor -mdisable-fpregs. + (atomic_loaddi_1): Likewise. + (atomic_storedi): Likewise. + (atomic_storedi_1): Likewise. + (atomic_loaddf): Likewise. + (atomic_loaddf_1): Likewise. + (atomic_storedf): Likewise. + (atomic_storedf_1): Likewise. + Move all atomic patterns to end of file. + +2015-12-16 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2015-12-02 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/68184 + * cgraphunit.c (cgraph_node::analyze): Set can_throw_external. + +2015-12-16 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2015-12-04 Richard Biener <rguenther@suse.de> + + PR middle-end/68636 + * builtins.c (get_pointer_alignment_1): Take care of byte to + bit alignment computation overflow. + + 2015-11-30 Richard Biener <rguenther@suse.de> + + PR c/68162 + * dwarf2out.c (gen_type_die_with_usage): Keep variant types + of arrays. + 2015-12-14 Martin Jambor <mjambor@suse.cz> PR ipa/66616 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7a28af80a02..17164ba836e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20151215 +20160113 diff --git a/gcc/builtins.c b/gcc/builtins.c index 72b6d305b21..166abbeea02 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -497,6 +497,10 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp, { *bitposp = ptr_misalign * BITS_PER_UNIT; *alignp = ptr_align * BITS_PER_UNIT; + /* Make sure to return a sensible alignment when the multiplication + by BITS_PER_UNIT overflowed. */ + if (*alignp == 0) + *alignp = 1u << (HOST_BITS_PER_INT - 1); /* We cannot really tell whether this result is an approximation. */ return true; } diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 2b39509cdfc..9cb89d1db6f 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2015-12-16 Joseph Myers <joseph@codesourcery.com> + + PR c/68162 + * c-common.h (c_build_qualified_type): Add extra default + arguments. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index e0af43d35b7..1b5b3e9db09 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -850,7 +850,7 @@ extern tree pointer_int_sum (location_t, enum tree_code, tree, tree, bool = true); /* Add qualifiers to a type, in the fashion for C. */ -extern tree c_build_qualified_type (tree, int); +extern tree c_build_qualified_type (tree, int, tree = NULL_TREE, size_t = 0); /* Build tree nodes and builtin functions common to both C and C++ language frontends. */ diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 336a560f551..dde89d5df39 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,23 @@ +2015-12-30 Joseph Myers <joseph@codesourcery.com> + + PR c/69037 + Backport from mainline: + + 2015-12-07 Marek Polacek <polacek@redhat.com> + + PR c/68668 + * c-decl.c (grokdeclarator): If ORIG_QUAL_INDIRECT is indirect, use + TREE_TYPE of ORIG_QUAL_TYPE, otherwise decrement ORIG_QUAL_INDIRECT. + +2015-12-16 Joseph Myers <joseph@codesourcery.com> + + PR c/68162 + * c-decl.c (grokdeclarator): Set first_non_attr_kind before + following link from declarator to next declarator. Track original + qualified type and pass it to c_build_qualified_type. + * c-typeck.c (c_build_qualified_type): Add arguments + orig_qual_type and orig_qual_indirect. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index f44f2ce2ba0..30e45eecbaa 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -5372,6 +5372,8 @@ grokdeclarator (const struct c_declarator *declarator, tree returned_attrs = NULL_TREE; bool bitfield = width != NULL; tree element_type; + tree orig_qual_type = NULL; + size_t orig_qual_indirect = 0; struct c_arg_info *arg_info = 0; addr_space_t as1, as2, address_space; location_t loc = UNKNOWN_LOCATION; @@ -5410,9 +5412,9 @@ grokdeclarator (const struct c_declarator *declarator, case cdk_function: case cdk_pointer: funcdef_syntax = (decl->kind == cdk_function); - decl = decl->declarator; if (first_non_attr_kind == cdk_attrs) first_non_attr_kind = decl->kind; + decl = decl->declarator; break; case cdk_attrs: @@ -5534,12 +5536,17 @@ grokdeclarator (const struct c_declarator *declarator, if ((TREE_CODE (type) == ARRAY_TYPE || first_non_attr_kind == cdk_array) && TYPE_QUALS (element_type)) - type = TYPE_MAIN_VARIANT (type); + { + orig_qual_type = type; + type = TYPE_MAIN_VARIANT (type); + } type_quals = ((constp ? TYPE_QUAL_CONST : 0) | (restrictp ? TYPE_QUAL_RESTRICT : 0) | (volatilep ? TYPE_QUAL_VOLATILE : 0) | (atomicp ? TYPE_QUAL_ATOMIC : 0) | ENCODE_QUAL_ADDR_SPACE (address_space)); + if (type_quals != TYPE_QUALS (element_type)) + orig_qual_type = NULL_TREE; /* Applying the _Atomic qualifier to an array type (through the use of typedefs or typeof) must be detected here. If the qualifier @@ -6030,6 +6037,7 @@ grokdeclarator (const struct c_declarator *declarator, array_ptr_attrs = NULL_TREE; array_parm_static = 0; } + orig_qual_indirect++; break; } case cdk_function: @@ -6039,6 +6047,7 @@ grokdeclarator (const struct c_declarator *declarator, attributes. */ bool really_funcdef = false; tree arg_types; + orig_qual_type = NULL_TREE; if (funcdef_flag) { const struct c_declarator *t = declarator->declarator; @@ -6139,7 +6148,9 @@ grokdeclarator (const struct c_declarator *declarator, pedwarn (loc, OPT_Wpedantic, "ISO C forbids qualified function types"); if (type_quals) - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); + orig_qual_type = NULL_TREE; size_varies = false; /* When the pointed-to type involves components of variable size, @@ -6337,7 +6348,8 @@ grokdeclarator (const struct c_declarator *declarator, pedwarn (loc, OPT_Wpedantic, "ISO C forbids qualified function types"); if (type_quals) - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); decl = build_decl (declarator->id_loc, TYPE_DECL, declarator->u.id, type); if (declspecs->explicit_signed_p) @@ -6390,7 +6402,8 @@ grokdeclarator (const struct c_declarator *declarator, pedwarn (loc, OPT_Wpedantic, "ISO C forbids const or volatile function types"); if (type_quals) - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); return type; } @@ -6437,8 +6450,16 @@ grokdeclarator (const struct c_declarator *declarator, { /* Transfer const-ness of array into that of type pointed to. */ type = TREE_TYPE (type); + if (orig_qual_type != NULL_TREE) + { + if (orig_qual_indirect == 0) + orig_qual_type = TREE_TYPE (orig_qual_type); + else + orig_qual_indirect--; + } if (type_quals) - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); type = c_build_pointer_type (type); type_quals = array_ptr_quals; if (type_quals) @@ -6529,7 +6550,8 @@ grokdeclarator (const struct c_declarator *declarator, TYPE_DOMAIN (type) = build_range_type (sizetype, size_zero_node, NULL_TREE); } - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); decl = build_decl (declarator->id_loc, FIELD_DECL, declarator->u.id, type); DECL_NONADDRESSABLE_P (decl) = bitfield; @@ -6641,7 +6663,8 @@ grokdeclarator (const struct c_declarator *declarator, /* An uninitialized decl with `extern' is a reference. */ int extern_ref = !initialized && storage_class == csc_extern; - type = c_build_qualified_type (type, type_quals); + type = c_build_qualified_type (type, type_quals, orig_qual_type, + orig_qual_indirect); /* C99 6.2.2p7: It is invalid (compile-time undefined behavior) to create an 'extern' declaration for a diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index c8df1bb7163..466326db00d 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -12578,10 +12578,15 @@ c_finish_transaction (location_t loc, tree block, int flags) } /* Make a variant type in the proper way for C/C++, propagating qualifiers - down to the element type of an array. */ + down to the element type of an array. If ORIG_QUAL_TYPE is not + NULL, then it should be used as the qualified type + ORIG_QUAL_INDIRECT levels down in array type derivation (to + preserve information about the typedef name from which an array + type was derived). */ tree -c_build_qualified_type (tree type, int type_quals) +c_build_qualified_type (tree type, int type_quals, tree orig_qual_type, + size_t orig_qual_indirect) { if (type == error_mark_node) return type; @@ -12590,18 +12595,22 @@ c_build_qualified_type (tree type, int type_quals) { tree t; tree element_type = c_build_qualified_type (TREE_TYPE (type), - type_quals); + type_quals, orig_qual_type, + orig_qual_indirect - 1); /* See if we already have an identically qualified type. */ - for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) - { - if (TYPE_QUALS (strip_array_types (t)) == type_quals - && TYPE_NAME (t) == TYPE_NAME (type) - && TYPE_CONTEXT (t) == TYPE_CONTEXT (type) - && attribute_list_equal (TYPE_ATTRIBUTES (t), - TYPE_ATTRIBUTES (type))) - break; - } + if (orig_qual_type && orig_qual_indirect == 0) + t = orig_qual_type; + else + for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) + { + if (TYPE_QUALS (strip_array_types (t)) == type_quals + && TYPE_NAME (t) == TYPE_NAME (type) + && TYPE_CONTEXT (t) == TYPE_CONTEXT (type) + && attribute_list_equal (TYPE_ATTRIBUTES (t), + TYPE_ATTRIBUTES (type))) + break; + } if (!t) { tree domain = TYPE_DOMAIN (type); @@ -12639,7 +12648,9 @@ c_build_qualified_type (tree type, int type_quals) type_quals &= ~TYPE_QUAL_RESTRICT; } - tree var_type = build_qualified_type (type, type_quals); + tree var_type = (orig_qual_type && orig_qual_indirect == 0 + ? orig_qual_type + : build_qualified_type (type, type_quals)); /* A variant type does not inherit the list of incomplete vars from the type main variant. */ if (TREE_CODE (var_type) == RECORD_TYPE diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 852960a8170..22ae8127378 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -2609,7 +2609,8 @@ collect_callers_of_node_1 (cgraph_node *node, void *data) if (avail > AVAIL_INTERPOSABLE) for (cs = node->callers; cs != NULL; cs = cs->next_caller) - if (!cs->indirect_inlining_edge) + if (!cs->indirect_inlining_edge + && !cs->caller->thunk.thunk_p) redirect_callers->safe_push (cs); return false; } diff --git a/gcc/cgraph.h b/gcc/cgraph.h index cf8c7b64b9b..e3689968e96 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -1028,7 +1028,7 @@ public: cgraph_edge *get_edge (gimple call_stmt); /* Collect all callers of cgraph_node and its aliases that are known to lead - to NODE (i.e. are not overwritable). */ + to NODE (i.e. are not overwritable) and that are not thunks. */ vec<cgraph_edge *> collect_callers (void); /* Remove all callers from the node. */ diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c index b587ff2cb76..546cac86564 100644 --- a/gcc/cgraphclones.c +++ b/gcc/cgraphclones.c @@ -367,6 +367,7 @@ duplicate_thunk_for_node (cgraph_node *thunk, cgraph_node *node) new_thunk = cgraph_node::create (new_decl); set_new_clone_decl_and_node_flags (new_thunk); new_thunk->definition = true; + new_thunk->local.can_change_signature = node->local.can_change_signature; new_thunk->thunk = thunk->thunk; new_thunk->unique_name = in_lto_p; new_thunk->former_clone_of = thunk->decl; diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 78b2b59f4fc..d4db126cbd5 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -585,6 +585,7 @@ cgraph_node::analyze (void) cgraph_node *t = cgraph_node::get (thunk.alias); create_edge (t, NULL, 0, CGRAPH_FREQ_BASE); + callees->can_throw_external = !TREE_NOTHROW (t->decl); /* Target code in expand_thunk may need the thunk's target to be analyzed, so recurse here. */ if (!t->analyzed) diff --git a/gcc/common.opt b/gcc/common.opt index 593d39bf465..751d990302b 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1849,7 +1849,7 @@ Common Var(common_deferred_options) Defer frandom-seed= Common Joined RejectNegative Var(common_deferred_options) Defer --frandom-seed=<number> Make compile reproducible using <number> +-frandom-seed=<string> Make compile reproducible using <string> ; This switch causes the command line that was used to create an ; object file to be recorded into the object file. The exact format diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index a7351594034..c086c48c6b7 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -3227,8 +3227,22 @@ "#" ; "orr%?\\t%0, %1, %2\;bic%?\\t%0, %0, %3" "&& reload_completed" [(set (match_dup 0) (ior:SI (match_dup 1) (match_dup 2))) - (set (match_dup 0) (and:SI (not:SI (match_dup 3)) (match_dup 0)))] - "" + (set (match_dup 0) (and:SI (match_dup 4) (match_dup 5)))] + { + /* If operands[3] is a constant make sure to fold the NOT into it + to avoid creating a NOT of a CONST_INT. */ + rtx not_rtx = simplify_gen_unary (NOT, SImode, operands[3], SImode); + if (CONST_INT_P (not_rtx)) + { + operands[4] = operands[0]; + operands[5] = not_rtx; + } + else + { + operands[5] = operands[0]; + operands[4] = not_rtx; + } + } [(set_attr "length" "8") (set_attr "ce_count" "2") (set_attr "predicable" "yes") diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e0024db5ea9..4e7ae91a743 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -38244,7 +38244,11 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, memory = 0; break; case VOID_FTYPE_PV8DF_V8DF_QI: + case VOID_FTYPE_PV4DF_V4DF_QI: + case VOID_FTYPE_PV2DF_V2DF_QI: case VOID_FTYPE_PV16SF_V16SF_HI: + case VOID_FTYPE_PV8SF_V8SF_QI: + case VOID_FTYPE_PV4SF_V4SF_QI: case VOID_FTYPE_PV8DI_V8DI_QI: case VOID_FTYPE_PV4DI_V4DI_QI: case VOID_FTYPE_PV2DI_V2DI_QI: @@ -38304,10 +38308,6 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, case VOID_FTYPE_PV16QI_V16QI_HI: case VOID_FTYPE_PV32QI_V32QI_SI: case VOID_FTYPE_PV64QI_V64QI_DI: - case VOID_FTYPE_PV4DF_V4DF_QI: - case VOID_FTYPE_PV2DF_V2DF_QI: - case VOID_FTYPE_PV8SF_V8SF_QI: - case VOID_FTYPE_PV4SF_V4SF_QI: nargs = 2; klass = store; /* Reserve memory operand for target. */ diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 8bd3352a553..8f9d894971f 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1022,7 +1022,7 @@ sse_suffix = "<ssescalarsize>"; } - if (misaligned_operand (operands[1], <MODE>mode)) + if (misaligned_operand (operands[0], <MODE>mode)) align = "u"; else align = "a"; @@ -7018,28 +7018,50 @@ DONE; }) -(define_insn "vec_extract_hi_<mode><mask_name>" - [(set (match_operand:<ssehalfvecmode> 0 "<store_mask_predicate>" "=v,<store_mask_constraint>") +(define_insn "vec_extract_hi_<mode>_maskm" + [(set (match_operand:<ssehalfvecmode> 0 "memory_operand" "=m") + (vec_merge:<ssehalfvecmode> + (vec_select:<ssehalfvecmode> + (match_operand:VI8F_256 1 "register_operand" "v") + (parallel [(const_int 2) (const_int 3)])) + (match_operand:<ssehalfvecmode> 2 "memory_operand" "0") + (match_operand:<ssehalfvecmode> 3 "register_operand" "k")))] + "TARGET_AVX512DQ && TARGET_AVX512VL + && rtx_equal_p (operands[2], operands[0])" + "vextract<shuffletype>64x2\t{$0x1, %1, %0%{%3%}|%0%{%3%}, %1, 0x1}" + [(set_attr "type" "sselog1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) + +(define_insn "vec_extract_hi_<mode>_mask" + [(set (match_operand:<ssehalfvecmode> 0 "register_operand" "=v") + (vec_merge:<ssehalfvecmode> + (vec_select:<ssehalfvecmode> + (match_operand:VI8F_256 1 "register_operand" "v") + (parallel [(const_int 2) (const_int 3)])) + (match_operand:<ssehalfvecmode> 2 "vector_move_operand" "0C") + (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))] + "TARGET_AVX512VL && TARGET_AVX512DQ" + "vextract<shuffletype>64x2\t{$0x1, %1, %0%{%3%}%N2|%0%{%3%}%N2, %1, 0x1}" + [(set_attr "type" "sselog1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) + +(define_insn "vec_extract_hi_<mode>" + [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=xm, vm") (vec_select:<ssehalfvecmode> - (match_operand:VI8F_256 1 "register_operand" "v,v") + (match_operand:VI8F_256 1 "register_operand" "x, v") (parallel [(const_int 2) (const_int 3)])))] - "TARGET_AVX && <mask_avx512vl_condition> && <mask_avx512dq_condition>" -{ - if (TARGET_AVX512VL) - { - if (TARGET_AVX512DQ) - return "vextract<shuffletype>64x2\t{$0x1, %1, %0<mask_operand2>|%0<mask_operand2>, %1, 0x1}"; - else - return "vextract<shuffletype>32x4\t{$0x1, %1, %0|%0, %1, 0x1}"; - } - else - return "vextract<i128>\t{$0x1, %1, %0|%0, %1, 0x1}"; -} - [(set_attr "type" "sselog") - (set_attr "prefix_extra" "1") + "TARGET_AVX" + "@ + vextract<i128>\t{$0x1, %1, %0|%0, %1, 0x1} + vextract<shuffletype>64x2\t{$0x1, %1, %0|%0, %1, 0x1}" + [(set_attr "isa" "*, avx512dq") + (set_attr "prefix" "vex, evex") + (set_attr "type" "sselog1") (set_attr "length_immediate" "1") - (set_attr "memory" "none,store") - (set_attr "prefix" "vex") (set_attr "mode" "<sseinsnmode>")]) (define_split @@ -16907,20 +16929,21 @@ (set_attr "mode" "<sseinsnmode>")]) (define_insn "vec_dup<mode>" - [(set (match_operand:AVX_VEC_DUP_MODE 0 "register_operand" "=x,x,v,x") + [(set (match_operand:AVX_VEC_DUP_MODE 0 "register_operand" "=x,x,x,v,x") (vec_duplicate:AVX_VEC_DUP_MODE - (match_operand:<ssescalarmode> 1 "nonimmediate_operand" "m,m,v,?x")))] + (match_operand:<ssescalarmode> 1 "nonimmediate_operand" "m,m,x,v,?x")))] "TARGET_AVX" "@ v<sseintprefix>broadcast<bcstscalarsuff>\t{%1, %0|%0, %1} vbroadcast<ssescalarmodesuffix>\t{%1, %0|%0, %1} v<sseintprefix>broadcast<bcstscalarsuff>\t{%x1, %0|%0, %x1} + v<sseintprefix>broadcast<bcstscalarsuff>\t{%x1, %g0|%g0, %x1} #" [(set_attr "type" "ssemov") (set_attr "prefix_extra" "1") (set_attr "prefix" "maybe_evex") - (set_attr "isa" "avx2,noavx2,avx2,noavx2") - (set_attr "mode" "<sseinsnmode>,V8SF,<sseinsnmode>,V8SF")]) + (set_attr "isa" "avx2,noavx2,avx2,avx512f,noavx2") + (set_attr "mode" "<sseinsnmode>,V8SF,<sseinsnmode>,<sseinsnmode>,V8SF")]) (define_split [(set (match_operand:AVX2_VEC_DUP_MODE 0 "register_operand") diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 9bc735570eb..3c698899e3b 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -1667,38 +1667,60 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) /* Handle secondary reloads for loads/stores of FP registers from REG+D addresses where D does not fit in 5 or 14 bits, including - (subreg (mem (addr))) cases. */ + (subreg (mem (addr))) cases, and reloads for other unsupported + memory operands. */ if (scratch_reg && FP_REG_P (operand0) && (MEM_P (operand1) || (GET_CODE (operand1) == SUBREG && MEM_P (XEXP (operand1, 0))))) { - if (GET_CODE (operand1) == SUBREG) - operand1 = XEXP (operand1, 0); + rtx op1 = operand1; - /* SCRATCH_REG will hold an address and maybe the actual data. We want - it in WORD_MODE regardless of what mode it was originally given - to us. */ - scratch_reg = force_mode (word_mode, scratch_reg); + if (GET_CODE (op1) == SUBREG) + op1 = XEXP (op1, 0); - /* D might not fit in 14 bits either; for such cases load D into - scratch reg. */ - if (reg_plus_base_memory_operand (operand1, GET_MODE (operand1)) - && !INT_14_BITS (XEXP (XEXP (operand1, 0), 1))) + if (reg_plus_base_memory_operand (op1, GET_MODE (op1))) { - emit_move_insn (scratch_reg, XEXP (XEXP (operand1, 0), 1)); - emit_move_insn (scratch_reg, - gen_rtx_fmt_ee (GET_CODE (XEXP (operand1, 0)), - Pmode, - XEXP (XEXP (operand1, 0), 0), - scratch_reg)); + if (!(TARGET_PA_20 + && !TARGET_ELF32 + && INT_14_BITS (XEXP (XEXP (op1, 0), 1))) + && !INT_5_BITS (XEXP (XEXP (op1, 0), 1))) + { + /* SCRATCH_REG will hold an address and maybe the actual data. + We want it in WORD_MODE regardless of what mode it was + originally given to us. */ + scratch_reg = force_mode (word_mode, scratch_reg); + + /* D might not fit in 14 bits either; for such cases load D + into scratch reg. */ + if (!INT_14_BITS (XEXP (XEXP (op1, 0), 1))) + { + emit_move_insn (scratch_reg, XEXP (XEXP (op1, 0), 1)); + emit_move_insn (scratch_reg, + gen_rtx_fmt_ee (GET_CODE (XEXP (op1, 0)), + Pmode, + XEXP (XEXP (op1, 0), 0), + scratch_reg)); + } + else + emit_move_insn (scratch_reg, XEXP (op1, 0)); + emit_insn (gen_rtx_SET (VOIDmode, operand0, + replace_equiv_address (op1, scratch_reg))); + return 1; + } + } + else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode)) + || IS_LO_SUM_DLT_ADDR_P (XEXP (op1, 0)) + || IS_INDEX_ADDR_P (XEXP (op1, 0))) + { + /* Load memory address into SCRATCH_REG. */ + scratch_reg = force_mode (word_mode, scratch_reg); + emit_move_insn (scratch_reg, XEXP (op1, 0)); + emit_insn (gen_rtx_SET (VOIDmode, operand0, + replace_equiv_address (op1, scratch_reg))); + return 1; } - else - emit_move_insn (scratch_reg, XEXP (operand1, 0)); - emit_insn (gen_rtx_SET (VOIDmode, operand0, - replace_equiv_address (operand1, scratch_reg))); - return 1; } else if (scratch_reg && FP_REG_P (operand1) @@ -1706,33 +1728,53 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) || (GET_CODE (operand0) == SUBREG && MEM_P (XEXP (operand0, 0))))) { - if (GET_CODE (operand0) == SUBREG) - operand0 = XEXP (operand0, 0); + rtx op0 = operand0; - /* SCRATCH_REG will hold an address and maybe the actual data. We want - it in WORD_MODE regardless of what mode it was originally given - to us. */ - scratch_reg = force_mode (word_mode, scratch_reg); + if (GET_CODE (op0) == SUBREG) + op0 = XEXP (op0, 0); - /* D might not fit in 14 bits either; for such cases load D into - scratch reg. */ - if (reg_plus_base_memory_operand (operand0, GET_MODE (operand0)) - && !INT_14_BITS (XEXP (XEXP (operand0, 0), 1))) + if (reg_plus_base_memory_operand (op0, GET_MODE (op0))) + { + if (!(TARGET_PA_20 + && !TARGET_ELF32 + && INT_14_BITS (XEXP (XEXP (op0, 0), 1))) + && !INT_5_BITS (XEXP (XEXP (op0, 0), 1))) + { + /* SCRATCH_REG will hold an address and maybe the actual data. + We want it in WORD_MODE regardless of what mode it was + originally given to us. */ + scratch_reg = force_mode (word_mode, scratch_reg); + + /* D might not fit in 14 bits either; for such cases load D + into scratch reg. */ + if (!INT_14_BITS (XEXP (XEXP (op0, 0), 1))) + { + emit_move_insn (scratch_reg, XEXP (XEXP (op0, 0), 1)); + emit_move_insn (scratch_reg, + gen_rtx_fmt_ee (GET_CODE (XEXP (op0, 0)), + Pmode, + XEXP (XEXP (op0, 0), 0), + scratch_reg)); + } + else + emit_move_insn (scratch_reg, XEXP (op0, 0)); + emit_insn (gen_rtx_SET (VOIDmode, + replace_equiv_address (op0, scratch_reg), + operand1)); + return 1; + } + } + else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode)) + || IS_LO_SUM_DLT_ADDR_P (XEXP (op0, 0)) + || IS_INDEX_ADDR_P (XEXP (op0, 0))) { - emit_move_insn (scratch_reg, XEXP (XEXP (operand0, 0), 1)); - emit_move_insn (scratch_reg, gen_rtx_fmt_ee (GET_CODE (XEXP (operand0, - 0)), - Pmode, - XEXP (XEXP (operand0, 0), - 0), - scratch_reg)); + /* Load memory address into SCRATCH_REG. */ + emit_move_insn (scratch_reg, XEXP (op0, 0)); + emit_insn (gen_rtx_SET (VOIDmode, + replace_equiv_address (op0, scratch_reg), + operand1)); + return 1; } - else - emit_move_insn (scratch_reg, XEXP (operand0, 0)); - emit_insn (gen_rtx_SET (VOIDmode, - replace_equiv_address (operand0, scratch_reg), - operand1)); - return 1; } /* Handle secondary reloads for loads of FP registers from constant expressions by forcing the constant into memory. For the most part, @@ -1741,7 +1783,7 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) Use scratch_reg to hold the address of the memory location. */ else if (scratch_reg && CONSTANT_P (operand1) - && fp_reg_operand (operand0, mode)) + && FP_REG_P (operand0)) { rtx const_mem, xoperands[2]; @@ -1786,12 +1828,11 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) scratch_reg = force_mode (word_mode, scratch_reg); emit_move_insn (scratch_reg, XEXP (XEXP (operand1, 0), 1)); - emit_move_insn (scratch_reg, gen_rtx_fmt_ee (GET_CODE (XEXP (operand1, - 0)), - Pmode, - XEXP (XEXP (operand1, 0), - 0), - scratch_reg)); + emit_move_insn (scratch_reg, + gen_rtx_fmt_ee (GET_CODE (XEXP (operand1, 0)), + Pmode, + XEXP (XEXP (operand1, 0), 0), + scratch_reg)); /* Now we are going to load the scratch register from memory, we want to load it in the same width as the original MEM, @@ -1817,8 +1858,9 @@ pa_emit_move_sequence (rtx *operands, machine_mode mode, rtx scratch_reg) emit_move_insn (operand0, scratch_reg); return 1; } + /* Handle the most common case: storing into a register. */ - else if (register_operand (operand0, mode)) + if (register_operand (operand0, mode)) { /* Legitimize TLS symbol references. This happens for references that aren't a legitimate constant. */ diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 271a72e8371..7bcd44175d1 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -692,237 +692,6 @@ (include "predicates.md") (include "constraints.md") -;; Atomic instructions - -;; All memory loads and stores access storage atomically except -;; for one exception. The STORE BYTES, STORE DOUBLE BYTES, and -;; doubleword loads and stores are not guaranteed to be atomic -;; when referencing the I/O address space. - -;; The kernel cmpxchg operation on linux is not atomic with respect to -;; memory stores on SMP machines, so we must do stores using a cmpxchg -;; operation. - -;; Implement atomic QImode store using exchange. - -(define_expand "atomic_storeqi" - [(match_operand:QI 0 "memory_operand") ;; memory - (match_operand:QI 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - FAIL; -}) - -;; Implement atomic HImode stores using exchange. - -(define_expand "atomic_storehi" - [(match_operand:HI 0 "memory_operand") ;; memory - (match_operand:HI 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - FAIL; -}) - -;; Implement atomic SImode store using exchange. - -(define_expand "atomic_storesi" - [(match_operand:SI 0 "memory_operand") ;; memory - (match_operand:SI 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - FAIL; -}) - -;; Implement atomic SFmode store using exchange. - -(define_expand "atomic_storesf" - [(match_operand:SF 0 "memory_operand") ;; memory - (match_operand:SF 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - FAIL; -}) - -;; Implement atomic DImode load using 64-bit floating point load. - -(define_expand "atomic_loaddi" - [(match_operand:DI 0 "register_operand") ;; val out - (match_operand:DI 1 "memory_operand") ;; memory - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - enum memmodel model; - - if (TARGET_64BIT || TARGET_SOFT_FLOAT) - FAIL; - - model = memmodel_from_int (INTVAL (operands[2])); - operands[1] = force_reg (SImode, XEXP (operands[1], 0)); - expand_mem_thread_fence (model); - emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1])); - if (is_mm_seq_cst (model)) - expand_mem_thread_fence (model); - DONE; -}) - -(define_insn "atomic_loaddi_1" - [(set (match_operand:DI 0 "register_operand" "=f,r") - (mem:DI (match_operand:SI 1 "register_operand" "r,r"))) - (clobber (match_scratch:DI 2 "=X,f"))] - "!TARGET_64BIT && !TARGET_SOFT_FLOAT" - "@ - {fldds|fldd} 0(%1),%0 - {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" - [(set_attr "type" "move,move") - (set_attr "length" "4,16")]) - -;; Implement atomic DImode store. - -(define_expand "atomic_storedi" - [(match_operand:DI 0 "memory_operand") ;; memory - (match_operand:DI 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - enum memmodel model; - - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - - if (TARGET_64BIT || TARGET_SOFT_FLOAT) - FAIL; - - model = memmodel_from_int (INTVAL (operands[2])); - operands[0] = force_reg (SImode, XEXP (operands[0], 0)); - expand_mem_thread_fence (model); - emit_insn (gen_atomic_storedi_1 (operands[0], operands[1])); - if (is_mm_seq_cst (model)) - expand_mem_thread_fence (model); - DONE; -}) - -(define_insn "atomic_storedi_1" - [(set (mem:DI (match_operand:SI 0 "register_operand" "r,r")) - (match_operand:DI 1 "register_operand" "f,r")) - (clobber (match_scratch:DI 2 "=X,f"))] - "!TARGET_64BIT && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL" - "@ - {fstds|fstd} %1,0(%0) - {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" - [(set_attr "type" "move,move") - (set_attr "length" "4,16")]) - -;; Implement atomic DFmode load using 64-bit floating point load. - -(define_expand "atomic_loaddf" - [(match_operand:DF 0 "register_operand") ;; val out - (match_operand:DF 1 "memory_operand") ;; memory - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - enum memmodel model; - - if (TARGET_64BIT || TARGET_SOFT_FLOAT) - FAIL; - - model = memmodel_from_int (INTVAL (operands[2])); - operands[1] = force_reg (SImode, XEXP (operands[1], 0)); - expand_mem_thread_fence (model); - emit_insn (gen_atomic_loaddf_1 (operands[0], operands[1])); - if (is_mm_seq_cst (model)) - expand_mem_thread_fence (model); - DONE; -}) - -(define_insn "atomic_loaddf_1" - [(set (match_operand:DF 0 "register_operand" "=f,r") - (mem:DF (match_operand:SI 1 "register_operand" "r,r"))) - (clobber (match_scratch:DF 2 "=X,f"))] - "!TARGET_64BIT && !TARGET_SOFT_FLOAT" - "@ - {fldds|fldd} 0(%1),%0 - {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" - [(set_attr "type" "move,move") - (set_attr "length" "4,16")]) - -;; Implement atomic DFmode store using 64-bit floating point store. - -(define_expand "atomic_storedf" - [(match_operand:DF 0 "memory_operand") ;; memory - (match_operand:DF 1 "register_operand") ;; val out - (match_operand:SI 2 "const_int_operand")] ;; model - "" -{ - enum memmodel model; - - if (TARGET_SYNC_LIBCALL) - { - rtx mem = operands[0]; - rtx val = operands[1]; - if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) - DONE; - } - - if (TARGET_64BIT || TARGET_SOFT_FLOAT) - FAIL; - - model = memmodel_from_int (INTVAL (operands[2])); - operands[0] = force_reg (SImode, XEXP (operands[0], 0)); - expand_mem_thread_fence (model); - emit_insn (gen_atomic_storedf_1 (operands[0], operands[1])); - if (is_mm_seq_cst (model)) - expand_mem_thread_fence (model); - DONE; -}) - -(define_insn "atomic_storedf_1" - [(set (mem:DF (match_operand:SI 0 "register_operand" "r,r")) - (match_operand:DF 1 "register_operand" "f,r")) - (clobber (match_scratch:DF 2 "=X,f"))] - "!TARGET_64BIT && !TARGET_SOFT_FLOAT" - "@ - {fstds|fstd} %1,0(%0) - {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" - [(set_attr "type" "move,move") - (set_attr "length" "4,16")]) - ;; Compare instructions. ;; This controls RTL generation and register allocation. @@ -10006,3 +9775,238 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" "addil LR'%1-$tls_leoff$,%2\;ldo RR'%1-$tls_leoff$(%%r1),%0" [(set_attr "type" "multi") (set_attr "length" "8")]) + +;; Atomic instructions + +;; All memory loads and stores access storage atomically except +;; for one exception. The STORE BYTES, STORE DOUBLE BYTES, and +;; doubleword loads and stores are not guaranteed to be atomic +;; when referencing the I/O address space. + +;; The kernel cmpxchg operation on linux is not atomic with respect to +;; memory stores on SMP machines, so we must do stores using a cmpxchg +;; operation. + +;; These patterns are at the bottom so the non atomic versions are preferred. + +;; Implement atomic QImode store using exchange. + +(define_expand "atomic_storeqi" + [(match_operand:QI 0 "memory_operand") ;; memory + (match_operand:QI 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + FAIL; +}) + +;; Implement atomic HImode stores using exchange. + +(define_expand "atomic_storehi" + [(match_operand:HI 0 "memory_operand") ;; memory + (match_operand:HI 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + FAIL; +}) + +;; Implement atomic SImode store using exchange. + +(define_expand "atomic_storesi" + [(match_operand:SI 0 "memory_operand") ;; memory + (match_operand:SI 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + FAIL; +}) + +;; Implement atomic SFmode store using exchange. + +(define_expand "atomic_storesf" + [(match_operand:SF 0 "memory_operand") ;; memory + (match_operand:SF 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + FAIL; +}) + +;; Implement atomic DImode load using 64-bit floating point load. + +(define_expand "atomic_loaddi" + [(match_operand:DI 0 "register_operand") ;; val out + (match_operand:DI 1 "memory_operand") ;; memory + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + enum memmodel model; + + if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) + FAIL; + + model = memmodel_from_int (INTVAL (operands[2])); + operands[1] = force_reg (SImode, XEXP (operands[1], 0)); + expand_mem_thread_fence (model); + emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) + expand_mem_thread_fence (model); + DONE; +}) + +(define_insn "atomic_loaddi_1" + [(set (match_operand:DI 0 "register_operand" "=f,r") + (mem:DI (match_operand:SI 1 "register_operand" "r,r"))) + (clobber (match_scratch:DI 2 "=X,f"))] + "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT" + "@ + {fldds|fldd} 0(%1),%0 + {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" + [(set_attr "type" "move,move") + (set_attr "length" "4,16")]) + +;; Implement atomic DImode store. + +(define_expand "atomic_storedi" + [(match_operand:DI 0 "memory_operand") ;; memory + (match_operand:DI 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + enum memmodel model; + + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + + if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) + FAIL; + + model = memmodel_from_int (INTVAL (operands[2])); + operands[0] = force_reg (SImode, XEXP (operands[0], 0)); + expand_mem_thread_fence (model); + emit_insn (gen_atomic_storedi_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) + expand_mem_thread_fence (model); + DONE; +}) + +(define_insn "atomic_storedi_1" + [(set (mem:DI (match_operand:SI 0 "register_operand" "r,r")) + (match_operand:DI 1 "register_operand" "f,r")) + (clobber (match_scratch:DI 2 "=X,f"))] + "!TARGET_64BIT && !TARGET_DISABLE_FPREGS + && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL" + "@ + {fstds|fstd} %1,0(%0) + {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" + [(set_attr "type" "move,move") + (set_attr "length" "4,16")]) + +;; Implement atomic DFmode load using 64-bit floating point load. + +(define_expand "atomic_loaddf" + [(match_operand:DF 0 "register_operand") ;; val out + (match_operand:DF 1 "memory_operand") ;; memory + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + enum memmodel model; + + if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) + FAIL; + + model = memmodel_from_int (INTVAL (operands[2])); + operands[1] = force_reg (SImode, XEXP (operands[1], 0)); + expand_mem_thread_fence (model); + emit_insn (gen_atomic_loaddf_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) + expand_mem_thread_fence (model); + DONE; +}) + +(define_insn "atomic_loaddf_1" + [(set (match_operand:DF 0 "register_operand" "=f,r") + (mem:DF (match_operand:SI 1 "register_operand" "r,r"))) + (clobber (match_scratch:DF 2 "=X,f"))] + "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT" + "@ + {fldds|fldd} 0(%1),%0 + {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" + [(set_attr "type" "move,move") + (set_attr "length" "4,16")]) + +;; Implement atomic DFmode store using 64-bit floating point store. + +(define_expand "atomic_storedf" + [(match_operand:DF 0 "memory_operand") ;; memory + (match_operand:DF 1 "register_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" +{ + enum memmodel model; + + if (TARGET_SYNC_LIBCALL) + { + rtx mem = operands[0]; + rtx val = operands[1]; + if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) + DONE; + } + + if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) + FAIL; + + model = memmodel_from_int (INTVAL (operands[2])); + operands[0] = force_reg (SImode, XEXP (operands[0], 0)); + expand_mem_thread_fence (model); + emit_insn (gen_atomic_storedf_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) + expand_mem_thread_fence (model); + DONE; +}) + +(define_insn "atomic_storedf_1" + [(set (mem:DF (match_operand:SI 0 "register_operand" "r,r")) + (match_operand:DF 1 "register_operand" "f,r")) + (clobber (match_scratch:DF 2 "=X,f"))] + "!TARGET_64BIT && !TARGET_DISABLE_FPREGS + && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL" + "@ + {fstds|fstd} %1,0(%0) + {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" + [(set_attr "type" "move,move") + (set_attr "length" "4,16")]) diff --git a/gcc/config/rs6000/freebsd64.h b/gcc/config/rs6000/freebsd64.h index 351ae3c37af..cddb9f77d7c 100644 --- a/gcc/config/rs6000/freebsd64.h +++ b/gcc/config/rs6000/freebsd64.h @@ -167,22 +167,7 @@ extern int dot_symbols; { "link_os_freebsd_spec32", LINK_OS_FREEBSD_SPEC32 }, \ { "link_os_freebsd_spec64", LINK_OS_FREEBSD_SPEC64 }, -#define FREEBSD_DYNAMIC_LINKER32 "/libexec/ld-elf32.so.1" -#define FREEBSD_DYNAMIC_LINKER64 "/libexec/ld-elf.so.1" - -#define LINK_OS_FREEBSD_SPEC_DEF32 "\ - %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \ - %{v:-V} \ - %{assert*} %{R*} %{rpath*} %{defsym*} \ - %{shared:-Bshareable %{h*} %{soname*}} \ - %{!shared: \ - %{!static: \ - %{rdynamic: -export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " FREEBSD_DYNAMIC_LINKER32 "}} \ - %{static:-Bstatic}} \ - %{symbolic:-Bsymbolic}" - -#define LINK_OS_FREEBSD_SPEC_DEF64 "\ +#define LINK_OS_FREEBSD_SPEC_DEF "\ %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \ %{v:-V} \ %{assert*} %{R*} %{rpath*} %{defsym*} \ @@ -190,13 +175,13 @@ extern int dot_symbols; %{!shared: \ %{!static: \ %{rdynamic: -export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " FREEBSD_DYNAMIC_LINKER64 "}} \ + %{!dynamic-linker:-dynamic-linker " FBSD_DYNAMIC_LINKER "}} \ %{static:-Bstatic}} \ %{symbolic:-Bsymbolic}" -#define LINK_OS_FREEBSD_SPEC32 "-melf32ppc_fbsd " LINK_OS_FREEBSD_SPEC_DEF32 +#define LINK_OS_FREEBSD_SPEC32 "-melf32ppc_fbsd " LINK_OS_FREEBSD_SPEC_DEF -#define LINK_OS_FREEBSD_SPEC64 "-melf64ppc_fbsd " LINK_OS_FREEBSD_SPEC_DEF64 +#define LINK_OS_FREEBSD_SPEC64 "-melf64ppc_fbsd " LINK_OS_FREEBSD_SPEC_DEF #undef MULTILIB_DEFAULTS #define MULTILIB_DEFAULTS { "m64" } diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 653c2c94e11..62029ef9c7b 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -121,6 +121,7 @@ %{mcpu=power8: %(asm_cpu_power8)} \ %{mcpu=a2: -ma2} \ %{mcpu=powerpc: -mppc} \ +%{mcpu=powerpc64le: %(asm_cpu_power8)} \ %{mcpu=rs64a: -mppc64} \ %{mcpu=401: -mppc} \ %{mcpu=403: -m403} \ diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md index 66d4acecdb3..8b952064018 100644 --- a/gcc/config/s390/constraints.md +++ b/gcc/config/s390/constraints.md @@ -34,6 +34,8 @@ ;; jm1: constant scalar or vector with all bits set ;; jxx: contiguous bitmask of 0 or 1 in all vector elements ;; jyy: constant consisting of byte chunks being either 0 or 0xff +;; jKK: constant vector with all elements having the same value and +;; matching K constraint ;; t -- Access registers 36 and 37. ;; v -- Vector registers v0-v31. ;; C -- A signed 8-bit constant (-128..127) @@ -108,23 +110,6 @@ "FP_REGS" "Floating point registers") -(define_constraint "j00" - "Zero scalar or vector constant" - (match_test "op == CONST0_RTX (GET_MODE (op))")) - -(define_constraint "jm1" - "All one bit scalar or vector constant" - (match_test "op == CONSTM1_RTX (GET_MODE (op))")) - -(define_constraint "jxx" - "@internal" - (and (match_code "const_vector") - (match_test "s390_contiguous_bitmask_vector_p (op, NULL, NULL)"))) - -(define_constraint "jyy" - "@internal" - (and (match_code "const_vector") - (match_test "s390_bytemask_vector_p (op, NULL)"))) (define_register_constraint "t" "ACCESS_REGS" @@ -402,6 +387,33 @@ (match_test "s390_O_constraint_str ('n', ival)"))) +;; +;; Vector constraints follow. +;; + +(define_constraint "j00" + "Zero scalar or vector constant" + (match_test "op == CONST0_RTX (GET_MODE (op))")) + +(define_constraint "jm1" + "All one bit scalar or vector constant" + (match_test "op == CONSTM1_RTX (GET_MODE (op))")) + +(define_constraint "jxx" + "@internal" + (and (match_code "const_vector") + (match_test "s390_contiguous_bitmask_vector_p (op, NULL, NULL)"))) + +(define_constraint "jyy" + "@internal" + (and (match_code "const_vector") + (match_test "s390_bytemask_vector_p (op, NULL)"))) + +(define_constraint "jKK" + "@internal" + (and (and (match_code "const_vector") + (match_test "s390_const_vec_duplicate_p (op)")) + (match_test "satisfies_constraint_K (XVECEXP (op, 0, 0))"))) ;; diff --git a/gcc/config/s390/predicates.md b/gcc/config/s390/predicates.md index 46619b9b29b..85c22d42b73 100644 --- a/gcc/config/s390/predicates.md +++ b/gcc/config/s390/predicates.md @@ -34,6 +34,11 @@ (and (match_code "const_int, const_double,const_vector") (match_test "op == CONSTM1_RTX (mode)"))) +;; Return true if OP is a 4 bit mask operand +(define_predicate "const_mask_operand" + (and (match_code "const_int") + (match_test "UINTVAL (op) < 16"))) + ;; Return true if OP is constant. (define_special_predicate "consttable_operand" diff --git a/gcc/config/s390/s390-builtin-types.def b/gcc/config/s390/s390-builtin-types.def index 245d5382512..bd3d534cbb2 100644 --- a/gcc/config/s390/s390-builtin-types.def +++ b/gcc/config/s390/s390-builtin-types.def @@ -58,695 +58,698 @@ s390_builtin_types[T4], \ s390_builtin_types[T5], \ s390_builtin_types[T6]) -DEF_TYPE (BT_DBL, B_VX, double_type_node, 0) -DEF_TYPE (BT_DBLCONST, B_VX, double_type_node, 1) -DEF_TYPE (BT_FLT, B_VX, float_type_node, 0) +DEF_TYPE (BT_INT, B_HTM | B_VX, integer_type_node, 0) +DEF_TYPE (BT_VOID, 0, void_type_node, 0) DEF_TYPE (BT_FLTCONST, B_VX, float_type_node, 1) +DEF_TYPE (BT_UINT64, B_HTM, c_uint64_type_node, 0) +DEF_TYPE (BT_FLT, B_VX, float_type_node, 0) +DEF_TYPE (BT_UINT, 0, unsigned_type_node, 0) +DEF_TYPE (BT_VOIDCONST, B_VX, void_type_node, 1) +DEF_TYPE (BT_ULONG, B_VX, long_unsigned_type_node, 0) +DEF_TYPE (BT_USHORTCONST, B_VX, short_unsigned_type_node, 1) +DEF_TYPE (BT_SHORTCONST, B_VX, short_integer_type_node, 1) DEF_TYPE (BT_INTCONST, B_VX, integer_type_node, 1) -DEF_TYPE (BT_INT, B_HTM | B_VX, integer_type_node, 0) -DEF_TYPE (BT_LONGLONGCONST, B_VX, long_long_integer_type_node, 1) -DEF_TYPE (BT_LONGLONG, B_VX, long_long_integer_type_node, 0) -DEF_TYPE (BT_LONG, B_VX, long_integer_type_node, 0) +DEF_TYPE (BT_UCHARCONST, B_VX, unsigned_char_type_node, 1) DEF_TYPE (BT_UCHAR, B_VX, unsigned_char_type_node, 0) -DEF_TYPE (BT_SCHAR, B_VX, signed_char_type_node, 0) DEF_TYPE (BT_SCHARCONST, B_VX, signed_char_type_node, 1) -DEF_TYPE (BT_SHORTCONST, B_VX, short_integer_type_node, 1) DEF_TYPE (BT_SHORT, B_VX, short_integer_type_node, 0) -DEF_TYPE (BT_UINT, 0, unsigned_type_node, 0) -DEF_TYPE (BT_UINT64, B_HTM, c_uint64_type_node, 0) -DEF_TYPE (BT_UCHARCONST, B_VX, unsigned_char_type_node, 1) -DEF_TYPE (BT_UINTCONST, B_VX, unsigned_type_node, 1) +DEF_TYPE (BT_LONG, B_VX, long_integer_type_node, 0) +DEF_TYPE (BT_SCHAR, B_VX, signed_char_type_node, 0) DEF_TYPE (BT_ULONGLONGCONST, B_VX, long_long_unsigned_type_node, 1) -DEF_TYPE (BT_USHORTCONST, B_VX, short_unsigned_type_node, 1) -DEF_TYPE (BT_VOIDCONST, B_VX, void_type_node, 1) -DEF_TYPE (BT_VOID, 0, void_type_node, 0) -DEF_TYPE (BT_ULONG, B_VX, long_unsigned_type_node, 0) -DEF_TYPE (BT_ULONGLONG, B_VX, long_long_unsigned_type_node, 0) DEF_TYPE (BT_USHORT, B_VX, short_unsigned_type_node, 0) -DEF_DISTINCT_TYPE (BT_BCHAR, B_VX, BT_UCHAR) -DEF_DISTINCT_TYPE (BT_BINT, B_VX, BT_UINT) -DEF_DISTINCT_TYPE (BT_BLONGLONG, B_VX, BT_ULONGLONG) -DEF_DISTINCT_TYPE (BT_BSHORT, B_VX, BT_USHORT) -DEF_POINTER_TYPE (BT_DBLPTR, B_VX, BT_DBL) +DEF_TYPE (BT_LONGLONG, B_VX, long_long_integer_type_node, 0) +DEF_TYPE (BT_DBLCONST, B_VX, double_type_node, 1) +DEF_TYPE (BT_ULONGLONG, B_VX, long_long_unsigned_type_node, 0) +DEF_TYPE (BT_DBL, B_VX, double_type_node, 0) +DEF_TYPE (BT_LONGLONGCONST, B_VX, long_long_integer_type_node, 1) +DEF_TYPE (BT_UINTCONST, B_VX, unsigned_type_node, 1) +DEF_VECTOR_TYPE (BT_UV2DI, B_VX, BT_ULONGLONG, 2) +DEF_VECTOR_TYPE (BT_V4SI, B_VX, BT_INT, 4) +DEF_VECTOR_TYPE (BT_V8HI, B_VX, BT_SHORT, 8) +DEF_VECTOR_TYPE (BT_UV4SI, B_VX, BT_UINT, 4) +DEF_VECTOR_TYPE (BT_V16QI, B_VX, BT_SCHAR, 16) +DEF_VECTOR_TYPE (BT_V2DF, B_VX, BT_DBL, 2) +DEF_VECTOR_TYPE (BT_V2DI, B_VX, BT_LONGLONG, 2) +DEF_VECTOR_TYPE (BT_UV8HI, B_VX, BT_USHORT, 8) +DEF_VECTOR_TYPE (BT_UV16QI, B_VX, BT_UCHAR, 16) +DEF_POINTER_TYPE (BT_UCHARPTR, B_VX, BT_UCHAR) DEF_POINTER_TYPE (BT_DBLCONSTPTR, B_VX, BT_DBLCONST) +DEF_POINTER_TYPE (BT_VOIDPTR, B_HTM | B_VX, BT_VOID) DEF_POINTER_TYPE (BT_FLTPTR, B_VX, BT_FLT) -DEF_POINTER_TYPE (BT_FLTCONSTPTR, B_VX, BT_FLTCONST) -DEF_POINTER_TYPE (BT_INTCONSTPTR, B_VX, BT_INTCONST) -DEF_POINTER_TYPE (BT_INTPTR, B_VX, BT_INT) -DEF_POINTER_TYPE (BT_LONGLONGCONSTPTR, B_VX, BT_LONGLONGCONST) -DEF_POINTER_TYPE (BT_LONGLONGPTR, B_VX, BT_LONGLONG) -DEF_POINTER_TYPE (BT_SCHARCONSTPTR, B_VX, BT_SCHARCONST) +DEF_POINTER_TYPE (BT_UINT64PTR, B_HTM, BT_UINT64) DEF_POINTER_TYPE (BT_SCHARPTR, B_VX, BT_SCHAR) -DEF_POINTER_TYPE (BT_SHORTCONSTPTR, B_VX, BT_SHORTCONST) -DEF_POINTER_TYPE (BT_SHORTPTR, B_VX, BT_SHORT) -DEF_POINTER_TYPE (BT_UCHARCONSTPTR, B_VX, BT_UCHARCONST) -DEF_POINTER_TYPE (BT_UCHARPTR, B_VX, BT_UCHAR) -DEF_POINTER_TYPE (BT_UINTPTR, B_VX, BT_UINT) DEF_POINTER_TYPE (BT_UINTCONSTPTR, B_VX, BT_UINTCONST) -DEF_POINTER_TYPE (BT_UINT64PTR, B_HTM, BT_UINT64) DEF_POINTER_TYPE (BT_ULONGLONGCONSTPTR, B_VX, BT_ULONGLONGCONST) -DEF_POINTER_TYPE (BT_ULONGLONGPTR, B_VX, BT_ULONGLONG) +DEF_POINTER_TYPE (BT_LONGLONGCONSTPTR, B_VX, BT_LONGLONGCONST) +DEF_POINTER_TYPE (BT_SHORTPTR, B_VX, BT_SHORT) DEF_POINTER_TYPE (BT_USHORTPTR, B_VX, BT_USHORT) -DEF_POINTER_TYPE (BT_USHORTCONSTPTR, B_VX, BT_USHORTCONST) -DEF_POINTER_TYPE (BT_VOIDPTR, B_HTM | B_VX, BT_VOID) +DEF_POINTER_TYPE (BT_INTPTR, B_VX, BT_INT) +DEF_POINTER_TYPE (BT_INTCONSTPTR, B_VX, BT_INTCONST) +DEF_POINTER_TYPE (BT_LONGLONGPTR, B_VX, BT_LONGLONG) +DEF_POINTER_TYPE (BT_ULONGLONGPTR, B_VX, BT_ULONGLONG) +DEF_POINTER_TYPE (BT_DBLPTR, B_VX, BT_DBL) DEF_POINTER_TYPE (BT_VOIDCONSTPTR, B_VX, BT_VOIDCONST) -DEF_VECTOR_TYPE (BT_V16QI, B_VX, BT_SCHAR, 16) -DEF_VECTOR_TYPE (BT_V2DI, B_VX, BT_LONGLONG, 2) -DEF_VECTOR_TYPE (BT_V2DF, B_VX, BT_DBL, 2) -DEF_VECTOR_TYPE (BT_V4SI, B_VX, BT_INT, 4) -DEF_VECTOR_TYPE (BT_V8HI, B_VX, BT_SHORT, 8) -DEF_VECTOR_TYPE (BT_UV16QI, B_VX, BT_UCHAR, 16) -DEF_VECTOR_TYPE (BT_UV2DI, B_VX, BT_ULONGLONG, 2) -DEF_VECTOR_TYPE (BT_UV4SI, B_VX, BT_UINT, 4) -DEF_VECTOR_TYPE (BT_UV8HI, B_VX, BT_USHORT, 8) +DEF_POINTER_TYPE (BT_USHORTCONSTPTR, B_VX, BT_USHORTCONST) +DEF_POINTER_TYPE (BT_SHORTCONSTPTR, B_VX, BT_SHORTCONST) +DEF_POINTER_TYPE (BT_UCHARCONSTPTR, B_VX, BT_UCHARCONST) +DEF_POINTER_TYPE (BT_FLTCONSTPTR, B_VX, BT_FLTCONST) +DEF_POINTER_TYPE (BT_SCHARCONSTPTR, B_VX, BT_SCHARCONST) +DEF_POINTER_TYPE (BT_UINTPTR, B_VX, BT_UINT) +DEF_DISTINCT_TYPE (BT_BLONGLONG, B_VX, BT_ULONGLONG) +DEF_DISTINCT_TYPE (BT_BINT, B_VX, BT_UINT) +DEF_DISTINCT_TYPE (BT_BSHORT, B_VX, BT_USHORT) +DEF_DISTINCT_TYPE (BT_BCHAR, B_VX, BT_UCHAR) DEF_OPAQUE_VECTOR_TYPE (BT_OV2DI, B_VX, BT_LONGLONG, 2) +DEF_OPAQUE_VECTOR_TYPE (BT_BV16QI, B_VX, BT_BCHAR, 16) DEF_OPAQUE_VECTOR_TYPE (BT_OV4SI, B_VX, BT_INT, 4) DEF_OPAQUE_VECTOR_TYPE (BT_OUV4SI, B_VX, BT_UINT, 4) -DEF_OPAQUE_VECTOR_TYPE (BT_BV16QI, B_VX, BT_BCHAR, 16) -DEF_OPAQUE_VECTOR_TYPE (BT_BV2DI, B_VX, BT_BLONGLONG, 2) DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, B_VX, BT_BINT, 4) +DEF_OPAQUE_VECTOR_TYPE (BT_BV2DI, B_VX, BT_BLONGLONG, 2) DEF_OPAQUE_VECTOR_TYPE (BT_BV8HI, B_VX, BT_BSHORT, 8) -DEF_FN_TYPE_1 (BT_FN_UINT, 0, BT_UINT) DEF_FN_TYPE_1 (BT_FN_INT, B_HTM, BT_INT) -DEF_FN_TYPE_2 (BT_FN_VOID_UINT, 0, BT_VOID, BT_UINT) -DEF_FN_TYPE_2 (BT_FN_VOID_INT, B_HTM, BT_VOID, BT_INT) +DEF_FN_TYPE_1 (BT_FN_UINT, 0, BT_UINT) DEF_FN_TYPE_2 (BT_FN_INT_INT, B_VX, BT_INT, BT_INT) DEF_FN_TYPE_2 (BT_FN_INT_VOIDPTR, B_HTM, BT_INT, BT_VOIDPTR) +DEF_FN_TYPE_2 (BT_FN_OV4SI_INT, B_VX, BT_OV4SI, BT_INT) +DEF_FN_TYPE_2 (BT_FN_OV4SI_INTCONSTPTR, B_VX, BT_OV4SI, BT_INTCONSTPTR) +DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHARCONSTPTR, B_VX, BT_UV16QI, BT_UCHARCONSTPTR) DEF_FN_TYPE_2 (BT_FN_UV16QI_USHORT, B_VX, BT_UV16QI, BT_USHORT) -DEF_FN_TYPE_2 (BT_FN_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI) DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONG, B_VX, BT_UV2DI, BT_ULONGLONG) DEF_FN_TYPE_2 (BT_FN_UV2DI_ULONGLONGCONSTPTR, B_VX, BT_UV2DI, BT_ULONGLONGCONSTPTR) +DEF_FN_TYPE_2 (BT_FN_UV2DI_USHORT, B_VX, BT_UV2DI, BT_USHORT) DEF_FN_TYPE_2 (BT_FN_UV2DI_UV2DI, B_VX, BT_UV2DI, BT_UV2DI) DEF_FN_TYPE_2 (BT_FN_UV2DI_UV4SI, B_VX, BT_UV2DI, BT_UV4SI) -DEF_FN_TYPE_2 (BT_FN_OV4SI_INTCONSTPTR, B_VX, BT_OV4SI, BT_INTCONSTPTR) -DEF_FN_TYPE_2 (BT_FN_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_2 (BT_FN_OV4SI_INT, B_VX, BT_OV4SI, BT_INT) -DEF_FN_TYPE_2 (BT_FN_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_2 (BT_FN_UV4SI_UINT, B_VX, BT_UV4SI, BT_UINT) DEF_FN_TYPE_2 (BT_FN_UV4SI_UINTCONSTPTR, B_VX, BT_UV4SI, BT_UINTCONSTPTR) +DEF_FN_TYPE_2 (BT_FN_UV4SI_USHORT, B_VX, BT_UV4SI, BT_USHORT) +DEF_FN_TYPE_2 (BT_FN_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI) DEF_FN_TYPE_2 (BT_FN_UV4SI_UV8HI, B_VX, BT_UV4SI, BT_UV8HI) -DEF_FN_TYPE_2 (BT_FN_UV4SI_UINT, B_VX, BT_UV4SI, BT_UINT) DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORT, B_VX, BT_UV8HI, BT_USHORT) +DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORTCONSTPTR, B_VX, BT_UV8HI, BT_USHORTCONSTPTR) DEF_FN_TYPE_2 (BT_FN_UV8HI_UV16QI, B_VX, BT_UV8HI, BT_UV16QI) DEF_FN_TYPE_2 (BT_FN_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_2 (BT_FN_UV8HI_USHORTCONSTPTR, B_VX, BT_UV8HI, BT_USHORTCONSTPTR) +DEF_FN_TYPE_2 (BT_FN_V16QI_SCHAR, B_VX, BT_V16QI, BT_SCHAR) DEF_FN_TYPE_2 (BT_FN_V16QI_UCHAR, B_VX, BT_V16QI, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI) +DEF_FN_TYPE_2 (BT_FN_V2DF_DBL, B_VX, BT_V2DF, BT_DBL) +DEF_FN_TYPE_2 (BT_FN_V2DF_FLTCONSTPTR, B_VX, BT_V2DF, BT_FLTCONSTPTR) +DEF_FN_TYPE_2 (BT_FN_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF) +DEF_FN_TYPE_2 (BT_FN_V2DI_SHORT, B_VX, BT_V2DI, BT_SHORT) DEF_FN_TYPE_2 (BT_FN_V2DI_V16QI, B_VX, BT_V2DI, BT_V16QI) DEF_FN_TYPE_2 (BT_FN_V2DI_V2DI, B_VX, BT_V2DI, BT_V2DI) -DEF_FN_TYPE_2 (BT_FN_V2DI_SHORT, B_VX, BT_V2DI, BT_SHORT) -DEF_FN_TYPE_2 (BT_FN_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF) -DEF_FN_TYPE_2 (BT_FN_V2DI_V8HI, B_VX, BT_V2DI, BT_V8HI) -DEF_FN_TYPE_2 (BT_FN_V2DF_FLTCONSTPTR, B_VX, BT_V2DF, BT_FLTCONSTPTR) DEF_FN_TYPE_2 (BT_FN_V2DI_V4SI, B_VX, BT_V2DI, BT_V4SI) -DEF_FN_TYPE_2 (BT_FN_V2DF_DBL, B_VX, BT_V2DF, BT_DBL) -DEF_FN_TYPE_2 (BT_FN_V4SI_V8HI, B_VX, BT_V4SI, BT_V8HI) -DEF_FN_TYPE_2 (BT_FN_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI) +DEF_FN_TYPE_2 (BT_FN_V2DI_V8HI, B_VX, BT_V2DI, BT_V8HI) DEF_FN_TYPE_2 (BT_FN_V4SI_SHORT, B_VX, BT_V4SI, BT_SHORT) +DEF_FN_TYPE_2 (BT_FN_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI) +DEF_FN_TYPE_2 (BT_FN_V4SI_V8HI, B_VX, BT_V4SI, BT_V8HI) +DEF_FN_TYPE_2 (BT_FN_V8HI_SHORT, B_VX, BT_V8HI, BT_SHORT) DEF_FN_TYPE_2 (BT_FN_V8HI_V16QI, B_VX, BT_V8HI, BT_V16QI) DEF_FN_TYPE_2 (BT_FN_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI) -DEF_FN_TYPE_2 (BT_FN_V8HI_SHORT, B_VX, BT_V8HI, BT_SHORT) -DEF_FN_TYPE_3 (BT_FN_INT_V2DI_V2DI, B_VX, BT_INT, BT_V2DI, BT_V2DI) +DEF_FN_TYPE_2 (BT_FN_VOID_INT, B_HTM, BT_VOID, BT_INT) +DEF_FN_TYPE_2 (BT_FN_VOID_UINT, 0, BT_VOID, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_DBL_V2DF_INT, B_VX, BT_DBL, BT_V2DF, BT_INT) +DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_INT, B_VX, BT_INT, BT_OV4SI, BT_INT) DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_OV4SI, B_VX, BT_INT, BT_OV4SI, BT_OV4SI) -DEF_FN_TYPE_3 (BT_FN_INT_V2DF_V2DF, B_VX, BT_INT, BT_V2DF, BT_V2DF) -DEF_FN_TYPE_3 (BT_FN_USHORT_UV8HI_INT, B_VX, BT_USHORT, BT_UV8HI, BT_INT) +DEF_FN_TYPE_3 (BT_FN_INT_UV16QI_UV16QI, B_VX, BT_INT, BT_UV16QI, BT_UV16QI) DEF_FN_TYPE_3 (BT_FN_INT_UV2DI_UV2DI, B_VX, BT_INT, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_3 (BT_FN_ULONGLONG_UV2DI_INT, B_VX, BT_ULONGLONG, BT_UV2DI, BT_INT) DEF_FN_TYPE_3 (BT_FN_INT_UV4SI_UV4SI, B_VX, BT_INT, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_UCHAR_UV16QI_INT, B_VX, BT_UCHAR, BT_UV16QI, BT_INT) DEF_FN_TYPE_3 (BT_FN_INT_UV8HI_UV8HI, B_VX, BT_INT, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_3 (BT_FN_INT_V4SI_V4SI, B_VX, BT_INT, BT_V4SI, BT_V4SI) -DEF_FN_TYPE_3 (BT_FN_INT_UV16QI_UV16QI, B_VX, BT_INT, BT_UV16QI, BT_UV16QI) DEF_FN_TYPE_3 (BT_FN_INT_V16QI_V16QI, B_VX, BT_INT, BT_V16QI, BT_V16QI) -DEF_FN_TYPE_3 (BT_FN_INT_VOIDPTR_INT, B_HTM, BT_INT, BT_VOIDPTR, BT_INT) -DEF_FN_TYPE_3 (BT_FN_DBL_V2DF_INT, B_VX, BT_DBL, BT_V2DF, BT_INT) -DEF_FN_TYPE_3 (BT_FN_VOID_UINT64PTR_UINT64, B_HTM, BT_VOID, BT_UINT64PTR, BT_UINT64) +DEF_FN_TYPE_3 (BT_FN_INT_V2DF_V2DF, B_VX, BT_INT, BT_V2DF, BT_V2DF) +DEF_FN_TYPE_3 (BT_FN_INT_V2DI_V2DI, B_VX, BT_INT, BT_V2DI, BT_V2DI) +DEF_FN_TYPE_3 (BT_FN_INT_V4SI_V4SI, B_VX, BT_INT, BT_V4SI, BT_V4SI) DEF_FN_TYPE_3 (BT_FN_INT_V8HI_V8HI, B_VX, BT_INT, BT_V8HI, BT_V8HI) -DEF_FN_TYPE_3 (BT_FN_UINT_VOIDCONSTPTR_INT, B_VX, BT_UINT, BT_VOIDCONSTPTR, BT_INT) -DEF_FN_TYPE_3 (BT_FN_INT_OV4SI_INT, B_VX, BT_INT, BT_OV4SI, BT_INT) -DEF_FN_TYPE_3 (BT_FN_VOID_V2DF_FLTPTR, B_VX, BT_VOID, BT_V2DF, BT_FLTPTR) +DEF_FN_TYPE_3 (BT_FN_INT_VOIDPTR_INT, B_HTM, BT_INT, BT_VOIDPTR, BT_INT) +DEF_FN_TYPE_3 (BT_FN_OV2DI_LONGLONG_LONGLONG, B_VX, BT_OV2DI, BT_LONGLONG, BT_LONGLONG) +DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_INT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_INT) +DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_UINT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_OV4SI_INT_INT, B_VX, BT_OV4SI, BT_INT, BT_INT) +DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_INTPTR) +DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_UCHAR) +DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_ULONG, B_VX, BT_OV4SI, BT_OV4SI, BT_ULONG) +DEF_FN_TYPE_3 (BT_FN_UCHAR_UV16QI_INT, B_VX, BT_UCHAR, BT_UV16QI, BT_INT) DEF_FN_TYPE_3 (BT_FN_UINT_UV4SI_INT, B_VX, BT_UINT, BT_UV4SI, BT_INT) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI) +DEF_FN_TYPE_3 (BT_FN_UINT_VOIDCONSTPTR_INT, B_VX, BT_UINT, BT_VOIDCONSTPTR, BT_INT) +DEF_FN_TYPE_3 (BT_FN_ULONGLONG_UV2DI_INT, B_VX, BT_ULONGLONG, BT_UV2DI, BT_INT) +DEF_FN_TYPE_3 (BT_FN_USHORT_UV8HI_INT, B_VX, BT_USHORT, BT_UV8HI, BT_INT) DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHARCONSTPTR_USHORT, B_VX, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UV16QI, BT_UCHAR) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV4SI_UV4SI, B_VX, BT_UV16QI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_UCHAR, B_VX, BT_UV16QI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_INT, B_VX, BT_UV16QI, BT_UCHAR, BT_INT) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI, B_VX, BT_UV16QI, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UINT, B_VX, BT_UV16QI, BT_UV16QI, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UCHAR_UCHAR, B_VX, BT_UV16QI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_FN_TYPE_3 (BT_FN_UV2DI_V2DF_INT, B_VX, BT_UV2DI, BT_V2DF, BT_INT) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UCHAR, B_VX, BT_UV16QI, BT_UV16QI, BT_UCHAR) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UINT, B_VX, BT_UV16QI, BT_UV16QI, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI, B_VX, BT_UV16QI, BT_UV2DI, BT_UV2DI) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV4SI_UV4SI, B_VX, BT_UV16QI, BT_UV4SI, BT_UV4SI) +DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI) +DEF_FN_TYPE_3 (BT_FN_UV2DI_UCHAR_UCHAR, B_VX, BT_UV2DI, BT_UCHAR, BT_UCHAR) +DEF_FN_TYPE_3 (BT_FN_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_ULONGLONG, BT_INT) +DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UCHAR, B_VX, BT_UV2DI, BT_UV2DI, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UINT, B_VX, BT_UV2DI, BT_UV2DI, BT_UINT) -DEF_FN_TYPE_3 (BT_FN_OV2DI_LONGLONG_LONGLONG, B_VX, BT_OV2DI, BT_LONGLONG, BT_LONGLONG) DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UCHAR, B_VX, BT_UV2DI, BT_UV2DI, BT_UCHAR) -DEF_FN_TYPE_3 (BT_FN_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_ULONGLONG, BT_INT) -DEF_FN_TYPE_3 (BT_FN_UV2DI_UV8HI_UV8HI, B_VX, BT_UV2DI, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_3 (BT_FN_UV2DI_UCHAR_UCHAR, B_VX, BT_UV2DI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV2DI_UV4SI_UV4SI, B_VX, BT_UV2DI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_OV4SI_INT_INT, B_VX, BT_OV4SI, BT_INT, BT_INT) +DEF_FN_TYPE_3 (BT_FN_UV2DI_UV8HI_UV8HI, B_VX, BT_UV2DI, BT_UV8HI, BT_UV8HI) +DEF_FN_TYPE_3 (BT_FN_UV2DI_V2DF_INT, B_VX, BT_UV2DI, BT_V2DF, BT_INT) +DEF_FN_TYPE_3 (BT_FN_UV4SI_UCHAR_UCHAR, B_VX, BT_UV4SI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV4SI_UINT_INT, B_VX, BT_UV4SI, BT_UINT, BT_INT) -DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UCHAR, B_VX, BT_UV4SI, BT_UV4SI, BT_UCHAR) -DEF_FN_TYPE_3 (BT_FN_UV4SI_UV8HI_UV8HI, B_VX, BT_UV4SI, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_UCHAR) -DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UINT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT) DEF_FN_TYPE_3 (BT_FN_UV4SI_UV16QI_UV16QI, B_VX, BT_UV4SI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_INT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_INT) -DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_UV4SI_UV2DI_UV2DI, B_VX, BT_UV4SI, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_3 (BT_FN_OV4SI_INTCONSTPTR_UINT, B_VX, BT_OV4SI, BT_INTCONSTPTR, BT_UINT) -DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_ULONG, B_VX, BT_OV4SI, BT_OV4SI, BT_ULONG) -DEF_FN_TYPE_3 (BT_FN_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI) -DEF_FN_TYPE_3 (BT_FN_UV4SI_UCHAR_UCHAR, B_VX, BT_UV4SI, BT_UCHAR, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_FN_TYPE_3 (BT_FN_UV8HI_UV4SI_UV4SI, B_VX, BT_UV8HI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_UV8HI_UV16QI_UV16QI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI) +DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UCHAR, B_VX, BT_UV4SI, BT_UV4SI, BT_UCHAR) +DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UINT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI) +DEF_FN_TYPE_3 (BT_FN_UV4SI_UV8HI_UV8HI, B_VX, BT_UV4SI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_3 (BT_FN_UV8HI_UCHAR_UCHAR, B_VX, BT_UV8HI, BT_UCHAR, BT_UCHAR) -DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UCHAR, B_VX, BT_UV8HI, BT_UV8HI, BT_UCHAR) +DEF_FN_TYPE_3 (BT_FN_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_USHORT, BT_INT) +DEF_FN_TYPE_3 (BT_FN_UV8HI_UV16QI_UV16QI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI) +DEF_FN_TYPE_3 (BT_FN_UV8HI_UV4SI_UV4SI, B_VX, BT_UV8HI, BT_UV4SI, BT_UV4SI) DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UCHAR, B_VX, BT_UV8HI, BT_UV8HI, BT_UCHAR) DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UINT, B_VX, BT_UV8HI, BT_UV8HI, BT_UINT) -DEF_FN_TYPE_3 (BT_FN_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_USHORT, BT_INT) -DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI, B_VX, BT_V16QI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_3 (BT_FN_V16QI_UINT_VOIDCONSTPTR, B_VX, BT_V16QI, BT_UINT, BT_VOIDCONSTPTR) -DEF_FN_TYPE_3 (BT_FN_V16QI_V8HI_V8HI, B_VX, BT_V16QI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_3 (BT_FN_V16QI_BV16QI_V16QI, B_VX, BT_V16QI, BT_BV16QI, BT_V16QI) +DEF_FN_TYPE_3 (BT_FN_V16QI_UINT_VOIDCONSTPTR, B_VX, BT_V16QI, BT_UINT, BT_VOIDCONSTPTR) +DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI, B_VX, BT_V16QI, BT_UV16QI, BT_UV16QI) DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI, BT_V16QI) -DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT, B_VX, BT_V2DI, BT_V2DF, BT_INT) -DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF, B_VX, BT_V2DI, BT_V2DF, BT_V2DF) -DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI) -DEF_FN_TYPE_3 (BT_FN_V2DI_UV2DI_UV2DI, B_VX, BT_V2DI, BT_UV2DI, BT_UV2DI) -DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI, B_VX, BT_V2DI, BT_V2DI, BT_V2DI) -DEF_FN_TYPE_3 (BT_FN_V2DF_V2DI_INT, B_VX, BT_V2DF, BT_V2DI, BT_INT) +DEF_FN_TYPE_3 (BT_FN_V16QI_V8HI_V8HI, B_VX, BT_V16QI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_3 (BT_FN_V2DF_DBL_INT, B_VX, BT_V2DF, BT_DBL, BT_INT) DEF_FN_TYPE_3 (BT_FN_V2DF_UV2DI_INT, B_VX, BT_V2DF, BT_UV2DI, BT_INT) +DEF_FN_TYPE_3 (BT_FN_V2DF_UV4SI_INT, B_VX, BT_V2DF, BT_UV4SI, BT_INT) DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF, BT_V2DF) -DEF_FN_TYPE_3 (BT_FN_V2DF_DBL_INT, B_VX, BT_V2DF, BT_DBL, BT_INT) +DEF_FN_TYPE_3 (BT_FN_V2DF_V2DI_INT, B_VX, BT_V2DF, BT_V2DI, BT_INT) DEF_FN_TYPE_3 (BT_FN_V2DI_BV2DI_V2DI, B_VX, BT_V2DI, BT_BV2DI, BT_V2DI) -DEF_FN_TYPE_3 (BT_FN_V2DF_UV4SI_INT, B_VX, BT_V2DF, BT_UV4SI, BT_INT) -DEF_FN_TYPE_3 (BT_FN_V4SI_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI, BT_V4SI) -DEF_FN_TYPE_3 (BT_FN_V4SI_V8HI_V8HI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_3 (BT_FN_V2DI_UV2DI_UV2DI, B_VX, BT_V2DI, BT_UV2DI, BT_UV2DI) +DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT, B_VX, BT_V2DI, BT_V2DF, BT_INT) +DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF, B_VX, BT_V2DI, BT_V2DF, BT_V2DF) +DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI, B_VX, BT_V2DI, BT_V2DI, BT_V2DI) +DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI) +DEF_FN_TYPE_3 (BT_FN_V4SI_BV4SI_V4SI, B_VX, BT_V4SI, BT_BV4SI, BT_V4SI) DEF_FN_TYPE_3 (BT_FN_V4SI_INT_VOIDPTR, B_VX, BT_V4SI, BT_INT, BT_VOIDPTR) -DEF_FN_TYPE_3 (BT_FN_V4SI_V2DI_V2DI, B_VX, BT_V4SI, BT_V2DI, BT_V2DI) DEF_FN_TYPE_3 (BT_FN_V4SI_UV4SI_UV4SI, B_VX, BT_V4SI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_3 (BT_FN_V4SI_BV4SI_V4SI, B_VX, BT_V4SI, BT_BV4SI, BT_V4SI) +DEF_FN_TYPE_3 (BT_FN_V4SI_V2DI_V2DI, B_VX, BT_V4SI, BT_V2DI, BT_V2DI) +DEF_FN_TYPE_3 (BT_FN_V4SI_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI, BT_V4SI) +DEF_FN_TYPE_3 (BT_FN_V4SI_V8HI_V8HI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI) DEF_FN_TYPE_3 (BT_FN_V8HI_BV8HI_V8HI, B_VX, BT_V8HI, BT_BV8HI, BT_V8HI) +DEF_FN_TYPE_3 (BT_FN_V8HI_UV8HI_UV8HI, B_VX, BT_V8HI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_3 (BT_FN_V8HI_V16QI_V16QI, B_VX, BT_V8HI, BT_V16QI, BT_V16QI) DEF_FN_TYPE_3 (BT_FN_V8HI_V4SI_V4SI, B_VX, BT_V8HI, BT_V4SI, BT_V4SI) -DEF_FN_TYPE_3 (BT_FN_V8HI_UV8HI_UV8HI, B_VX, BT_V8HI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI, BT_V8HI) -DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_VOIDPTR_UINT, B_VX, BT_VOID, BT_OV4SI, BT_VOIDPTR, BT_UINT) +DEF_FN_TYPE_3 (BT_FN_VOID_UINT64PTR_UINT64, B_HTM, BT_VOID, BT_UINT64PTR, BT_UINT64) +DEF_FN_TYPE_3 (BT_FN_VOID_V2DF_FLTPTR, B_VX, BT_VOID, BT_V2DF, BT_FLTPTR) DEF_FN_TYPE_4 (BT_FN_INT_OV4SI_OV4SI_INTPTR, B_VX, BT_INT, BT_OV4SI, BT_OV4SI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_VOID_V16QI_UINT_VOIDPTR, B_VX, BT_VOID, BT_V16QI, BT_UINT, BT_VOIDPTR) -DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_INT_VOIDPTR, B_VX, BT_VOID, BT_OV4SI, BT_INT, BT_VOIDPTR) -DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_OV4SI_INT_OV4SI_INT, B_VX, BT_OV4SI, BT_INT, BT_OV4SI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INT, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UCHAR) +DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_ULONGLONG) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UCHAR_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UCHAR, BT_INT) +DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_FN_TYPE_4 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI, B_VX, BT_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI) +DEF_FN_TYPE_4 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, B_VX, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_UV2DI_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV2DI_UV4SI_UV4SI_UV2DI, B_VX, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI) -DEF_FN_TYPE_4 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV2DI_UV2DI_INTPTR, B_VX, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_INT, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INT) -DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_OV4SI_INT_OV4SI_INT, B_VX, BT_OV4SI, BT_INT, BT_OV4SI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UINT_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) -DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_ULONGLONG, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_ULONGLONG) -DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI) +DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) DEF_FN_TYPE_4 (BT_FN_UV4SI_UV8HI_UV8HI_UV4SI, B_VX, BT_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI) -DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UINT_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UINT, BT_INT) -DEF_FN_TYPE_4 (BT_FN_OV4SI_OV4SI_OV4SI_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_UCHAR) +DEF_FN_TYPE_4 (BT_FN_UV8HI_UV16QI_UV16QI_UV8HI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV4SI_UV4SI_INTPTR, B_VX, BT_UV8HI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_USHORT, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) -DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_4 (BT_FN_UV8HI_UV16QI_UV16QI_UV8HI, B_VX, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_USHORT_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_USHORT, BT_INT) -DEF_FN_TYPE_4 (BT_FN_V16QI_V8HI_V8HI_INTPTR, B_VX, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_INTPTR, B_VX, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) DEF_FN_TYPE_4 (BT_FN_V16QI_UV16QI_UV16QI_INTPTR, B_VX, BT_V16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_INTPTR, B_VX, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V16QI_V16QI_V16QI_V16QI, B_VX, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) -DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_INT_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_INT, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_V2DI_V2DI_V2DI_INTPTR, B_VX, BT_V2DI, BT_V2DI, BT_V2DI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V16QI_V8HI_V8HI_INTPTR, B_VX, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_DBL_INT, B_VX, BT_V2DF, BT_V2DF, BT_DBL, BT_INT) DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_UCHAR_UCHAR, B_VX, BT_V2DF, BT_V2DF, BT_UCHAR, BT_UCHAR) -DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_V2DF_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_V2DF, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_V2DI_V4SI_V4SI_V2DI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI) DEF_FN_TYPE_4 (BT_FN_V2DF_V2DF_V2DF_V2DF, B_VX, BT_V2DF, BT_V2DF, BT_V2DF, BT_V2DF) DEF_FN_TYPE_4 (BT_FN_V2DI_UV2DI_UV2DI_INTPTR, B_VX, BT_V2DI, BT_UV2DI, BT_UV2DI, BT_INTPTR) -DEF_FN_TYPE_4 (BT_FN_V4SI_V8HI_V8HI_V4SI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI) +DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_INT_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_INT, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V2DI_V2DF_V2DF_INTPTR, B_VX, BT_V2DI, BT_V2DF, BT_V2DF, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V2DI_V2DI_V2DI_INTPTR, B_VX, BT_V2DI, BT_V2DI, BT_V2DI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V2DI_V4SI_V4SI_V2DI, B_VX, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI) DEF_FN_TYPE_4 (BT_FN_V4SI_UV4SI_UV4SI_INTPTR, B_VX, BT_V4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V4SI_V2DI_V2DI_INTPTR, B_VX, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_INTPTR, B_VX, BT_V4SI, BT_V4SI, BT_V4SI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V4SI_V4SI_V4SI_V4SI, B_VX, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI) -DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_4 (BT_FN_V4SI_V8HI_V8HI_V4SI, B_VX, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI) DEF_FN_TYPE_4 (BT_FN_V8HI_UV8HI_UV8HI_INTPTR, B_VX, BT_V8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V8HI_V16QI_V16QI_V8HI, B_VX, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI) -DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_INTPTR, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_V8HI_V4SI_V4SI_INTPTR, B_VX, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR) -DEF_FN_TYPE_5 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, B_VX, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) -DEF_FN_TYPE_5 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, B_VX, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) -DEF_FN_TYPE_5 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, B_VX, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG) +DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_INTPTR, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR) +DEF_FN_TYPE_4 (BT_FN_V8HI_V8HI_V8HI_V8HI, B_VX, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) +DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_INT_VOIDPTR, B_VX, BT_VOID, BT_OV4SI, BT_INT, BT_VOIDPTR) +DEF_FN_TYPE_4 (BT_FN_VOID_OV4SI_VOIDPTR_UINT, B_VX, BT_VOID, BT_OV4SI, BT_VOIDPTR, BT_UINT) +DEF_FN_TYPE_4 (BT_FN_VOID_V16QI_UINT_VOIDPTR, B_VX, BT_VOID, BT_V16QI, BT_UINT, BT_VOIDPTR) +DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OUV4SI, BT_INTCONSTPTR, BT_UCHAR) +DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR) DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_INT_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR) DEF_FN_TYPE_5 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) -DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) -DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) +DEF_FN_TYPE_5 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI_INT, B_VX, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_INT_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR) -DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OV4SI_OV4SI_INTPTR, B_VX, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_OV4SI, BT_INTPTR) -DEF_FN_TYPE_5 (BT_FN_OV4SI_OV4SI_OUV4SI_INTCONSTPTR_UCHAR, B_VX, BT_OV4SI, BT_OV4SI, BT_OUV4SI, BT_INTCONSTPTR, BT_UCHAR) DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) -DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) +DEF_FN_TYPE_5 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR) +DEF_FN_TYPE_5 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) +DEF_FN_TYPE_5 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, B_VX, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) +DEF_FN_TYPE_5 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, B_VX, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) +DEF_FN_TYPE_5 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, B_VX, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG) DEF_FN_TYPE_6 (BT_FN_UV16QI_UV16QI_UV16QI_UV16QI_INT_INTPTR, B_VX, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT, BT_INTPTR) DEF_FN_TYPE_6 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT_INTPTR, B_VX, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT, BT_INTPTR) DEF_FN_TYPE_6 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT_INTPTR, B_VX, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR) DEF_OV_TYPE (BT_OV_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_UV16QI_V16QI, BT_UV16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_INTPTR, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_UV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_INTPTR, BT_BV16QI, BT_BV16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UCHAR, BT_BV16QI, BT_BV16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV16QI, BT_BV16QI, BT_BV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV4SI, BT_BV16QI, BT_BV16QI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV8HI, BT_BV16QI, BT_BV16QI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV16QI_BV8HI_BV8HI, BT_BV16QI, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI, BT_BV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_INTPTR, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_UV16QI, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_UV16QI_INTPTR, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV16QI_V16QI_V16QI, BT_BV16QI, BT_V16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_BV16QI_V16QI_V16QI_INTPTR, BT_BV16QI, BT_V16QI, BT_V16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_INT, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_UV16QI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_UV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UCHAR, BT_BV2DI, BT_BV2DI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV16QI, BT_BV2DI, BT_BV2DI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_BV2DI, BT_BV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV4SI, BT_BV2DI, BT_BV2DI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV8HI, BT_BV2DI, BT_BV2DI, BT_UV8HI) DEF_OV_TYPE (BT_OV_BV2DI_BV4SI, BT_BV2DI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_UV2DI_V2DI, BT_UV2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV4SI, BT_UV2DI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG, BT_UV2DI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR, BT_UV2DI, BT_ULONGLONGCONSTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_V4SI, BT_UV4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_BV4SI_BV8HI, BT_BV4SI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR, BT_UV4SI, BT_UINTCONSTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UINT, BT_UV4SI, BT_UINT) +DEF_OV_TYPE (BT_OV_BV2DI_UV2DI_UV2DI, BT_BV2DI, BT_UV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_BV2DI_V2DF_V2DF, BT_BV2DI, BT_V2DF, BT_V2DF) +DEF_OV_TYPE (BT_OV_BV2DI_V2DI_V2DI, BT_BV2DI, BT_V2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_BV4SI_BV2DI_BV2DI, BT_BV4SI, BT_BV2DI, BT_BV2DI) DEF_OV_TYPE (BT_OV_BV4SI_BV4SI, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV8HI, BT_UV4SI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR, BT_UV8HI, BT_USHORTCONSTPTR) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_INTPTR, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_UV16QI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_UV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_INTPTR, BT_BV4SI, BT_BV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UCHAR, BT_BV4SI, BT_BV4SI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV16QI, BT_BV4SI, BT_BV4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV4SI, BT_BV4SI, BT_BV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_BV4SI, BT_BV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV8HI, BT_BV4SI, BT_BV4SI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV4SI_BV8HI, BT_BV4SI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI, BT_BV4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_INTPTR, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_UV4SI, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_UV4SI_INTPTR, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV4SI_V4SI_V4SI, BT_BV4SI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_BV4SI_V4SI_V4SI_INTPTR, BT_BV4SI, BT_V4SI, BT_V4SI, BT_INTPTR) DEF_OV_TYPE (BT_OV_BV8HI_BV16QI, BT_BV8HI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_UV8HI_USHORT, BT_UV8HI, BT_USHORT) -DEF_OV_TYPE (BT_OV_UV8HI_V8HI, BT_UV8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_BV8HI_BV4SI_BV4SI, BT_BV8HI, BT_BV4SI, BT_BV4SI) DEF_OV_TYPE (BT_OV_BV8HI_BV8HI, BT_BV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV16QI, BT_UV8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V16QI_SCHAR, BT_V16QI, BT_SCHAR) -DEF_OV_TYPE (BT_OV_V16QI_V16QI, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR, BT_V16QI, BT_SCHARCONSTPTR) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONG, BT_V2DI, BT_LONGLONG) -DEF_OV_TYPE (BT_OV_V2DI_V8HI, BT_V2DI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V2DI_V16QI, BT_V2DI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR, BT_V2DI, BT_LONGLONGCONSTPTR) -DEF_OV_TYPE (BT_OV_V2DI_V2DI, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_V2DI_V4SI, BT_V2DI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V2DF_DBL, BT_V2DF, BT_DBL) -DEF_OV_TYPE (BT_OV_V2DF_V2DF, BT_V2DF, BT_V2DF) -DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR, BT_V2DF, BT_DBLCONSTPTR) -DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR, BT_V4SI, BT_INTCONSTPTR) -DEF_OV_TYPE (BT_OV_V4SI_INT, BT_V4SI, BT_INT) -DEF_OV_TYPE (BT_OV_V4SI_V8HI, BT_V4SI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V8HI_V16QI, BT_V8HI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR, BT_V8HI, BT_SHORTCONSTPTR) -DEF_OV_TYPE (BT_OV_V8HI_V8HI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V8HI_SHORT, BT_V8HI, BT_SHORT) -DEF_OV_TYPE (BT_OV_INT_UV2DI_BV2DI, BT_INT, BT_UV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_INTPTR, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_UV16QI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_UV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_INTPTR, BT_BV8HI, BT_BV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UCHAR, BT_BV8HI, BT_BV8HI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV16QI, BT_BV8HI, BT_BV8HI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV4SI, BT_BV8HI, BT_BV8HI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV8HI, BT_BV8HI, BT_BV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI, BT_BV8HI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_INTPTR, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_UV8HI, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_UV8HI_INTPTR, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_BV8HI_V8HI_V8HI, BT_BV8HI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_BV8HI_V8HI_V8HI_INTPTR, BT_BV8HI, BT_V8HI, BT_V8HI, BT_INTPTR) DEF_OV_TYPE (BT_OV_DBL_V2DF_INT, BT_DBL, BT_V2DF, BT_INT) -DEF_OV_TYPE (BT_OV_INT_V8HI_UV8HI, BT_INT, BT_V8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_INT_BV8HI_BV8HI, BT_INT, BT_BV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_INT_V4SI_UV4SI, BT_INT, BT_V4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UCHAR_UV16QI_INT, BT_UCHAR, BT_UV16QI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_V2DI_UV2DI, BT_INT, BT_V2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_SHORT_V8HI_INT, BT_SHORT, BT_V8HI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_BV8HI_V8HI, BT_INT, BT_BV8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_USHORT_BV8HI_INT, BT_USHORT, BT_BV8HI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_BV8HI_UV8HI, BT_INT, BT_BV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UINT_UV4SI_INT, BT_UINT, BT_UV4SI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_UV8HI_UV8HI, BT_INT, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_LONGLONG_V2DI_INT, BT_LONGLONG, BT_V2DI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_UV8HI_BV8HI, BT_INT, BT_UV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_ULONGLONG_BV2DI_INT, BT_ULONGLONG, BT_BV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_V4SI_V4SI, BT_INT, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_INT_V8HI_BV8HI, BT_INT, BT_V8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_INT_V4SI_BV4SI, BT_INT, BT_V4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_INT_UV16QI_BV16QI, BT_INT, BT_UV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_INT_V2DF_UV2DI, BT_INT, BT_V2DF, BT_UV2DI) +DEF_OV_TYPE (BT_OV_INT_BV16QI_BV16QI, BT_INT, BT_BV16QI, BT_BV16QI) DEF_OV_TYPE (BT_OV_INT_BV16QI_UV16QI, BT_INT, BT_BV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_INT_BV16QI_V16QI, BT_INT, BT_BV16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_INT_BV2DI_BV2DI, BT_INT, BT_BV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_INT_BV2DI_UV2DI, BT_INT, BT_BV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_INT_BV2DI_V2DI, BT_INT, BT_BV2DI, BT_V2DI) DEF_OV_TYPE (BT_OV_INT_BV4SI_BV4SI, BT_INT, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_INT_BV16QI_BV16QI, BT_INT, BT_BV16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_INT_BV4SI_UV4SI, BT_INT, BT_BV4SI, BT_UV4SI) DEF_OV_TYPE (BT_OV_INT_BV4SI_V4SI, BT_INT, BT_BV4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_INT_BV8HI_BV8HI, BT_INT, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_INT_BV8HI_UV8HI, BT_INT, BT_BV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_INT_BV8HI_V8HI, BT_INT, BT_BV8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_INT_UV16QI_BV16QI, BT_INT, BT_UV16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_INT_UV16QI_UV16QI, BT_INT, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_INT_UV2DI_BV2DI, BT_INT, BT_UV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_INT_UV2DI_UV2DI, BT_INT, BT_UV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_INT_UV4SI_BV4SI, BT_INT, BT_UV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_INT_UV4SI_UV4SI, BT_INT, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_INT_UV8HI_BV8HI, BT_INT, BT_UV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_INT_UV8HI_UV8HI, BT_INT, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_INT_V16QI_BV16QI, BT_INT, BT_V16QI, BT_BV16QI) DEF_OV_TYPE (BT_OV_INT_V16QI_UV16QI, BT_INT, BT_V16QI, BT_UV16QI) DEF_OV_TYPE (BT_OV_INT_V16QI_V16QI, BT_INT, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_UCHAR_BV16QI_INT, BT_UCHAR, BT_BV16QI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_BV4SI_UV4SI, BT_INT, BT_BV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_INT_V2DF_UV2DI, BT_INT, BT_V2DF, BT_UV2DI) +DEF_OV_TYPE (BT_OV_INT_V2DF_V2DF, BT_INT, BT_V2DF, BT_V2DF) +DEF_OV_TYPE (BT_OV_INT_V2DI_BV2DI, BT_INT, BT_V2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_INT_V2DI_UV2DI, BT_INT, BT_V2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_INT_V2DI_V2DI, BT_INT, BT_V2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_INT_V4SI_BV4SI, BT_INT, BT_V4SI, BT_BV4SI) DEF_OV_TYPE (BT_OV_INT_V4SI_INT, BT_INT, BT_V4SI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_UV4SI_UV4SI, BT_INT, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_ULONGLONG_UV2DI_INT, BT_ULONGLONG, BT_UV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_UV4SI_BV4SI, BT_INT, BT_UV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_INT_V4SI_UV4SI, BT_INT, BT_V4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_INT_V4SI_V4SI, BT_INT, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_INT_V8HI_BV8HI, BT_INT, BT_V8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_INT_V8HI_UV8HI, BT_INT, BT_V8HI, BT_UV8HI) DEF_OV_TYPE (BT_OV_INT_V8HI_V8HI, BT_INT, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_INT_V2DI_V2DI, BT_INT, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_INT_BV16QI_V16QI, BT_INT, BT_BV16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_INT_V2DI_BV2DI, BT_INT, BT_V2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_LONGLONG_V2DI_INT, BT_LONGLONG, BT_V2DI, BT_INT) DEF_OV_TYPE (BT_OV_SCHAR_V16QI_INT, BT_SCHAR, BT_V16QI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_BV2DI_BV2DI, BT_INT, BT_BV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_SHORT_V8HI_INT, BT_SHORT, BT_V8HI, BT_INT) +DEF_OV_TYPE (BT_OV_UCHAR_BV16QI_INT, BT_UCHAR, BT_BV16QI, BT_INT) +DEF_OV_TYPE (BT_OV_UCHAR_UV16QI_INT, BT_UCHAR, BT_UV16QI, BT_INT) DEF_OV_TYPE (BT_OV_UINT_BV4SI_INT, BT_UINT, BT_BV4SI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_BV2DI_V2DI, BT_INT, BT_BV2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_INT_UV16QI_UV16QI, BT_INT, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_INT_BV2DI_UV2DI, BT_INT, BT_BV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_UINT_UV4SI_INT, BT_UINT, BT_UV4SI, BT_INT) +DEF_OV_TYPE (BT_OV_ULONGLONG_BV2DI_INT, BT_ULONGLONG, BT_BV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_ULONGLONG_UV2DI_INT, BT_ULONGLONG, BT_UV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_USHORT_BV8HI_INT, BT_USHORT, BT_BV8HI, BT_INT) DEF_OV_TYPE (BT_OV_USHORT_UV8HI_INT, BT_USHORT, BT_UV8HI, BT_INT) -DEF_OV_TYPE (BT_OV_INT_V2DF_V2DF, BT_INT, BT_V2DF, BT_V2DF) -DEF_OV_TYPE (BT_OV_INT_V16QI_BV16QI, BT_INT, BT_V16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_INT_UV2DI_UV2DI, BT_INT, BT_UV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_ULONG, BT_UV16QI, BT_UV16QI, BT_ULONG) -DEF_OV_TYPE (BT_OV_BV16QI_BV8HI_BV8HI, BT_BV16QI, BT_BV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV16QI_UV2DI_UV2DI, BT_UV16QI, BT_UV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI) DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI, BT_UV16QI, BT_BV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_V16QI_V16QI, BT_BV16QI, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_BV16QI, BT_UV16QI, BT_UV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR_UINT, BT_UV16QI, BT_UCHARCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI_INTPTR, BT_UV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR) DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_UV16QI, BT_UV16QI, BT_BV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR_USHORT, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT) DEF_OV_TYPE (BT_OV_UV16QI_LONG_UCHARPTR, BT_UV16QI, BT_LONG, BT_UCHARPTR) +DEF_OV_TYPE (BT_OV_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR) +DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR_UINT, BT_UV16QI, BT_UCHARCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR_USHORT, BT_UV16QI, BT_UCHARCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_UV16QI_UCHAR_BV16QI_INT, BT_UV16QI, BT_UCHAR, BT_BV16QI, BT_INT) DEF_OV_TYPE (BT_OV_UV16QI_UCHAR_INT, BT_UV16QI, BT_UCHAR, BT_INT) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV4SI, BT_BV16QI, BT_BV16QI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV16QI_UV8HI_UV8HI, BT_UV16QI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV8HI, BT_BV16QI, BT_BV16QI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UCHAR, BT_BV16QI, BT_BV16QI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_UV16QI, BT_BV16QI, BT_BV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI, BT_BV16QI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_INTPTR, BT_BV16QI, BT_BV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_V16QI, BT_UV16QI, BT_UV16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UCHAR_UV16QI_INT, BT_UV16QI, BT_UCHAR, BT_UV16QI, BT_INT) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_BV16QI, BT_UV16QI, BT_UV16QI, BT_BV16QI) DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UCHAR, BT_UV16QI, BT_UV16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_ULONG, BT_UV16QI, BT_UV16QI, BT_ULONG) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UCHAR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_ULONGLONG, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV4SI, BT_UV16QI, BT_UV16QI, BT_UV4SI) DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV16QI_V8HI_V8HI, BT_UV16QI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_V16QI, BT_UV16QI, BT_UV16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_UV16QI_UV2DI_UV2DI, BT_UV16QI, BT_UV2DI, BT_UV2DI) DEF_OV_TYPE (BT_OV_UV16QI_UV4SI_UV4SI, BT_UV16QI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV4SI_UV4SI, BT_UV2DI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR_USHORT, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_UV16QI_UV8HI_UV8HI, BT_UV16QI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV16QI_UV8HI_UV8HI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV16QI_V16QI, BT_UV16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_UV16QI_V8HI_V8HI, BT_UV16QI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_UV2DI_BV2DI_UV2DI, BT_UV2DI, BT_BV2DI, BT_UV2DI) DEF_OV_TYPE (BT_OV_UV2DI_LONG_ULONGLONGPTR, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV8HI, BT_UV2DI, BT_UV2DI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_BV2DI, BT_UV2DI, BT_UV2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_ULONGLONG, BT_UV2DI, BT_ULONGLONG, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_V2DI, BT_UV2DI, BT_UV2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG, BT_UV2DI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR, BT_UV2DI, BT_ULONGLONGCONSTPTR) DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR_UINT, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV4SI, BT_BV2DI, BT_BV2DI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_BV2DI_V2DI_V2DI, BT_BV2DI, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV16QI, BT_BV2DI, BT_BV2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV2DI_UV2DI_UV2DI, BT_BV2DI, BT_UV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR_USHORT, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_BV2DI_INT, BT_UV2DI, BT_ULONGLONG, BT_BV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_ULONGLONG, BT_INT) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_ULONGLONG, BT_UV2DI, BT_ULONGLONG, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_UV2DI_INT, BT_UV2DI, BT_ULONGLONG, BT_UV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_BV2DI, BT_UV2DI, BT_UV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UCHAR, BT_UV2DI, BT_UV2DI, BT_UCHAR) DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_ULONG, BT_UV2DI, BT_UV2DI, BT_ULONG) -DEF_OV_TYPE (BT_OV_BV2DI_V2DF_V2DF, BT_BV2DI, BT_V2DF, BT_V2DF) -DEF_OV_TYPE (BT_OV_UV2DI_UV8HI_UV8HI, BT_UV2DI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV16QI) DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV8HI, BT_BV2DI, BT_BV2DI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UCHAR, BT_UV2DI, BT_UV2DI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_UV2DI_BV2DI_UV2DI, BT_UV2DI, BT_BV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UCHAR, BT_BV2DI, BT_BV2DI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_BV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONG, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI) DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV4SI, BT_UV2DI, BT_UV2DI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_ULONGLONG, BT_INT) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV8HI, BT_UV4SI, BT_UV4SI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV4SI_V2DI_V2DI, BT_UV4SI, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV8HI, BT_BV4SI, BT_BV4SI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_V4SI, BT_UV4SI, BT_UV4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UCHAR, BT_UV4SI, BT_UV4SI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV8HI, BT_UV2DI, BT_UV2DI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_V2DI, BT_UV2DI, BT_UV2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_UV2DI_UV4SI, BT_UV2DI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV2DI_UV4SI_UV4SI, BT_UV2DI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV2DI_UV4SI_UV4SI_UV2DI, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_UV2DI_UV8HI_UV8HI, BT_UV2DI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV2DI_V2DI, BT_UV2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI, BT_UV4SI, BT_BV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI_INTPTR, BT_UV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_UV4SI, BT_UV4SI, BT_BV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTPTR, BT_UV4SI, BT_LONG, BT_UINTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_UINT, BT_UV4SI, BT_UINT) +DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR, BT_UV4SI, BT_UINTCONSTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR_UINT, BT_UV4SI, BT_UINTCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR_USHORT, BT_UV4SI, BT_UINTCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_UV4SI_UINT_BV4SI_INT, BT_UV4SI, BT_UINT, BT_BV4SI, BT_INT) DEF_OV_TYPE (BT_OV_UV4SI_UINT_INT, BT_UV4SI, BT_UINT, BT_INT) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_INTPTR, BT_BV4SI, BT_BV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_ULONG, BT_UV4SI, BT_UV4SI, BT_ULONG) -DEF_OV_TYPE (BT_OV_BV4SI_BV2DI_BV2DI, BT_BV4SI, BT_BV2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV4SI, BT_BV4SI, BT_BV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_BV4SI, BT_UV4SI, BT_UV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UINT_UV4SI_INT, BT_UV4SI, BT_UINT, BT_UV4SI, BT_INT) +DEF_OV_TYPE (BT_OV_UV4SI_UV16QI_UV16QI, BT_UV4SI, BT_UV16QI, BT_UV16QI) DEF_OV_TYPE (BT_OV_UV4SI_UV2DI_UV2DI, BT_UV4SI, BT_UV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI, BT_BV4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV16QI, BT_UV4SI, BT_UV4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV4SI_UV2DI_UV2DI_INTPTR, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_BV4SI, BT_UV4SI, BT_UV4SI, BT_BV4SI) DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR_USHORT, BT_UV4SI, BT_UINTCONSTPTR, BT_USHORT) -DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI, BT_UV4SI, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UCHAR, BT_BV4SI, BT_BV4SI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_UV4SI_UV16QI_UV16QI, BT_UV4SI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UCHAR, BT_UV4SI, BT_UV4SI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_ULONG, BT_UV4SI, BT_UV4SI, BT_ULONG) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV16QI, BT_UV4SI, BT_UV4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_ULONGLONG, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV16QI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV8HI, BT_UV4SI, BT_UV4SI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_V4SI, BT_UV4SI, BT_UV4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV8HI, BT_UV4SI, BT_UV8HI) DEF_OV_TYPE (BT_OV_UV4SI_UV8HI_UV8HI, BT_UV4SI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTPTR, BT_UV4SI, BT_LONG, BT_UINTPTR) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV16QI, BT_BV4SI, BT_BV4SI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV4SI_V4SI_V4SI, BT_BV4SI, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR_UINT, BT_UV4SI, BT_UINTCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_UV4SI, BT_UV4SI, BT_BV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_V4SI_V4SI, BT_UV8HI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_UV4SI_UV8HI_UV8HI_UV4SI, BT_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV4SI_V2DI_V2DI, BT_UV4SI, BT_V2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_UV4SI_V4SI, BT_UV4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI, BT_UV8HI, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI_INTPTR, BT_UV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_UV8HI, BT_UV8HI, BT_BV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTPTR, BT_UV8HI, BT_LONG, BT_USHORTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_USHORT, BT_UV8HI, BT_USHORT) +DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR, BT_UV8HI, BT_USHORTCONSTPTR) DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR_UINT, BT_UV8HI, BT_USHORTCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_BV8HI_V8HI_V8HI, BT_BV8HI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_BV8HI_BV4SI_BV4SI, BT_BV8HI, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_V8HI, BT_UV8HI, BT_UV8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV4SI_UV4SI, BT_UV8HI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV8HI_USHORT_INT, BT_UV8HI, BT_USHORT, BT_INT) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV16QI, BT_BV8HI, BT_BV8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI, BT_BV8HI, BT_UV8HI, BT_UV8HI) DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR_USHORT, BT_UV8HI, BT_USHORTCONSTPTR, BT_USHORT) -DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTPTR, BT_UV8HI, BT_LONG, BT_USHORTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UCHAR, BT_UV8HI, BT_UV8HI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UCHAR, BT_BV8HI, BT_BV8HI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_INTPTR, BT_BV8HI, BT_BV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV8HI, BT_BV8HI, BT_BV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV16QI, BT_UV8HI, BT_UV8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_BV8HI, BT_UV8HI, BT_UV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_UV4SI, BT_BV8HI, BT_BV8HI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI, BT_UV8HI, BT_BV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_USHORT_BV8HI_INT, BT_UV8HI, BT_USHORT, BT_BV8HI, BT_INT) +DEF_OV_TYPE (BT_OV_UV8HI_USHORT_INT, BT_UV8HI, BT_USHORT, BT_INT) +DEF_OV_TYPE (BT_OV_UV8HI_USHORT_UV8HI_INT, BT_UV8HI, BT_USHORT, BT_UV8HI, BT_INT) +DEF_OV_TYPE (BT_OV_UV8HI_UV16QI, BT_UV8HI, BT_UV16QI) DEF_OV_TYPE (BT_OV_UV8HI_UV16QI_UV16QI, BT_UV8HI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_UV8HI, BT_UV8HI, BT_BV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV16QI_UV16QI_UV8HI, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV4SI_UV4SI, BT_UV8HI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_UV8HI_UV4SI_UV4SI_INTPTR, BT_UV8HI, BT_UV4SI, BT_UV4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_BV8HI, BT_UV8HI, BT_UV8HI, BT_BV8HI) DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UCHAR, BT_UV8HI, BT_UV8HI, BT_UCHAR) DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_ULONG, BT_UV8HI, BT_UV8HI, BT_ULONG) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV16QI, BT_UV8HI, BT_UV8HI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI) DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UCHAR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_ULONGLONG, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV16QI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_V8HI, BT_UV8HI, BT_UV8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_UV8HI_V4SI_V4SI, BT_UV8HI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_UV8HI_V8HI, BT_UV8HI, BT_V8HI) DEF_OV_TYPE (BT_OV_V16QI_BV16QI_V16QI, BT_V16QI, BT_BV16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UCHAR, BT_V16QI, BT_V16QI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_BV16QI, BT_V16QI, BT_V16QI, BT_BV16QI) DEF_OV_TYPE (BT_OV_V16QI_LONG_SCHARPTR, BT_V16QI, BT_LONG, BT_SCHARPTR) +DEF_OV_TYPE (BT_OV_V16QI_SCHAR, BT_V16QI, BT_SCHAR) +DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR, BT_V16QI, BT_SCHARCONSTPTR) DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR_UINT, BT_V16QI, BT_SCHARCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV8HI, BT_V16QI, BT_V16QI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI, BT_V16QI, BT_V16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV4SI, BT_V16QI, BT_V16QI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_ULONG, BT_V16QI, BT_V16QI, BT_ULONG) DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR_USHORT, BT_V16QI, BT_SCHARCONSTPTR, BT_USHORT) DEF_OV_TYPE (BT_OV_V16QI_SCHAR_INT, BT_V16QI, BT_SCHAR, BT_INT) +DEF_OV_TYPE (BT_OV_V16QI_SCHAR_V16QI_INT, BT_V16QI, BT_SCHAR, BT_V16QI, BT_INT) +DEF_OV_TYPE (BT_OV_V16QI_UV16QI_V16QI_V16QI, BT_V16QI, BT_UV16QI, BT_V16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI, BT_V16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_BV16QI, BT_V16QI, BT_V16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UCHAR, BT_V16QI, BT_V16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_ULONG, BT_V16QI, BT_V16QI, BT_ULONG) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI, BT_V16QI, BT_V16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI_UCHAR, BT_V16QI, BT_V16QI, BT_UV16QI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI_UV16QI, BT_V16QI, BT_V16QI, BT_UV16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV4SI, BT_V16QI, BT_V16QI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV8HI, BT_V16QI, BT_V16QI, BT_UV8HI) DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_BV16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_BV16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_INT, BT_V16QI, BT_V16QI, BT_V16QI, BT_INT) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_ULONGLONG, BT_V16QI, BT_V16QI, BT_V16QI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_UV16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) DEF_OV_TYPE (BT_OV_V16QI_V8HI_V8HI, BT_V16QI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UCHAR, BT_V2DI, BT_V2DI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV16QI, BT_V2DI, BT_V2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_USHORT, BT_V2DF, BT_DBLCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_V16QI_V8HI_V8HI_INTPTR, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR) DEF_OV_TYPE (BT_OV_V2DF_BV2DI_V2DF, BT_V2DF, BT_BV2DI, BT_V2DF) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_UCHAR, BT_V2DF, BT_V2DF, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_BV2DI, BT_V2DF, BT_V2DF, BT_BV2DI) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV8HI, BT_V2DI, BT_V2DI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_V2DF_DBL, BT_V2DF, BT_DBL) +DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR, BT_V2DF, BT_DBLCONSTPTR) DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_UINT, BT_V2DF, BT_DBLCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_USHORT, BT_V2DF, BT_DBLCONSTPTR, BT_USHORT) DEF_OV_TYPE (BT_OV_V2DF_DBL_INT, BT_V2DF, BT_DBL, BT_INT) +DEF_OV_TYPE (BT_OV_V2DF_DBL_V2DF_INT, BT_V2DF, BT_DBL, BT_V2DF, BT_INT) +DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLPTR, BT_V2DF, BT_LONG, BT_DBLPTR) +DEF_OV_TYPE (BT_OV_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT) +DEF_OV_TYPE (BT_OV_V2DF_V2DF, BT_V2DF, BT_V2DF) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_BV2DI, BT_V2DF, BT_V2DF, BT_BV2DI) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_UCHAR, BT_V2DF, BT_V2DF, BT_UCHAR) DEF_OV_TYPE (BT_OV_V2DF_V2DF_UV2DI, BT_V2DF, BT_V2DF, BT_UV2DI) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV4SI, BT_V2DI, BT_V2DI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_UV2DI_DBLCONSTPTR_UCHAR, BT_V2DF, BT_V2DF, BT_UV2DI, BT_DBLCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF, BT_V2DF, BT_V2DF, BT_V2DF) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_BV2DI, BT_V2DF, BT_V2DF, BT_V2DF, BT_BV2DI) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_INT, BT_V2DF, BT_V2DF, BT_V2DF, BT_INT) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_ULONGLONG, BT_V2DF, BT_V2DF, BT_V2DF, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_UV16QI, BT_V2DF, BT_V2DF, BT_V2DF, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_UV2DI, BT_V2DF, BT_V2DF, BT_V2DF, BT_UV2DI) DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DI, BT_V2DF, BT_V2DF, BT_V2DI) -DEF_OV_TYPE (BT_OV_V2DI_BV2DI_V2DI, BT_V2DI, BT_BV2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGPTR, BT_V2DI, BT_LONG, BT_LONGLONGPTR) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI, BT_V2DI, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_V2DI_V4SI_V4SI, BT_V2DI, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI, BT_V2DI, BT_V2DI, BT_UV2DI) DEF_OV_TYPE (BT_OV_V2DF_V2DI_INT, BT_V2DF, BT_V2DI, BT_INT) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_INT, BT_V2DI, BT_LONGLONG, BT_INT) +DEF_OV_TYPE (BT_OV_V2DI_BV2DI_V2DI, BT_V2DI, BT_BV2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONG, BT_V2DI, BT_LONGLONG) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR, BT_V2DI, BT_LONGLONGCONSTPTR) DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR_UINT, BT_V2DI, BT_LONGLONGCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR_USHORT, BT_V2DI, BT_LONGLONGCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_INT, BT_V2DI, BT_LONGLONG, BT_INT) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_LONGLONG, BT_V2DI, BT_LONGLONG, BT_LONGLONG) +DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_V2DI_INT, BT_V2DI, BT_LONGLONG, BT_V2DI, BT_INT) +DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGPTR, BT_V2DI, BT_LONG, BT_LONGLONGPTR) +DEF_OV_TYPE (BT_OV_V2DI_V16QI, BT_V2DI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI, BT_V2DI, BT_V2DI) DEF_OV_TYPE (BT_OV_V2DI_V2DI_BV2DI, BT_V2DI, BT_V2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLPTR, BT_V2DF, BT_LONG, BT_DBLPTR) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UCHAR, BT_V2DI, BT_V2DI, BT_UCHAR) DEF_OV_TYPE (BT_OV_V2DI_V2DI_ULONG, BT_V2DI, BT_V2DI, BT_ULONG) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_LONGLONG, BT_V2DI, BT_LONGLONG, BT_LONGLONG) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONGCONSTPTR_USHORT, BT_V2DI, BT_LONGLONGCONSTPTR, BT_USHORT) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF, BT_V2DF, BT_V2DF, BT_V2DF) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV16QI, BT_V2DI, BT_V2DI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI, BT_V2DI, BT_V2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI_LONGLONGCONSTPTR_UCHAR, BT_V2DI, BT_V2DI, BT_UV2DI, BT_LONGLONGCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI_UCHAR, BT_V2DI, BT_V2DI, BT_UV2DI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV4SI, BT_V2DI, BT_V2DI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV8HI, BT_V2DI, BT_V2DI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI, BT_V2DI, BT_V2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_BV2DI, BT_V2DI, BT_V2DI, BT_V2DI, BT_BV2DI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_INT, BT_V2DI, BT_V2DI, BT_V2DI, BT_INT) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_ULONGLONG, BT_V2DI, BT_V2DI, BT_V2DI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_UV16QI, BT_V2DI, BT_V2DI, BT_V2DI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_UV2DI, BT_V2DI, BT_V2DI, BT_V2DI, BT_UV2DI) +DEF_OV_TYPE (BT_OV_V2DI_V4SI, BT_V2DI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V2DI_V4SI_V4SI, BT_V2DI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V2DI_V4SI_V4SI_V2DI, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI) +DEF_OV_TYPE (BT_OV_V2DI_V8HI, BT_V2DI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V4SI_INT, BT_V4SI, BT_INT) +DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR, BT_V4SI, BT_INTCONSTPTR) +DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_UINT, BT_V4SI, BT_INTCONSTPTR, BT_UINT) DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_USHORT, BT_V4SI, BT_INTCONSTPTR, BT_USHORT) -DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI, BT_V4SI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V4SI_INT_INT, BT_V4SI, BT_INT, BT_INT) +DEF_OV_TYPE (BT_OV_V4SI_INT_V4SI_INT, BT_V4SI, BT_INT, BT_V4SI, BT_INT) +DEF_OV_TYPE (BT_OV_V4SI_LONG_INTPTR, BT_V4SI, BT_LONG, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V4SI_UV4SI_V4SI_V4SI, BT_V4SI, BT_UV4SI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI) +DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI_INTPTR, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V4SI_V4SI, BT_V4SI, BT_V4SI) DEF_OV_TYPE (BT_OV_V4SI_V4SI_BV4SI, BT_V4SI, BT_V4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_UINT, BT_V4SI, BT_INTCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV8HI, BT_V4SI, BT_V4SI, BT_UV8HI) DEF_OV_TYPE (BT_OV_V4SI_V4SI_INTPTR, BT_V4SI, BT_V4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UCHAR, BT_V4SI, BT_V4SI, BT_UCHAR) DEF_OV_TYPE (BT_OV_V4SI_V4SI_ULONG, BT_V4SI, BT_V4SI, BT_ULONG) -DEF_OV_TYPE (BT_OV_V4SI_INT_INT, BT_V4SI, BT_INT, BT_INT) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI, BT_V4SI, BT_V4SI, BT_UV4SI) DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV16QI, BT_V4SI, BT_V4SI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V4SI_LONG_INTPTR, BT_V4SI, BT_LONG, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UCHAR, BT_V4SI, BT_V4SI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV8HI, BT_V8HI, BT_V8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_ULONG, BT_V8HI, BT_V8HI, BT_ULONG) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI, BT_V4SI, BT_V4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_INTCONSTPTR_UCHAR, BT_V4SI, BT_V4SI, BT_UV4SI, BT_INTCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_UCHAR, BT_V4SI, BT_V4SI, BT_UV4SI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_UV4SI, BT_V4SI, BT_V4SI, BT_UV4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV8HI, BT_V4SI, BT_V4SI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_BV4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_BV4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_INT, BT_V4SI, BT_V4SI, BT_V4SI, BT_INT) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_INTPTR, BT_V4SI, BT_V4SI, BT_V4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_ULONGLONG, BT_V4SI, BT_V4SI, BT_V4SI, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_UV16QI, BT_V4SI, BT_V4SI, BT_V4SI, BT_UV16QI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_UV4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_UV4SI) +DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V4SI_V8HI, BT_V4SI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI, BT_V4SI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI) DEF_OV_TYPE (BT_OV_V8HI_LONG_SHORTPTR, BT_V8HI, BT_LONG, BT_SHORTPTR) +DEF_OV_TYPE (BT_OV_V8HI_SHORT, BT_V8HI, BT_SHORT) +DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR, BT_V8HI, BT_SHORTCONSTPTR) +DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR_UINT, BT_V8HI, BT_SHORTCONSTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR_USHORT, BT_V8HI, BT_SHORTCONSTPTR, BT_USHORT) +DEF_OV_TYPE (BT_OV_V8HI_SHORT_INT, BT_V8HI, BT_SHORT, BT_INT) +DEF_OV_TYPE (BT_OV_V8HI_SHORT_V8HI_INT, BT_V8HI, BT_SHORT, BT_V8HI, BT_INT) +DEF_OV_TYPE (BT_OV_V8HI_UV8HI_V8HI_V8HI, BT_V8HI, BT_UV8HI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V8HI_V16QI, BT_V8HI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V8HI_V16QI_V16QI, BT_V8HI, BT_V16QI, BT_V16QI) +DEF_OV_TYPE (BT_OV_V8HI_V16QI_V16QI_V8HI, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI) DEF_OV_TYPE (BT_OV_V8HI_V4SI_V4SI, BT_V8HI, BT_V4SI, BT_V4SI) +DEF_OV_TYPE (BT_OV_V8HI_V4SI_V4SI_INTPTR, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V8HI_V8HI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_BV8HI, BT_V8HI, BT_V8HI, BT_BV8HI) DEF_OV_TYPE (BT_OV_V8HI_V8HI_INTPTR, BT_V8HI, BT_V8HI, BT_INTPTR) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_UCHAR, BT_V8HI, BT_V8HI, BT_UCHAR) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_ULONG, BT_V8HI, BT_V8HI, BT_ULONG) DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV16QI, BT_V8HI, BT_V8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI) DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV4SI, BT_V8HI, BT_V8HI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_BV8HI, BT_V8HI, BT_V8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR_UINT, BT_V8HI, BT_SHORTCONSTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_V8HI_SHORT_INT, BT_V8HI, BT_SHORT, BT_INT) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_UCHAR, BT_V8HI, BT_V8HI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR_USHORT, BT_V8HI, BT_SHORTCONSTPTR, BT_USHORT) -DEF_OV_TYPE (BT_OV_V8HI_V16QI_V16QI, BT_V8HI, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_VOID_V2DF_DBLPTR_UINT, BT_VOID, BT_V2DF, BT_DBLPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_UV16QI_UCHARPTR_UINT, BT_VOID, BT_UV16QI, BT_UCHARPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_V4SI_INTPTR_UINT, BT_VOID, BT_V4SI, BT_INTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_UINTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_UINTPTR) -DEF_OV_TYPE (BT_OV_VOID_V4SI_LONG_INTPTR, BT_VOID, BT_V4SI, BT_LONG, BT_INTPTR) -DEF_OV_TYPE (BT_OV_VOID_V2DI_LONG_LONGLONGPTR, BT_VOID, BT_V2DI, BT_LONG, BT_LONGLONGPTR) -DEF_OV_TYPE (BT_OV_VOID_V8HI_SHORTPTR_UINT, BT_VOID, BT_V8HI, BT_SHORTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_V2DF_LONG_DBLPTR, BT_VOID, BT_V2DF, BT_LONG, BT_DBLPTR) -DEF_OV_TYPE (BT_OV_VOID_UV8HI_USHORTPTR_UINT, BT_VOID, BT_UV8HI, BT_USHORTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT, BT_VOID, BT_UV2DI, BT_ULONGLONGPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_UV16QI_LONG_UCHARPTR, BT_VOID, BT_UV16QI, BT_LONG, BT_UCHARPTR) -DEF_OV_TYPE (BT_OV_VOID_UV8HI_LONG_USHORTPTR, BT_VOID, BT_UV8HI, BT_LONG, BT_USHORTPTR) -DEF_OV_TYPE (BT_OV_VOID_UV4SI_UINTPTR_UINT, BT_VOID, BT_UV4SI, BT_UINTPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_V16QI_SCHARPTR_UINT, BT_VOID, BT_V16QI, BT_SCHARPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_VOID_V16QI_LONG_SCHARPTR, BT_VOID, BT_V16QI, BT_LONG, BT_SCHARPTR) -DEF_OV_TYPE (BT_OV_VOID_V8HI_LONG_SHORTPTR, BT_VOID, BT_V8HI, BT_LONG, BT_SHORTPTR) -DEF_OV_TYPE (BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR, BT_VOID, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR) -DEF_OV_TYPE (BT_OV_VOID_V2DI_LONGLONGPTR_UINT, BT_VOID, BT_V2DI, BT_LONGLONGPTR, BT_UINT) -DEF_OV_TYPE (BT_OV_UV16QI_UV8HI_UV8HI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UCHAR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_ULONGLONG, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_INT, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INT) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_UV16QI, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_UCHAR_UV16QI_INT, BT_UV16QI, BT_UCHAR, BT_UV16QI, BT_INT) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_UV16QI, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI_INTPTR, BT_UV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_BV16QI_BV16QI_BV16QI_INTPTR, BT_BV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_INTPTR, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV16QI_V16QI_V16QI_INTPTR, BT_BV16QI, BT_V16QI, BT_V16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV16QI_UCHAR_BV16QI_INT, BT_UV16QI, BT_UCHAR, BT_BV16QI, BT_INT) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONG, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_UV2DI_INT, BT_UV2DI, BT_ULONGLONG, BT_UV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_INT, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV4SI_UV4SI_UV2DI, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_BV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_UV16QI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_UV2DI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_BV2DI_UV16QI, BT_BV2DI, BT_BV2DI, BT_BV2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG_BV2DI_INT, BT_UV2DI, BT_ULONGLONG, BT_BV2DI, BT_INT) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV8HI_UV8HI_UV4SI, BT_UV4SI, BT_UV8HI, BT_UV8HI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_BV4SI_V4SI_V4SI_INTPTR, BT_BV4SI, BT_V4SI, BT_V4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_INTPTR, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UINT_UV4SI_INT, BT_UV4SI, BT_UINT, BT_UV4SI, BT_INT) -DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_INTPTR, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV2DI_UV2DI_INTPTR, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI_INTPTR, BT_UV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV16QI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_UV4SI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_UV4SI, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UINT_BV4SI_INT, BT_UV4SI, BT_UINT, BT_BV4SI, BT_INT) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_BV4SI_UV16QI, BT_BV4SI, BT_BV4SI, BT_BV4SI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_ULONGLONG, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_UV8HI, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_INTPTR, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_UV4SI_UV4SI_INTPTR, BT_UV8HI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_UV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV16QI_UV16QI_UV8HI, BT_UV8HI, BT_UV16QI, BT_UV16QI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV16QI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_BV8HI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_ULONGLONG, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV8HI_USHORT_BV8HI_INT, BT_UV8HI, BT_USHORT, BT_BV8HI, BT_INT) -DEF_OV_TYPE (BT_OV_BV8HI_V8HI_V8HI_INTPTR, BT_BV8HI, BT_V8HI, BT_V8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) -DEF_OV_TYPE (BT_OV_BV8HI_BV8HI_BV8HI_UV16QI, BT_BV8HI, BT_BV8HI, BT_BV8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UCHAR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_INTPTR, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI_INTPTR, BT_UV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_USHORT_UV8HI_INT, BT_UV8HI, BT_USHORT, BT_UV8HI, BT_INT) -DEF_OV_TYPE (BT_OV_V16QI_SCHAR_V16QI_INT, BT_V16QI, BT_SCHAR, BT_V16QI, BT_INT) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_BV16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_BV16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V16QI_UV16QI_V16QI_V16QI, BT_V16QI, BT_UV16QI, BT_V16QI, BT_V16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_ULONGLONG, BT_V16QI, BT_V16QI, BT_V16QI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_V16QI_V8HI_V8HI_INTPTR, BT_V16QI, BT_V8HI, BT_V8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI_UCHAR, BT_V16QI, BT_V16QI, BT_UV16QI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_UV16QI_UV16QI, BT_V16QI, BT_V16QI, BT_UV16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_INT, BT_V16QI, BT_V16QI, BT_V16QI, BT_INT) -DEF_OV_TYPE (BT_OV_V16QI_V16QI_V16QI_UV16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI_UCHAR, BT_V2DI, BT_V2DI, BT_UV2DI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_INT, BT_V2DI, BT_V2DI, BT_V2DI, BT_INT) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_ULONGLONG, BT_V2DF, BT_V2DF, BT_V2DF, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_UV16QI, BT_V2DI, BT_V2DI, BT_V2DI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_INT, BT_V2DF, BT_V2DF, BT_V2DF, BT_INT) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_UV2DI, BT_V2DI, BT_V2DI, BT_V2DI, BT_UV2DI) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_UV16QI, BT_V2DF, BT_V2DF, BT_V2DF, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_ULONGLONG, BT_V2DI, BT_V2DI, BT_V2DI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_V2DF_DBL_V2DF_INT, BT_V2DF, BT_DBL, BT_V2DF, BT_INT) -DEF_OV_TYPE (BT_OV_V2DI_V4SI_V4SI_V2DI, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI) -DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_V2DI_INT, BT_V2DI, BT_LONGLONG, BT_V2DI, BT_INT) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_V2DI_BV2DI, BT_V2DI, BT_V2DI, BT_V2DI, BT_BV2DI) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_UV2DI, BT_V2DF, BT_V2DF, BT_V2DF, BT_UV2DI) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_V2DF_BV2DI, BT_V2DF, BT_V2DF, BT_V2DF, BT_BV2DI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_BV4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_BV4SI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_UV16QI, BT_V4SI, BT_V4SI, BT_V4SI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_INT, BT_V4SI, BT_V4SI, BT_V4SI, BT_INT) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_UV4SI, BT_V4SI, BT_V4SI, BT_UV4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_ULONGLONG, BT_V4SI, BT_V4SI, BT_V4SI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_UCHAR, BT_V4SI, BT_V4SI, BT_UV4SI, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V4SI_UV4SI_V4SI_V4SI, BT_V4SI, BT_UV4SI, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI) -DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI_INTPTR, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_UV4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_UV4SI) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_V4SI_INTPTR, BT_V4SI, BT_V4SI, BT_V4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V4SI_INT_V4SI_INT, BT_V4SI, BT_INT, BT_V4SI, BT_INT) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_INT, BT_V8HI, BT_V8HI, BT_V8HI, BT_INT) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV8HI, BT_V8HI, BT_V8HI, BT_UV8HI) DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV8HI_UCHAR, BT_V8HI, BT_V8HI, BT_UV8HI, BT_UCHAR) DEF_OV_TYPE (BT_OV_V8HI_V8HI_UV8HI_UV8HI, BT_V8HI, BT_V8HI, BT_UV8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_UV8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_UV8HI) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_INTPTR, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V8HI_UV8HI_V8HI_V8HI, BT_V8HI, BT_UV8HI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V8HI_V16QI_V16QI_V8HI, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_BV8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_BV8HI) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_INT, BT_V8HI, BT_V8HI, BT_V8HI, BT_INT) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_INTPTR, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR) DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_ULONGLONG, BT_V8HI, BT_V8HI, BT_V8HI, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_V8HI_SHORT_V8HI_INT, BT_V8HI, BT_SHORT, BT_V8HI, BT_INT) -DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) -DEF_OV_TYPE (BT_OV_V8HI_V4SI_V4SI_INTPTR, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR) DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_UV16QI, BT_V8HI, BT_V8HI, BT_V8HI, BT_UV16QI) -DEF_OV_TYPE (BT_OV_VOID_V2DF_UV2DI_DBLPTR_ULONGLONG, BT_VOID, BT_V2DF, BT_UV2DI, BT_DBLPTR, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_VOID_V4SI_UV4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, BT_UV4SI, BT_INTPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_UV8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_UV8HI) +DEF_OV_TYPE (BT_OV_V8HI_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI) +DEF_OV_TYPE (BT_OV_VOID_BV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_BV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_BV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_BV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_UV16QI_LONG_UCHARPTR, BT_VOID, BT_UV16QI, BT_LONG, BT_UCHARPTR) +DEF_OV_TYPE (BT_OV_VOID_UV16QI_UCHARPTR_UINT, BT_VOID, BT_UV16QI, BT_UCHARPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR, BT_VOID, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR) +DEF_OV_TYPE (BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT, BT_VOID, BT_UV2DI, BT_ULONGLONGPTR, BT_UINT) DEF_OV_TYPE (BT_OV_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_UINTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_UINTPTR) +DEF_OV_TYPE (BT_OV_VOID_UV4SI_UINTPTR_UINT, BT_VOID, BT_UV4SI, BT_UINTPTR, BT_UINT) DEF_OV_TYPE (BT_OV_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_VOID_BV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_BV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_UV8HI_LONG_USHORTPTR, BT_VOID, BT_UV8HI, BT_LONG, BT_USHORTPTR) +DEF_OV_TYPE (BT_OV_VOID_UV8HI_USHORTPTR_UINT, BT_VOID, BT_UV8HI, BT_USHORTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_V16QI_LONG_SCHARPTR, BT_VOID, BT_V16QI, BT_LONG, BT_SCHARPTR) +DEF_OV_TYPE (BT_OV_VOID_V16QI_SCHARPTR_UINT, BT_VOID, BT_V16QI, BT_SCHARPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_V2DF_DBLPTR_UINT, BT_VOID, BT_V2DF, BT_DBLPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_V2DF_LONG_DBLPTR, BT_VOID, BT_V2DF, BT_LONG, BT_DBLPTR) +DEF_OV_TYPE (BT_OV_VOID_V2DF_UV2DI_DBLPTR_ULONGLONG, BT_VOID, BT_V2DF, BT_UV2DI, BT_DBLPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_V2DI_LONGLONGPTR_UINT, BT_VOID, BT_V2DI, BT_LONGLONGPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_V2DI_LONG_LONGLONGPTR, BT_VOID, BT_V2DI, BT_LONG, BT_LONGLONGPTR) DEF_OV_TYPE (BT_OV_VOID_V2DI_UV2DI_LONGLONGPTR_ULONGLONG, BT_VOID, BT_V2DI, BT_UV2DI, BT_LONGLONGPTR, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_VOID_BV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_BV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) -DEF_OV_TYPE (BT_OV_UV16QI_UV16QI_UV16QI_UV16QI_INTPTR, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV16QI_UV16QI_UV16QI_UV16QI_INTPTR, BT_BV16QI, BT_UV16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_BV2DI_BV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_BV2DI, BT_BV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_UV2DI_UV2DI_UV2DI_ULONGLONGCONSTPTR_UCHAR, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_ULONGLONGCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV4SI_BV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_BV4SI, BT_BV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV4SI_UV4SI_UV4SI_UV4SI_INTPTR, BT_BV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UV4SI_INTPTR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UINTCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_BV8HI_UV8HI_UV8HI_UV8HI_INTPTR, BT_BV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_UV8HI_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) -DEF_OV_TYPE (BT_OV_V2DI_V2DI_UV2DI_LONGLONGCONSTPTR_UCHAR, BT_V2DI, BT_V2DI, BT_UV2DI, BT_LONGLONGCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V2DF_V2DF_UV2DI_DBLCONSTPTR_UCHAR, BT_V2DF, BT_V2DF, BT_UV2DI, BT_DBLCONSTPTR, BT_UCHAR) -DEF_OV_TYPE (BT_OV_V4SI_V4SI_UV4SI_INTCONSTPTR_UCHAR, BT_V4SI, BT_V4SI, BT_UV4SI, BT_INTCONSTPTR, BT_UCHAR) +DEF_OV_TYPE (BT_OV_VOID_V4SI_INTPTR_UINT, BT_VOID, BT_V4SI, BT_INTPTR, BT_UINT) +DEF_OV_TYPE (BT_OV_VOID_V4SI_LONG_INTPTR, BT_VOID, BT_V4SI, BT_LONG, BT_INTPTR) +DEF_OV_TYPE (BT_OV_VOID_V4SI_UV4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, BT_UV4SI, BT_INTPTR, BT_ULONGLONG) +DEF_OV_TYPE (BT_OV_VOID_V8HI_LONG_SHORTPTR, BT_VOID, BT_V8HI, BT_LONG, BT_SHORTPTR) +DEF_OV_TYPE (BT_OV_VOID_V8HI_SHORTPTR_UINT, BT_VOID, BT_V8HI, BT_SHORTPTR, BT_UINT) diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def index b267b04e2a7..b0a86e97999 100644 --- a/gcc/config/s390/s390-builtins.def +++ b/gcc/config/s390/s390-builtins.def @@ -362,6 +362,15 @@ B_DEF (s390_vrepih, vec_splatsv8hi, 0, B_DEF (s390_vrepif, vec_splatsv4si, 0, B_VX, O1_S16, BT_FN_V4SI_SHORT) B_DEF (s390_vrepig, vec_splatsv2di, 0, B_VX, O1_S16, BT_FN_V2DI_SHORT) +B_DEF (s390_vec_splat_u8, vec_splatsv16qi, 0, B_VX, O1_U8, BT_FN_UV16QI_UCHAR) +B_DEF (s390_vec_splat_s8, vec_splatsv16qi, 0, B_VX, O1_S8, BT_FN_V16QI_SCHAR) +B_DEF (s390_vec_splat_u16, vec_splatsv8hi, 0, B_VX, O1_U16, BT_FN_UV8HI_USHORT) +B_DEF (s390_vec_splat_s16, vec_splatsv8hi, 0, B_VX, O1_S16, BT_FN_V8HI_SHORT) +B_DEF (s390_vec_splat_u32, vec_splatsv4si, 0, B_VX, O1_U16, BT_FN_UV4SI_USHORT) +B_DEF (s390_vec_splat_s32, vec_splatsv4si, 0, B_VX, O1_S16, BT_FN_V4SI_SHORT) +B_DEF (s390_vec_splat_u64, vec_splatsv2di, 0, B_VX, O1_U16, BT_FN_UV2DI_USHORT) +B_DEF (s390_vec_splat_s64, vec_splatsv2di, 0, B_VX, O1_S16, BT_FN_V2DI_SHORT) + OB_DEF (s390_vec_insert, s390_vec_insert_s8, s390_vec_insert_dbl,B_VX, BT_FN_OV4SI_INT_OV4SI_INT) OB_DEF_VAR (s390_vec_insert_s8, s390_vlvgb, O3_ELEM, BT_OV_V16QI_SCHAR_V16QI_INT) OB_DEF_VAR (s390_vec_insert_u8, s390_vlvgb, O3_ELEM, BT_OV_UV16QI_UCHAR_UV16QI_INT) @@ -2461,15 +2470,15 @@ OB_DEF (s390_vec_ctd, s390_vec_ctd_s64, s390_vec_ctd_u64, OB_DEF_VAR (s390_vec_ctd_s64, s390_vec_ctd_s64, O2_U5, BT_OV_V2DF_V2DI_INT) /* vcdgb */ OB_DEF_VAR (s390_vec_ctd_u64, s390_vec_ctd_u64, O2_U5, BT_OV_V2DF_UV2DI_INT) /* vcdlgb */ -B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, B_VX, O2_U5, BT_FN_V2DF_V2DI_INT) /* vcdgb */ -B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, B_VX, O2_U5, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */ -B_DEF (s390_vcdgb, vec_di_to_df_s64, 0, B_VX, O2_U5, BT_FN_V2DF_V2DI_INT) -B_DEF (s390_vcdlgb, vec_di_to_df_u64, 0, B_VX, O2_U5, BT_FN_V2DF_UV2DI_INT) -B_DEF (s390_vec_ctsl, vec_ctsl, 0, B_VX, O2_U5, BT_FN_V2DI_V2DF_INT) /* vcgdb */ -B_DEF (s390_vec_ctul, vec_ctul, 0, B_VX, O2_U5, BT_FN_UV2DI_V2DF_INT) /* vclgdb */ -B_DEF (s390_vcgdb, vec_df_to_di_s64, 0, B_VX, O2_U5, BT_FN_V2DI_V2DF_INT) -B_DEF (s390_vclgdb, vec_df_to_di_u64, 0, B_VX, O2_U5, BT_FN_UV2DI_V2DF_INT) -B_DEF (s390_vfidb, vfidb, 0, B_VX, O2_U4 | O3_U4, BT_FN_V2DF_V2DF_UCHAR_UCHAR) +B_DEF (s390_vec_ctd_s64, vec_ctd_s64, 0, B_VX, O2_U3, BT_FN_V2DF_V2DI_INT) /* vcdgb */ +B_DEF (s390_vec_ctd_u64, vec_ctd_u64, 0, B_VX, O2_U3, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */ +B_DEF (s390_vcdgb, vec_di_to_df_s64, 0, B_VX, O2_U3, BT_FN_V2DF_V2DI_INT) /* vcdgb */ +B_DEF (s390_vcdlgb, vec_di_to_df_u64, 0, B_VX, O2_U3, BT_FN_V2DF_UV2DI_INT) /* vcdlgb */ +B_DEF (s390_vec_ctsl, vec_ctsl, 0, B_VX, O2_U3, BT_FN_V2DI_V2DF_INT) /* vcgdb */ +B_DEF (s390_vec_ctul, vec_ctul, 0, B_VX, O2_U3, BT_FN_UV2DI_V2DF_INT) /* vclgdb */ +B_DEF (s390_vcgdb, vec_df_to_di_s64, 0, B_VX, O2_U3, BT_FN_V2DI_V2DF_INT) /* vcgdb */ +B_DEF (s390_vclgdb, vec_df_to_di_u64, 0, B_VX, O2_U3, BT_FN_UV2DI_V2DF_INT) /* vclgdb */ +B_DEF (s390_vfidb, vfidb, 0, B_VX, O2_U4 | O3_U3, BT_FN_V2DF_V2DF_UCHAR_UCHAR) B_DEF (s390_vec_ld2f, vec_ld2f, 0, B_VX, 0, BT_FN_V2DF_FLTCONSTPTR) /* vldeb */ B_DEF (s390_vec_st2f, vec_st2f, 0, B_VX, 0, BT_FN_VOID_V2DF_FLTPTR) /* vledb */ B_DEF (s390_vfmadb, fmav2df4, 0, B_VX, 0, BT_FN_V2DF_V2DF_V2DF_V2DF) diff --git a/gcc/config/s390/s390-c.c b/gcc/config/s390/s390-c.c index a55ac952997..c1eefe4e7b8 100644 --- a/gcc/config/s390/s390-c.c +++ b/gcc/config/s390/s390-c.c @@ -427,22 +427,14 @@ s390_get_vstring_flags (int ob_fcode) switch (ob_fcode) { - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq_or_0_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne_or_0_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq_or_0_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne_or_0_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_cmprg_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_cmprg_or_0_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg_or_0_idx: - case S390_OVERLOADED_BUILTIN_s390_vec_cmprg_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_cmprg_or_0_idx_cc: - case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg_or_0_idx_cc: + case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq: + case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne: + case S390_OVERLOADED_BUILTIN_s390_vec_find_any_eq_cc: + case S390_OVERLOADED_BUILTIN_s390_vec_find_any_ne_cc: + case S390_OVERLOADED_BUILTIN_s390_vec_cmprg: + case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg: + case S390_OVERLOADED_BUILTIN_s390_vec_cmprg_cc: + case S390_OVERLOADED_BUILTIN_s390_vec_cmpnrg_cc: flags |= __VSTRING_FLAG_RT; break; default: diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h index a8b885476dd..62e17729151 100644 --- a/gcc/config/s390/s390-protos.h +++ b/gcc/config/s390/s390-protos.h @@ -124,6 +124,8 @@ extern int s390_compare_and_branch_condition_mask (rtx); extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT); extern void s390_asm_output_function_label (FILE *, const char *, tree); +extern bool s390_const_vec_duplicate_p (rtx); + #endif /* RTX_CODE */ /* s390-c.c routines */ diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index ba2a151b931..5a02d5ee06b 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -101,6 +101,7 @@ along with GCC; see the file COPYING3. If not see #include "plugin-api.h" #include "ipa-ref.h" #include "cgraph.h" +#include "tm-constrs.h" /* Define the specific costs for a given cpu. */ @@ -858,6 +859,15 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, insn_op = &insn_data[icode].operand[arity + nonvoid]; op[arity] = expand_expr (arg, NULL_RTX, insn_op->mode, EXPAND_NORMAL); + /* expand_expr truncates constants to the target mode only if it + is "convenient". However, our checks below rely on this + being done. */ + if (CONST_INT_P (op[arity]) + && SCALAR_INT_MODE_P (insn_op->mode) + && GET_MODE (op[arity]) != insn_op->mode) + op[arity] = GEN_INT (trunc_int_for_mode (INTVAL (op[arity]), + insn_op->mode)); + /* Wrap the expanded RTX for pointer types into a MEM expr with the proper mode. This allows us to use e.g. (match_operand "memory_operand"..) in the insn patterns instead of (mem @@ -2266,6 +2276,24 @@ s390_contiguous_bitmask_p (unsigned HOST_WIDE_INT in, int size, return true; } +bool +s390_const_vec_duplicate_p (rtx op) +{ + if (!VECTOR_MODE_P (GET_MODE (op)) + || GET_CODE (op) != CONST_VECTOR + || !CONST_INT_P (XVECEXP (op, 0, 0))) + return false; + + if (GET_MODE_NUNITS (GET_MODE (op)) > 1) + { + int i; + + for (i = 1; i < GET_MODE_NUNITS (GET_MODE (op)); ++i) + if (!rtx_equal_p (XVECEXP (op, 0, i), XVECEXP (op, 0, 0))) + return false; + } + return true; +} /* Return true if OP contains the same contiguous bitfield in *all* its elements. START and END can be used to obtain the start and end position of the bitfield. @@ -2281,20 +2309,9 @@ s390_contiguous_bitmask_vector_p (rtx op, int *start, int *end) unsigned HOST_WIDE_INT mask; int length, size; - if (!VECTOR_MODE_P (GET_MODE (op)) - || GET_CODE (op) != CONST_VECTOR - || !CONST_INT_P (XVECEXP (op, 0, 0))) + if (!s390_const_vec_duplicate_p (op)) return false; - if (GET_MODE_NUNITS (GET_MODE (op)) > 1) - { - int i; - - for (i = 1; i < GET_MODE_NUNITS (GET_MODE (op)); ++i) - if (!rtx_equal_p (XVECEXP (op, 0, i), XVECEXP (op, 0, 0))) - return false; - } - size = GET_MODE_UNIT_BITSIZE (GET_MODE (op)); mask = UINTVAL (XVECEXP (op, 0, 0)); if (s390_contiguous_bitmask_p (mask, size, start, @@ -3657,9 +3674,11 @@ s390_legitimate_constant_p (machine_mode mode, rtx op) if (GET_MODE_SIZE (mode) != 16) return 0; - if (!const0_operand (op, mode) - && !s390_contiguous_bitmask_vector_p (op, NULL, NULL) - && !s390_bytemask_vector_p (op, NULL)) + if (!satisfies_constraint_j00 (op) + && !satisfies_constraint_jm1 (op) + && !satisfies_constraint_jKK (op) + && !satisfies_constraint_jxx (op) + && !satisfies_constraint_jyy (op)) return 0; } @@ -3840,14 +3859,12 @@ legitimate_reload_fp_constant_p (rtx op) static bool legitimate_reload_vector_constant_p (rtx op) { - /* FIXME: Support constant vectors with all the same 16 bit unsigned - operands. These can be loaded with vrepi. */ - if (TARGET_VX && GET_MODE_SIZE (GET_MODE (op)) == 16 - && (const0_operand (op, GET_MODE (op)) - || constm1_operand (op, GET_MODE (op)) - || s390_contiguous_bitmask_vector_p (op, NULL, NULL) - || s390_bytemask_vector_p (op, NULL))) + && (satisfies_constraint_j00 (op) + || satisfies_constraint_jm1 (op) + || satisfies_constraint_jKK (op) + || satisfies_constraint_jxx (op) + || satisfies_constraint_jyy (op))) return true; return false; @@ -7118,6 +7135,11 @@ print_operand (FILE *file, rtx x, int code) case CONST_VECTOR: switch (code) { + case 'h': + gcc_assert (s390_const_vec_duplicate_p (x)); + fprintf (file, HOST_WIDE_INT_PRINT_DEC, + ((INTVAL (XVECEXP (x, 0, 0)) & 0xffff) ^ 0x8000) - 0x8000); + break; case 'e': case 's': { diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h index 2e26e3a0653..c24dcb42eb4 100644 --- a/gcc/config/s390/vecintrin.h +++ b/gcc/config/s390/vecintrin.h @@ -67,14 +67,14 @@ __lcbb(const void *ptr, int bndry) #define vec_genmasks_16 __builtin_s390_vgmh #define vec_genmasks_32 __builtin_s390_vgmf #define vec_genmasks_64 __builtin_s390_vgmg -#define vec_splat_u8 __builtin_s390_vlrepb -#define vec_splat_s8 __builtin_s390_vlrepb -#define vec_splat_u16 __builtin_s390_vlreph -#define vec_splat_s16 __builtin_s390_vlreph -#define vec_splat_u32 __builtin_s390_vlrepf -#define vec_splat_s32 __builtin_s390_vlrepf -#define vec_splat_u64 __builtin_s390_vlrepg -#define vec_splat_s64 __builtin_s390_vlrepg +#define vec_splat_u8 __builtin_s390_vec_splat_u8 +#define vec_splat_s8 __builtin_s390_vec_splat_s8 +#define vec_splat_u16 __builtin_s390_vec_splat_u16 +#define vec_splat_s16 __builtin_s390_vec_splat_s16 +#define vec_splat_u32 __builtin_s390_vec_splat_u32 +#define vec_splat_s32 __builtin_s390_vec_splat_s32 +#define vec_splat_u64 __builtin_s390_vec_splat_u64 +#define vec_splat_s64 __builtin_s390_vec_splat_s64 #define vec_add_u128 __builtin_s390_vaq #define vec_addc_u128 __builtin_s390_vaccq #define vec_adde_u128 __builtin_s390_vacq diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md index 16276e0de36..c9f589017dc 100644 --- a/gcc/config/s390/vector.md +++ b/gcc/config/s390/vector.md @@ -137,8 +137,8 @@ ; Full HW vector size moves (define_insn "mov<mode>" - [(set (match_operand:V_128 0 "nonimmediate_operand" "=v, v,QR, v, v, v, v,v,d") - (match_operand:V_128 1 "general_operand" " v,QR, v,j00,jm1,jyy,jxx,d,v"))] + [(set (match_operand:V_128 0 "nonimmediate_operand" "=v, v,QR, v, v, v, v, v,v,d") + (match_operand:V_128 1 "general_operand" " v,QR, v,j00,jm1,jyy,jxx,jKK,d,v"))] "TARGET_VX" "@ vlr\t%v0,%v1 @@ -148,9 +148,10 @@ vone\t%v0 vgbm\t%v0,%t1 vgm<bhfgq>\t%v0,%s1,%e1 + vrepi<bhfgq>\t%v0,%h1 vlvgp\t%v0,%1,%N1 #" - [(set_attr "op_type" "VRR,VRX,VRX,VRI,VRI,VRI,VRI,VRR,*")]) + [(set_attr "op_type" "VRR,VRX,VRX,VRI,VRI,VRI,VRI,VRI,VRR,*")]) (define_split [(set (match_operand:V_128 0 "register_operand" "") @@ -313,7 +314,7 @@ (define_insn "*vec_set<mode>" [(set (match_operand:V 0 "register_operand" "=v, v,v") (unspec:V [(match_operand:<non_vec> 1 "general_operand" "d,QR,K") - (match_operand:DI 2 "shift_count_or_setmem_operand" "Y, I,I") + (match_operand:SI 2 "shift_count_or_setmem_operand" "Y, I,I") (match_operand:V 3 "register_operand" "0, 0,0")] UNSPEC_VEC_SET))] "TARGET_VX" @@ -363,18 +364,18 @@ (vec_select:<non_vec> (match_operand:V_HW 1 "register_operand" "v") (parallel - [(match_operand:QI 2 "immediate_operand" "C")]))))] - "TARGET_VX" + [(match_operand:QI 2 "const_mask_operand" "C")]))))] + "TARGET_VX && UINTVAL (operands[2]) < GET_MODE_NUNITS (<V_HW:MODE>mode)" "vrep<bhfgq>\t%v0,%v1,%2" [(set_attr "op_type" "VRI")]) (define_insn "*vec_splats<mode>" [(set (match_operand:V_HW 0 "register_operand" "=v,v,v,v") - (vec_duplicate:V_HW (match_operand:<non_vec> 1 "general_operand" "QR,I,v,d")))] + (vec_duplicate:V_HW (match_operand:<non_vec> 1 "general_operand" "QR,K,v,d")))] "TARGET_VX" "@ vlrep<bhfgq>\t%v0,%1 - vrepi<bhfgq>\t%v0,%1 + vrepi<bhfgq>\t%v0,%h1 vrep<bhfgq>\t%v0,%v1,0 #" [(set_attr "op_type" "VRX,VRI,VRI,*")]) @@ -1072,7 +1073,7 @@ [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:QI 3 "immediate_operand" "C")] + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_VFENE)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md index fb76534f725..2e912550969 100644 --- a/gcc/config/s390/vx-builtins.md +++ b/gcc/config/s390/vx-builtins.md @@ -67,20 +67,20 @@ ; Vector gather element (define_insn "vec_gather_element<mode>" - [(set (match_operand:V_HW_32_64 0 "register_operand" "=v") - (unspec:V_HW_32_64 [(match_operand:V_HW_32_64 1 "register_operand" "0") - (match_operand:<tointvec> 2 "register_operand" "v") - (match_operand:BLK 3 "memory_operand" "QR") - (match_operand:QI 4 "immediate_operand" "C")] + [(set (match_operand:V_HW_32_64 0 "register_operand" "=v") + (unspec:V_HW_32_64 [(match_operand:V_HW_32_64 1 "register_operand" "0") + (match_operand:<tointvec> 2 "register_operand" "v") + (match_operand:BLK 3 "memory_operand" "QR") + (match_operand:QI 4 "const_mask_operand" "C")] UNSPEC_VEC_GATHER))] - "TARGET_VX" + "TARGET_VX && UINTVAL (operands[4]) < GET_MODE_NUNITS (<V_HW_32_64:MODE>mode)" "vge<bhfgq>\t%0,%O3(%v2,%R3),%b4" [(set_attr "op_type" "VRV")]) (define_expand "vec_genmask<mode>" [(match_operand:VI_HW 0 "register_operand" "=v") - (match_operand:QI 1 "immediate_operand" "C") - (match_operand:QI 2 "immediate_operand" "C")] + (match_operand:QI 1 "const_int_operand" "C") + (match_operand:QI 2 "const_int_operand" "C")] "TARGET_VX" { int nunits = GET_MODE_NUNITS (<VI_HW:MODE>mode); @@ -120,8 +120,8 @@ (define_expand "vec_genbytemaskv16qi" [(match_operand:V16QI 0 "register_operand" "") - (match_operand 1 "immediate_operand" "")] - "TARGET_VX && CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[1]), 'K', \"K\")" + (match_operand:HI 1 "const_int_operand" "")] + "TARGET_VX" { int i; unsigned mask = 0x8000; @@ -177,11 +177,11 @@ [(set_attr "op_type" "VRX")]) (define_insn "vlbb" - [(set (match_operand:V16QI 0 "register_operand" "=v") - (unspec:V16QI [(match_operand:BLK 1 "memory_operand" "QR") - (match_operand:HI 2 "immediate_operand" " K")] + [(set (match_operand:V16QI 0 "register_operand" "=v") + (unspec:V16QI [(match_operand:BLK 1 "memory_operand" "QR") + (match_operand:QI 2 "const_mask_operand" "C")] UNSPEC_VEC_LOAD_BNDRY))] - "TARGET_VX" + "TARGET_VX && UINTVAL (operands[2]) < 7" "vlbb\t%v0,%1,%2" [(set_attr "op_type" "VRX")]) @@ -351,10 +351,10 @@ [(set_attr "op_type" "VRR")]) (define_expand "vec_permi<mode>" - [(set (match_operand:V_HW_64 0 "register_operand" "") - (unspec:V_HW_64 [(match_operand:V_HW_64 1 "register_operand" "") - (match_operand:V_HW_64 2 "register_operand" "") - (match_operand:QI 3 "immediate_operand" "")] + [(set (match_operand:V_HW_64 0 "register_operand" "") + (unspec:V_HW_64 [(match_operand:V_HW_64 1 "register_operand" "") + (match_operand:V_HW_64 2 "register_operand" "") + (match_operand:QI 3 "const_mask_operand" "")] UNSPEC_VEC_PERMI))] "TARGET_VX" { @@ -363,12 +363,12 @@ }) (define_insn "*vec_permi<mode>" - [(set (match_operand:V_HW_64 0 "register_operand" "=v") - (unspec:V_HW_64 [(match_operand:V_HW_64 1 "register_operand" "v") - (match_operand:V_HW_64 2 "register_operand" "v") - (match_operand:QI 3 "immediate_operand" "C")] + [(set (match_operand:V_HW_64 0 "register_operand" "=v") + (unspec:V_HW_64 [(match_operand:V_HW_64 1 "register_operand" "v") + (match_operand:V_HW_64 2 "register_operand" "v") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_PERMI))] - "TARGET_VX" + "TARGET_VX && (UINTVAL (operands[3]) & 10) == 0" "vpdi\t%v0,%v1,%v2,%b3" [(set_attr "op_type" "VRR")]) @@ -382,7 +382,7 @@ (vec_duplicate:V_HW (vec_select:<non_vec> (match_operand:V_HW 1 "register_operand" "") (parallel - [(match_operand:QI 2 "immediate_operand" "")]))))] + [(match_operand:QI 2 "const_mask_operand" "")]))))] "TARGET_VX") ; Vector scatter element @@ -393,13 +393,13 @@ (define_insn "vec_scatter_elementv4si_DI" [(set (mem:SI (plus:DI (zero_extend:DI - (unspec:SI [(match_operand:V4SI 1 "register_operand" "v") - (match_operand:DI 3 "immediate_operand" "I")] + (unspec:SI [(match_operand:V4SI 1 "register_operand" "v") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_EXTRACT)) - (match_operand:SI 2 "address_operand" "ZQ"))) - (unspec:SI [(match_operand:V4SI 0 "register_operand" "v") + (match_operand:SI 2 "address_operand" "ZQ"))) + (unspec:SI [(match_operand:V4SI 0 "register_operand" "v") (match_dup 3)] UNSPEC_VEC_EXTRACT))] - "TARGET_VX && TARGET_64BIT" + "TARGET_VX && TARGET_64BIT && UINTVAL (operands[3]) < 4" "vscef\t%v0,%O2(%v1,%R2),%3" [(set_attr "op_type" "VRV")]) @@ -407,13 +407,13 @@ (define_insn "vec_scatter_element<V_HW_64:mode>_SI" [(set (mem:<non_vec> (plus:SI (subreg:SI - (unspec:<non_vec_int> [(match_operand:V_HW_64 1 "register_operand" "v") - (match_operand:DI 3 "immediate_operand" "I")] + (unspec:<non_vec_int> [(match_operand:V_HW_64 1 "register_operand" "v") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_EXTRACT) 4) - (match_operand:SI 2 "address_operand" "ZQ"))) - (unspec:<non_vec> [(match_operand:V_HW_64 0 "register_operand" "v") + (match_operand:SI 2 "address_operand" "ZQ"))) + (unspec:<non_vec> [(match_operand:V_HW_64 0 "register_operand" "v") (match_dup 3)] UNSPEC_VEC_EXTRACT))] - "TARGET_VX && !TARGET_64BIT" + "TARGET_VX && !TARGET_64BIT && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_64:MODE>mode)" "vsce<V_HW_64:bhfgq>\t%v0,%O2(%v1,%R2),%3" [(set_attr "op_type" "VRV")]) @@ -421,13 +421,13 @@ (define_insn "vec_scatter_element<mode>_<non_vec_int>" [(set (mem:<non_vec> (plus:<non_vec_int> (unspec:<non_vec_int> - [(match_operand:<tointvec> 1 "register_operand" "v") - (match_operand:DI 3 "immediate_operand" "I")] + [(match_operand:<tointvec> 1 "register_operand" "v") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_EXTRACT) - (match_operand:DI 2 "address_operand" "ZQ"))) - (unspec:<non_vec> [(match_operand:V_HW_32_64 0 "register_operand" "v") + (match_operand:DI 2 "address_operand" "ZQ"))) + (unspec:<non_vec> [(match_operand:V_HW_32_64 0 "register_operand" "v") (match_dup 3)] UNSPEC_VEC_EXTRACT))] - "TARGET_VX" + "TARGET_VX && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_32_64:MODE>mode)" "vsce<bhfgq>\t%v0,%O2(%v1,%R2),%3" [(set_attr "op_type" "VRV")]) @@ -438,7 +438,7 @@ [(match_operand:V_HW_32_64 0 "register_operand" "") (match_operand:<tointvec> 1 "register_operand" "") (match_operand 2 "address_operand" "") - (match_operand:DI 3 "immediate_operand" "")] + (match_operand:QI 3 "const_mask_operand" "")] "TARGET_VX" { if (TARGET_64BIT) @@ -1042,7 +1042,7 @@ (unspec:VI_HW [(match_operand:VI_HW 1 "register_operand" "0") (match_operand:VI_HW 2 "register_operand" "v") (match_operand:VI_HW 3 "register_operand" "v") - (match_operand:SI 4 "immediate_operand" "I")] + (match_operand:QI 4 "const_int_operand" "C")] UNSPEC_VEC_RL_MASK))] "TARGET_VX" "verim<bhfgq>\t%v0,%v2,%v3,%b4" @@ -1079,7 +1079,7 @@ [(set (match_operand:V_HW 0 "register_operand" "=v") (unspec:V_HW [(match_operand:V_HW 1 "register_operand" "v") (match_operand:V_HW 2 "register_operand" "v") - (match_operand:DI 3 "immediate_operand" "C")] + (match_operand:QI 3 "const_int_operand" "C")] UNSPEC_VEC_SLDB))] "TARGET_VX" "vsldb\t%v0,%v1,%v2,%b3" @@ -1089,7 +1089,7 @@ [(set (match_operand:V_HW 0 "register_operand" "") (unspec:V_HW [(match_operand:V_HW 1 "register_operand" "") (match_operand:V_HW 2 "register_operand" "") - (match_operand:DI 3 "immediate_operand" "")] + (match_operand:QI 3 "const_int_operand" "")] UNSPEC_VEC_SLDB))] "TARGET_VX" { @@ -1262,7 +1262,7 @@ [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:SI 3 "immediate_operand" "C")] + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_VFAE))] "TARGET_VX" { @@ -1282,9 +1282,9 @@ ; vfaezbs, vfaezhs, vfaezfs (define_insn "*vfaes<mode>" [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") - (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:SI 3 "immediate_operand" "C")] + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") + (match_operand:VI_HW_QHS 2 "register_operand" "v") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_VFAE)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1307,9 +1307,9 @@ (define_expand "vfaez<mode>" [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") - (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:SI 3 "immediate_operand" "C")] + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") + (match_operand:VI_HW_QHS 2 "register_operand" "") + (match_operand:QI 3 "const_mask_operand" "")] UNSPEC_VEC_VFAE))] "TARGET_VX" { @@ -1319,9 +1319,9 @@ (define_expand "vfaes<mode>" [(parallel [(set (match_operand:VI_HW_QHS 0 "register_operand" "") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") - (match_operand:VI_HW_QHS 2 "register_operand" "") - (match_operand:SI 3 "immediate_operand" "C")] + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") + (match_operand:VI_HW_QHS 2 "register_operand" "") + (match_operand:QI 3 "const_mask_operand" "")] UNSPEC_VEC_VFAE)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1338,9 +1338,9 @@ (define_expand "vfaezs<mode>" [(parallel [(set (match_operand:VI_HW_QHS 0 "register_operand" "") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") - (match_operand:VI_HW_QHS 2 "register_operand" "") - (match_operand:SI 3 "immediate_operand" "C")] + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") + (match_operand:VI_HW_QHS 2 "register_operand" "") + (match_operand:SI 3 "const_mask_operand" "")] UNSPEC_VEC_VFAE)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1363,7 +1363,7 @@ [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:QI 3 "immediate_operand" "C")] + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_VFEE)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1541,11 +1541,11 @@ ; vstrcb, vstrch, vstrcf ; vstrczb, vstrczh, vstrczf (define_insn "vstrc<mode>" - [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") - (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:VI_HW_QHS 3 "register_operand" "v") - (match_operand:SI 4 "immediate_operand" "C")] + [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") + (match_operand:VI_HW_QHS 2 "register_operand" "v") + (match_operand:VI_HW_QHS 3 "register_operand" "v") + (match_operand:QI 4 "const_mask_operand" "C")] UNSPEC_VEC_VSTRC))] "TARGET_VX" { @@ -1564,11 +1564,11 @@ ; vstrcbs, vstrchs, vstrcfs ; vstrczbs, vstrczhs, vstrczfs (define_insn "*vstrcs<mode>" - [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") - (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:VI_HW_QHS 3 "register_operand" "v") - (match_operand:SI 4 "immediate_operand" "C")] + [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") + (match_operand:VI_HW_QHS 2 "register_operand" "v") + (match_operand:VI_HW_QHS 3 "register_operand" "v") + (match_operand:QI 4 "const_mask_operand" "C")] UNSPEC_VEC_VSTRC)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1591,11 +1591,11 @@ [(set_attr "op_type" "VRR")]) (define_expand "vstrcz<mode>" - [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v") - (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v") - (match_operand:VI_HW_QHS 2 "register_operand" "v") - (match_operand:VI_HW_QHS 3 "register_operand" "v") - (match_operand:SI 4 "immediate_operand" "C")] + [(set (match_operand:VI_HW_QHS 0 "register_operand" "") + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") + (match_operand:VI_HW_QHS 2 "register_operand" "") + (match_operand:VI_HW_QHS 3 "register_operand" "") + (match_operand:QI 4 "const_mask_operand" "")] UNSPEC_VEC_VSTRC))] "TARGET_VX" { @@ -1608,7 +1608,7 @@ (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") (match_operand:VI_HW_QHS 2 "register_operand" "") (match_operand:VI_HW_QHS 3 "register_operand" "") - (match_operand:SI 4 "immediate_operand" "C")] + (match_operand:QI 4 "const_mask_operand" "")] UNSPEC_VEC_VSTRC)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1629,7 +1629,7 @@ (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "") (match_operand:VI_HW_QHS 2 "register_operand" "") (match_operand:VI_HW_QHS 3 "register_operand" "") - (match_operand:SI 4 "immediate_operand" "C")] + (match_operand:QI 4 "const_mask_operand" "")] UNSPEC_VEC_VSTRC)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) @@ -1647,11 +1647,11 @@ ; Signed V2DI -> V2DF conversion - inexact exception disabled (define_insn "vec_di_to_df_s64" - [(set (match_operand:V2DF 0 "register_operand" "=v") - (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "v") - (match_operand:QI 2 "immediate_operand" "C")] + [(set (match_operand:V2DF 0 "register_operand" "=v") + (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "v") + (match_operand:QI 2 "const_mask_operand" "C")] UNSPEC_VEC_VCDGB))] - "TARGET_VX" + "TARGET_VX && UINTVAL (operands[2]) != 2 && UINTVAL (operands[2]) <= 7" "vcdgb\t%v0,%v1,4,%b2" [(set_attr "op_type" "VRR")]) @@ -1661,7 +1661,7 @@ (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") (const_int 0)] ; According to current BFP rounding mode UNSPEC_VEC_VCDGB)) - (use (match_operand:QI 2 "immediate_operand" "")) + (use (match_operand:QI 2 "const_int_operand" "")) (set (match_dup 0) (mult:V2DF (match_dup 0) (match_dup 3)))] "TARGET_VX" { @@ -1679,7 +1679,7 @@ (define_insn "vec_di_to_df_u64" [(set (match_operand:V2DF 0 "register_operand" "=v") (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "v") - (match_operand:QI 2 "immediate_operand" "C")] + (match_operand:QI 2 "const_int_operand" "C")] UNSPEC_VEC_VCDLGB))] "TARGET_VX" "vcdlgb\t%v0,%v1,4,%b2" @@ -1691,7 +1691,7 @@ (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") (const_int 0)] ; According to current BFP rounding mode UNSPEC_VEC_VCDLGB)) - (use (match_operand:QI 2 "immediate_operand" "")) + (use (match_operand:QI 2 "const_int_operand" "")) (set (match_dup 0) (mult:V2DF (match_dup 0) (match_dup 3)))] "TARGET_VX" { @@ -1710,7 +1710,7 @@ (define_insn "vec_df_to_di_s64" [(set (match_operand:V2DI 0 "register_operand" "=v") (unspec:V2DI [(match_operand:V2DF 1 "register_operand" "v") - (match_operand:QI 2 "immediate_operand" "C")] + (match_operand:QI 2 "const_int_operand" "C")] UNSPEC_VEC_VCGDB))] "TARGET_VX" "vcgdb\t%v0,%v1,4,%b2" @@ -1718,7 +1718,7 @@ ; The input needs to be multiplied with 2**op2 (define_expand "vec_ctsl" - [(use (match_operand:QI 2 "immediate_operand" "")) + [(use (match_operand:QI 2 "const_int_operand" "")) (set (match_dup 4) (mult:V2DF (match_operand:V2DF 1 "register_operand" "") (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") @@ -1741,15 +1741,15 @@ (define_insn "vec_df_to_di_u64" [(set (match_operand:V2DI 0 "register_operand" "=v") (unspec:V2DI [(match_operand:V2DF 1 "register_operand" "v") - (match_operand:QI 2 "immediate_operand" "C")] + (match_operand:QI 2 "const_mask_operand" "C")] UNSPEC_VEC_VCLGDB))] - "TARGET_VX" + "TARGET_VX && UINTVAL (operands[2]) <= 7" "vclgdb\t%v0,%v1,4,%b2" [(set_attr "op_type" "VRR")]) ; The input needs to be multiplied with 2**op2 (define_expand "vec_ctul" - [(use (match_operand:QI 2 "immediate_operand" "")) + [(use (match_operand:QI 2 "const_int_operand" "")) (set (match_dup 4) (mult:V2DF (match_operand:V2DF 1 "register_operand" "") (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") @@ -1770,12 +1770,12 @@ ; Vector load fp integer - IEEE inexact exception is suppressed (define_insn "vfidb" - [(set (match_operand:V2DI 0 "register_operand" "=v") - (unspec:V2DI [(match_operand:V2DF 1 "register_operand" "v") - (match_operand:QI 2 "immediate_operand" "C") - (match_operand:QI 3 "immediate_operand" "C")] + [(set (match_operand:V2DI 0 "register_operand" "=v") + (unspec:V2DI [(match_operand:V2DF 1 "register_operand" "v") + (match_operand:QI 2 "const_mask_operand" "C") + (match_operand:QI 3 "const_mask_operand" "C")] UNSPEC_VEC_VFIDB))] - "TARGET_VX" + "TARGET_VX && !(UINTVAL (operands[2]) & 3) && UINTVAL (operands[3]) <= 7" "vfidb\t%v0,%v1,%b2,%b3" [(set_attr "op_type" "VRR")]) @@ -1887,21 +1887,21 @@ (define_insn "*vftcidb" [(set (match_operand:V2DF 0 "register_operand" "=v") (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "v") - (match_operand:SI 2 "immediate_operand" "J")] + (match_operand:HI 2 "const_int_operand" "J")] UNSPEC_VEC_VFTCIDB)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) (match_dup 2)] UNSPEC_VEC_VFTCIDBCC))] - "TARGET_VX" + "TARGET_VX && CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'J', \"J\")" "vftcidb\t%v0,%v1,%x2" [(set_attr "op_type" "VRR")]) (define_insn "*vftcidb_cconly" [(set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_operand:V2DF 1 "register_operand" "v") - (match_operand:SI 2 "immediate_operand" "J")] + (match_operand:HI 2 "const_int_operand" "J")] UNSPEC_VEC_VFTCIDBCC)) (clobber (match_scratch:V2DI 0 "=v"))] - "TARGET_VX" + "TARGET_VX && CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'J', \"J\")" "vftcidb\t%v0,%v1,%x2" [(set_attr "op_type" "VRR")]) @@ -1909,13 +1909,13 @@ [(parallel [(set (match_operand:V2DF 0 "register_operand" "") (unspec:V2DF [(match_operand:V2DF 1 "register_operand" "") - (match_operand:SI 2 "immediate_operand" "")] + (match_operand:HI 2 "const_int_operand" "")] UNSPEC_VEC_VFTCIDB)) (set (reg:CCRAW CC_REGNUM) (unspec:CCRAW [(match_dup 1) (match_dup 2)] UNSPEC_VEC_VFTCIDBCC))]) (set (match_operand:SI 3 "memory_operand" "") (unspec:SI [(reg:CCRAW CC_REGNUM)] UNSPEC_CC_TO_INT))] - "TARGET_VX") + "TARGET_VX && CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[2]), 'J', \"J\")") ;; ;; Integer compares diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 98ff5c999b4..5879dd4e0b1 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -4693,24 +4693,7 @@ ;; Boolean instructions. -;; We define DImode `and' so with DImode `not' we can get -;; DImode `andn'. Other combinations are possible. - -(define_expand "anddi3" - [(set (match_operand:DI 0 "register_operand" "") - (and:DI (match_operand:DI 1 "arith_double_operand" "") - (match_operand:DI 2 "arith_double_operand" "")))] - "" - "") - -(define_insn "*anddi3_sp32" - [(set (match_operand:DI 0 "register_operand" "=r") - (and:DI (match_operand:DI 1 "arith_double_operand" "%r") - (match_operand:DI 2 "arith_double_operand" "rHI")))] - "! TARGET_ARCH64" - "#") - -(define_insn "*anddi3_sp64" +(define_insn "anddi3" [(set (match_operand:DI 0 "register_operand" "=r") (and:DI (match_operand:DI 1 "arith_operand" "%r") (match_operand:DI 2 "arith_operand" "rI")))] @@ -4736,28 +4719,6 @@ operands[4] = GEN_INT (~INTVAL (operands[2])); }) -(define_insn_and_split "*and_not_di_sp32" - [(set (match_operand:DI 0 "register_operand" "=&r") - (and:DI (not:DI (match_operand:DI 1 "register_operand" "%r")) - (match_operand:DI 2 "register_operand" "r")))] - "! TARGET_ARCH64" - "#" - "&& reload_completed - && ((GET_CODE (operands[0]) == REG - && SPARC_INT_REG_P (REGNO (operands[0]))) - || (GET_CODE (operands[0]) == SUBREG - && GET_CODE (SUBREG_REG (operands[0])) == REG - && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))" - [(set (match_dup 3) (and:SI (not:SI (match_dup 4)) (match_dup 5))) - (set (match_dup 6) (and:SI (not:SI (match_dup 7)) (match_dup 8)))] - "operands[3] = gen_highpart (SImode, operands[0]); - operands[4] = gen_highpart (SImode, operands[1]); - operands[5] = gen_highpart (SImode, operands[2]); - operands[6] = gen_lowpart (SImode, operands[0]); - operands[7] = gen_lowpart (SImode, operands[1]); - operands[8] = gen_lowpart (SImode, operands[2]);" - [(set_attr "length" "2")]) - (define_insn "*and_not_di_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (and:DI (not:DI (match_operand:DI 1 "register_operand" "%r")) @@ -4772,22 +4733,7 @@ "" "andn\t%2, %1, %0") -(define_expand "iordi3" - [(set (match_operand:DI 0 "register_operand" "") - (ior:DI (match_operand:DI 1 "arith_double_operand" "") - (match_operand:DI 2 "arith_double_operand" "")))] - "" - "") - -(define_insn "*iordi3_sp32" - [(set (match_operand:DI 0 "register_operand" "=r") - (ior:DI (match_operand:DI 1 "arith_double_operand" "%r") - (match_operand:DI 2 "arith_double_operand" "rHI")))] - "! TARGET_ARCH64" - "#" - [(set_attr "length" "2")]) - -(define_insn "*iordi3_sp64" +(define_insn "iordi3" [(set (match_operand:DI 0 "register_operand" "=r") (ior:DI (match_operand:DI 1 "arith_operand" "%r") (match_operand:DI 2 "arith_operand" "rI")))] @@ -4813,28 +4759,6 @@ operands[4] = gen_int_mode (~INTVAL (operands[2]), SImode); }) -(define_insn_and_split "*or_not_di_sp32" - [(set (match_operand:DI 0 "register_operand" "=&r") - (ior:DI (not:DI (match_operand:DI 1 "register_operand" "r")) - (match_operand:DI 2 "register_operand" "r")))] - "! TARGET_ARCH64" - "#" - "&& reload_completed - && ((GET_CODE (operands[0]) == REG - && SPARC_INT_REG_P (REGNO (operands[0]))) - || (GET_CODE (operands[0]) == SUBREG - && GET_CODE (SUBREG_REG (operands[0])) == REG - && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))" - [(set (match_dup 3) (ior:SI (not:SI (match_dup 4)) (match_dup 5))) - (set (match_dup 6) (ior:SI (not:SI (match_dup 7)) (match_dup 8)))] - "operands[3] = gen_highpart (SImode, operands[0]); - operands[4] = gen_highpart (SImode, operands[1]); - operands[5] = gen_highpart (SImode, operands[2]); - operands[6] = gen_lowpart (SImode, operands[0]); - operands[7] = gen_lowpart (SImode, operands[1]); - operands[8] = gen_lowpart (SImode, operands[2]);" - [(set_attr "length" "2")]) - (define_insn "*or_not_di_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (ior:DI (not:DI (match_operand:DI 1 "register_operand" "r")) @@ -4849,22 +4773,7 @@ "" "orn\t%2, %1, %0") -(define_expand "xordi3" - [(set (match_operand:DI 0 "register_operand" "") - (xor:DI (match_operand:DI 1 "arith_double_operand" "") - (match_operand:DI 2 "arith_double_operand" "")))] - "" - "") - -(define_insn "*xordi3_sp32" - [(set (match_operand:DI 0 "register_operand" "=r") - (xor:DI (match_operand:DI 1 "arith_double_operand" "%r") - (match_operand:DI 2 "arith_double_operand" "rHI")))] - "! TARGET_ARCH64" - "#" - [(set_attr "length" "2")]) - -(define_insn "*xordi3_sp64" +(define_insn "xordi3" [(set (match_operand:DI 0 "register_operand" "=r") (xor:DI (match_operand:DI 1 "arith_operand" "%rJ") (match_operand:DI 2 "arith_operand" "rI")))] @@ -4902,64 +4811,6 @@ operands[4] = gen_int_mode (~INTVAL (operands[2]), SImode); }) -;; Split DImode logical operations requiring two instructions. -(define_split - [(set (match_operand:DI 0 "register_operand" "") - (match_operator:DI 1 "cc_arith_operator" ; AND, IOR, XOR - [(match_operand:DI 2 "register_operand" "") - (match_operand:DI 3 "arith_double_operand" "")]))] - "! TARGET_ARCH64 - && reload_completed - && ((GET_CODE (operands[0]) == REG - && SPARC_INT_REG_P (REGNO (operands[0]))) - || (GET_CODE (operands[0]) == SUBREG - && GET_CODE (SUBREG_REG (operands[0])) == REG - && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))" - [(set (match_dup 4) (match_op_dup:SI 1 [(match_dup 6) (match_dup 8)])) - (set (match_dup 5) (match_op_dup:SI 1 [(match_dup 7) (match_dup 9)]))] -{ - operands[4] = gen_highpart (SImode, operands[0]); - operands[5] = gen_lowpart (SImode, operands[0]); - operands[6] = gen_highpart (SImode, operands[2]); - operands[7] = gen_lowpart (SImode, operands[2]); -#if HOST_BITS_PER_WIDE_INT == 32 - if (GET_CODE (operands[3]) == CONST_INT) - { - if (INTVAL (operands[3]) < 0) - operands[8] = constm1_rtx; - else - operands[8] = const0_rtx; - } - else -#endif - operands[8] = gen_highpart_mode (SImode, DImode, operands[3]); - operands[9] = gen_lowpart (SImode, operands[3]); -}) - -;; xnor patterns. Note that (a ^ ~b) == (~a ^ b) == ~(a ^ b). -;; Combine now canonicalizes to the rightmost expression. -(define_insn_and_split "*xor_not_di_sp32" - [(set (match_operand:DI 0 "register_operand" "=&r") - (not:DI (xor:DI (match_operand:DI 1 "register_operand" "r") - (match_operand:DI 2 "register_operand" "r"))))] - "! TARGET_ARCH64" - "#" - "&& reload_completed - && ((GET_CODE (operands[0]) == REG - && SPARC_INT_REG_P (REGNO (operands[0]))) - || (GET_CODE (operands[0]) == SUBREG - && GET_CODE (SUBREG_REG (operands[0])) == REG - && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))" - [(set (match_dup 3) (not:SI (xor:SI (match_dup 4) (match_dup 5)))) - (set (match_dup 6) (not:SI (xor:SI (match_dup 7) (match_dup 8))))] - "operands[3] = gen_highpart (SImode, operands[0]); - operands[4] = gen_highpart (SImode, operands[1]); - operands[5] = gen_highpart (SImode, operands[2]); - operands[6] = gen_lowpart (SImode, operands[0]); - operands[7] = gen_lowpart (SImode, operands[1]); - operands[8] = gen_lowpart (SImode, operands[2]);" - [(set_attr "length" "2")]) - (define_insn "*xor_not_di_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (not:DI (xor:DI (match_operand:DI 1 "register_or_zero_operand" "rJ") @@ -5208,34 +5059,7 @@ "subcc\t%%g0, %1, %0" [(set_attr "type" "compare")]) -;; We cannot use the "not" pseudo insn because the Sun assembler -;; does not know how to make it work for constants. -(define_expand "one_cmpldi2" - [(set (match_operand:DI 0 "register_operand" "") - (not:DI (match_operand:DI 1 "register_operand" "")))] - "" - "") - -(define_insn_and_split "*one_cmpldi2_sp32" - [(set (match_operand:DI 0 "register_operand" "=&r") - (not:DI (match_operand:DI 1 "register_operand" "r")))] - "! TARGET_ARCH64" - "#" - "&& reload_completed - && ((GET_CODE (operands[0]) == REG - && SPARC_INT_REG_P (REGNO (operands[0]))) - || (GET_CODE (operands[0]) == SUBREG - && GET_CODE (SUBREG_REG (operands[0])) == REG - && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))" - [(set (match_dup 2) (not:SI (xor:SI (match_dup 3) (const_int 0)))) - (set (match_dup 4) (not:SI (xor:SI (match_dup 5) (const_int 0))))] - "operands[2] = gen_highpart (SImode, operands[0]); - operands[3] = gen_highpart (SImode, operands[1]); - operands[4] = gen_lowpart (SImode, operands[0]); - operands[5] = gen_lowpart (SImode, operands[1]);" - [(set_attr "length" "2")]) - -(define_insn "*one_cmpldi2_sp64" +(define_insn "one_cmpldi2" [(set (match_operand:DI 0 "register_operand" "=r") (not:DI (match_operand:DI 1 "arith_operand" "rI")))] "TARGET_ARCH64" diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e646a4a8102..1bdf35ba8e8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,53 @@ +2016-01-08 Marek Polacek <polacek@redhat.com> + + PR c++/68449 + * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer. + +2016-01-07 Jason Merrill <jason@redhat.com> + + PR c++/68983 + PR c++/67557 + * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR. + +2015-12-22 Jason Merrill <jason@redhat.com> + + PR c++/66921 + * decl.c (cp_complete_array_type): Allow an initializer that + already has array type. + + PR c++/67339 + * parser.c (cp_parser_elaborated_type_specifier): Use CLASS_TYPE_P + rather than check for RECORD_TYPE. + +2015-12-20 Jason Merrill <jason@redhat.com> + + PR c++/67411 + * decl2.c (decl_maybe_constant_var_p): Use DECL_HAS_VALUE_EXPR_P. + + PR c++/67411 + * decl2.c (decl_maybe_constant_var_p): A proxy isn't constant. + +2015-12-17 Jason Merrill <jason@redhat.com> + + PR c++/67550 + * init.c (constant_value_1): Don't return a CONSTRUCTOR missing + non-constant elements. + + PR c++/67576 + PR c++/25466 + * rtti.c (build_typeid): Use save_expr, not stabilize_reference. + +2015-12-16 Joseph Myers <joseph@codesourcery.com> + + PR c/68162 + * tree.c (c_build_qualified_type): Add extra arguments. + +2015-12-16 Jason Merrill <jason@redhat.com> + + PR c++/63628 + * pt.c (tsubst_pack_expansion): Also make dummy decls if + retrieve_local_specialization fails. + 2015-12-04 Markus Trippelsdorf <markus@trippelsdorf.de> PR c++/67337 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 0df408c917c..c8fc6a7ec0f 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -7031,6 +7031,9 @@ unsafe_copy_elision_p (tree target, tree exp) && resolves_to_fixed_type_p (target, NULL)) return false; tree init = TARGET_EXPR_INITIAL (exp); + /* build_compound_expr pushes COMPOUND_EXPR inside TARGET_EXPR. */ + while (TREE_CODE (init) == COMPOUND_EXPR) + init = TREE_OPERAND (init, 1); return (TREE_CODE (init) == AGGR_INIT_EXPR && !AGGR_INIT_VIA_CTOR_P (init)); } diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index ba9fd0e0469..4ca99e80550 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -3114,7 +3114,8 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t, r = TARGET_EXPR_INITIAL (r); if (TREE_CODE (r) == VAR_DECL) if (tree *p = ctx->values->get (r)) - r = *p; + if (*p != NULL_TREE) + r = *p; if (DECL_P (r)) { if (!ctx->quiet) diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index c9e98e96f75..af077d9167e 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -7360,7 +7360,8 @@ cp_complete_array_type (tree *ptype, tree initial_value, bool do_default) /* Don't get confused by a CONSTRUCTOR for some other type. */ if (initial_value && TREE_CODE (initial_value) == CONSTRUCTOR - && !BRACE_ENCLOSED_INITIALIZER_P (initial_value)) + && !BRACE_ENCLOSED_INITIALIZER_P (initial_value) + && TREE_CODE (TREE_TYPE (initial_value)) != ARRAY_TYPE) return 1; if (initial_value) diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 8d895fef43e..bcd43ee1941 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4197,6 +4197,9 @@ decl_maybe_constant_var_p (tree decl) return false; if (DECL_DECLARED_CONSTEXPR_P (decl)) return true; + if (DECL_HAS_VALUE_EXPR_P (decl)) + /* A proxy isn't constant. */ + return false; return (CP_TYPE_CONST_NON_VOLATILE_P (type) && INTEGRAL_OR_ENUMERATION_TYPE_P (type)); } diff --git a/gcc/cp/init.c b/gcc/cp/init.c index ac11224bdf5..2b36b77b01e 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2079,6 +2079,11 @@ constant_value_1 (tree decl, bool strict_p, bool return_aggregate_cst_ok_p) && (TREE_CODE (init) == CONSTRUCTOR || TREE_CODE (init) == STRING_CST))) break; + /* Don't return a CONSTRUCTOR for a variable with partial run-time + initialization, since it doesn't represent the entire value. */ + if (TREE_CODE (init) == CONSTRUCTOR + && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)) + break; decl = unshare_expr (init); } return decl; diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index e6def9a2aa3..42cde82c37a 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -15682,7 +15682,7 @@ cp_parser_elaborated_type_specifier (cp_parser* parser, { /* Indicate whether this class was declared as a `class' or as a `struct'. */ - if (TREE_CODE (type) == RECORD_TYPE) + if (CLASS_TYPE_P (type)) CLASSTYPE_DECLARED_CLASS (type) = (tag_type == class_type); cp_parser_check_class_key (tag_type, type); } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 51cc245162f..3069c28181b 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -10095,12 +10095,16 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, if (PACK_EXPANSION_LOCAL_P (t)) arg_pack = retrieve_local_specialization (parm_pack); else + /* We can't rely on local_specializations for a parameter + name used later in a function declaration (such as in a + late-specified return type). Even if it exists, it might + have the wrong value for a recursive call. */ + need_local_specializations = true; + + if (!arg_pack) { - /* We can't rely on local_specializations for a parameter - name used later in a function declaration (such as in a - late-specified return type). Even if it exists, it might - have the wrong value for a recursive call. Just make a - dummy decl, since it's only used for its type. */ + /* This parameter pack was used in an unevaluated context. Just + make a dummy decl, since it's only used for its type. */ arg_pack = tsubst_decl (parm_pack, args, complain); if (arg_pack && DECL_PACK_P (arg_pack)) /* Partial instantiation of the parm_pack, we can't build @@ -10108,7 +10112,6 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, arg_pack = NULL_TREE; else arg_pack = make_fnparm_pack (arg_pack); - need_local_specializations = true; } } else if (TREE_CODE (parm_pack) == FIELD_DECL) diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 3e941b94588..53af6ba3c2b 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -345,7 +345,7 @@ build_typeid (tree exp, tsubst_flags_t complain) /* So we need to look into the vtable of the type of exp. Make sure it isn't a null lvalue. */ exp = cp_build_addr_expr (exp, complain); - exp = stabilize_reference (exp); + exp = save_expr (exp); cond = cp_convert (boolean_type_node, exp, complain); exp = cp_build_indirect_ref (exp, RO_NULL, complain); } diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index f0a9589521a..0527c092792 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1007,7 +1007,8 @@ move (tree expr) the C version of this function does not properly maintain canonical types (which are not used in C). */ tree -c_build_qualified_type (tree type, int type_quals) +c_build_qualified_type (tree type, int type_quals, tree /* orig_qual_type */, + size_t /* orig_qual_indirect */) { return cp_build_qualified_type (type, type_quals); } diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 63a1c9cf5ee..d0f653ecfb2 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -355,7 +355,7 @@ Objective-C and Objective-C++ Dialects}. -fmem-report -fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs @gol -fopt-info @gol -fopt-info-@var{options}@r{[}=@var{file}@r{]} @gol --frandom-seed=@var{number} -fsched-verbose=@var{n} @gol +-frandom-seed=@var{string} -fsched-verbose=@var{n} @gol -fsel-sched-verbose -fsel-sched-dump-cfg -fsel-sched-pipelining-verbose @gol -fstack-usage -ftest-coverage -ftime-report -fvar-tracking @gol -fvar-tracking-assignments -fvar-tracking-assignments-toggle @gol @@ -7134,7 +7134,7 @@ the first option takes effect and the subsequent options are ignored. Thus only @file{vec.miss} is produced which contains dumps from the vectorizer about missed opportunities. -@item -frandom-seed=@var{number} +@item -frandom-seed=@var{string} @opindex frandom-seed This option provides a seed that GCC uses in place of random numbers in generating certain symbol names @@ -7143,7 +7143,11 @@ place unique stamps in coverage data files and the object files that produce them. You can use the @option{-frandom-seed} option to produce reproducibly identical object files. -The @var{number} should be different for every file you compile. +The @var{string} can either be a number (decimal, octal or hex) or an +arbitrary string (in which case it's converted to a number by +computing CRC32). + +The @var{string} should be different for every file you compile. @item -fsched-verbose=@var{n} @opindex fsched-verbose diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 3614c10780d..9077a64b98e 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -20290,9 +20290,10 @@ gen_type_die_with_usage (tree type, dw_die_ref context_die, /* We are going to output a DIE to represent the unqualified version of this type (i.e. without any const or volatile qualifiers) so get the main variant (i.e. the unqualified version) of this type - now. (Vectors are special because the debugging info is in the + now. (Vectors and arrays are special because the debugging info is in the cloned type itself). */ - if (TREE_CODE (type) != VECTOR_TYPE) + if (TREE_CODE (type) != VECTOR_TYPE + && TREE_CODE (type) != ARRAY_TYPE) type = type_main_variant (type); /* If this is an array type with hidden descriptor, handle it first. */ diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 86a7e42a41a..c5728966a79 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -5257,7 +5257,8 @@ set_unique_reg_note (rtx insn, enum reg_note kind, rtx datum) { case REG_EQUAL: case REG_EQUIV: - if (!set_for_reg_notes (insn)) + /* We need to support the REG_EQUAL on USE trick of find_reloads. */ + if (!set_for_reg_notes (insn) && GET_CODE (PATTERN (insn)) != USE) return NULL_RTX; /* Don't add ASM_OPERAND REG_EQUAL/REG_EQUIV notes. diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 41669242c81..0ce65a5504e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,1479 +1,48 @@ -2015-12-14 Tobias Burnus <burnus@net-b.de> - Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> +2016-01-10 Paul Thomas <pault@gcc.gnu.org> + + Update copyright years in updated files. + + PR fortran/50221 + PR fortran/68216 + PR fortran/63932 + PR fortran/66408 + * trans_array.c (gfc_conv_scalarized_array_ref): Pass the + symbol decl for deferred character length array references. + * trans-stmt.c (gfc_trans_allocate): Keep the string lengths + to update deferred length character string lengths. + * trans-types.c (gfc_get_dtype_rank_type); Use the string + length of deferred character types for the dtype size. + * trans.c (gfc_build_array_ref): For references to deferred + character arrays, use the domain max value, if it is a variable + to set the 'span' and use pointer arithmetic for acces to the + element. + (trans_code): Set gfc_current_locus for diagnostic purposes. + + PR fortran/67674 + * trans-expr.c (gfc_conv_procedure_call): Do not fix deferred + string lengths of components. + + PR fortran/49954 + * resolve.c (deferred_op_assign): New function. + (gfc_resolve_code): Call it. + * trans-array.c (concat_str_length): New function. + (gfc_alloc_allocatable_for_assignment): Jump directly to alloc/ + realloc blocks for deferred character length arrays because the + string length might change, even if the shape is the same. Call + concat_str_length to obtain the string length for concatenation + since it is needed to compute the lhs string length. + Set the descriptor dtype appropriately for the new string + length. + * trans-expr.c (gfc_trans_assignment_1): Fix the rse string + length for all characters, other than deferred types. For + concatenation operators, push the rse.pre block to the inner + most loop so that the temporary pointer and the assignments + are properly placed. + + PR fortran/67779 + * trans_array.c (gfc_conv_scalarized_array_ref): Add missing + se->use_offset from condition for calculation of 'base'. - Backport from mainline. - 2015-12-09 Tobias Burnus <burnus@net-b.de> - Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> - - * trans.c (gfc_allocate_using_lib,gfc_deallocate_with_status): - Introducing __asm__ __volatile__ ("":::"memory") - after image control statements. - * trans-stmt.c (gfc_trans_sync, gfc_trans_event_post_wait, - gfc_trans_lock_unlock, gfc_trans_critical): Ditto. - * trans-intrinsic.c (gfc_conv_intrinsic_caf_get, - conv_caf_send): Introducing __asm__ __volatile__ ("":::"memory") - after send, before get and around sendget. - -2015-12-04 Release Manager - - * GCC 5.3.0 released. - -2015-11-27 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/68218 - * trans-array.c (gfc_array_init_size): Add gfc_evaluate_now() when - array spec in allocate is a function call. - -2015-11-24 Paul Thomas <pault@gcc.gnu.org> - - Backport from trunk. - PR fortran/68196 - * class.c (has_finalizer_component): Prevent infinite recursion - through this function if the derived type and that of its - component are the same. - * trans-types.c (gfc_get_derived_type): Do the same for proc - pointers by ignoring the explicit interface for the component. - - PR fortran/66465 - * check.c (same_type_check): If either of the expressions is - BT_PROCEDURE, use the typespec from the symbol, rather than the - expression. - -2015-11-18 Dominique d'Humieres <dominiq@lps.ens.fr> - - PR fortran/65751 - * expr.c (gfc_check_pointer_assign): Fix error message. - -2015-11-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/58027 - PR fortran/60993 - * expr.c (gfc_check_init_expr): Prevent a redundant check when a - __convert_* function was inserted into an array constructor. - (gfc_check_assign_symbol): Check for an initialization expression - when a __convert_* was inserted. - -2015-11-14 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67803 - * array.c (gfc_match_array_constructor): If array constructor included - a CHARACTER typespec, check array elements for compatible type. - -2015-11-13 Steven G. Kargl <kargl@gccc.gnu.org> - - PR fortran/68319 - * decl.c (gfc_match_data, gfc_match_entry): Enforce F2008:C1206. - * io.c (gfc_match_format): Ditto. - * match.c (gfc_match_st_function): Ditto. - -2015-11-12 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68318 - * decl.c (get_proc_name): Increment reference count for ENTRY. - While here, fix comment and use postfix ++ for consistency. - -2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org> - - PR fortran/68053 - * decl.c (add_init_expr_to_sym): Try to reduce initialization expression - before testing for a constant value. - -2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68224 - * array.c (match_array_element_spec): Check of invalid NULL(). - While here, fix nearby comments. - -2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68153 - * check.c (gfc_check_reshape): Improve check for valid SHAPE argument. - -2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68151 - * match.c (match_case_selector): Check for invalid type. - -2015-01-25 Paul Thomas <pault@gcc.gnu.org> - - Backported from trunk. - PR fortran/67171 - * trans-array.c (structure_alloc_comps): On deallocation of - class components, reset the vptr to the declared type vtable - and reset the _len field of unlimited polymorphic components. - *trans-expr.c (gfc_find_and_cut_at_last_class_ref): Bail out on - allocatable component references to the right of part reference - with non-zero rank and return NULL. - (gfc_reset_vptr): Simplify this function by using the function - gfc_get_vptr_from_expr. Return if the vptr is NULL_TREE. - (gfc_reset_len): If gfc_find_and_cut_at_last_class_ref returns - NULL return. - -2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/51993 - * decl.c (gfc_set_constant_character_len): Convert gcc_assert into an - if-statement causing an early return leads to valid error message. - -2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68154 - * decl.c (add_init_expr_to_sym): if the char length in the typespec - is NULL, check for and use a constructor. - -2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/36192 - * interface.c (get_expr_storage_size): Check for INTEGER type before - calling gmp routines. - -2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68055 - * decl.c (gfc_match_decl_type_spec): Check for valid kind in old-style - declarations. - -2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68054 - * decl.c (match_attr_spec): PROTECTED can only be a module. - -2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67939 - * data.c (create_character_initializer): Deal with zero length string. - -2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67885 - * trans-decl.c (generate_local_decl): Mark PARAMETER entities in - BLOCK construct. - -2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67805 - PR fortran/68108 - * array.c (gfc_match_array_constructor): Check for error from type - spec matching. - * decl.c (char_len_param_value): Check for valid of charlen parameter. - Check for REF_ARRAY. Reap dead code dating to 2008. - match.c (gfc_match_type_spec): Special case the keyword use in REAL. - -2015-10-26 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/67177 - PR fortran/67977 - Backport from mainline r228940: - * primary.c (match_substring): Add an argument 'deferred' to - flag that a substring reference with null start and end should - not be optimized away for deferred length strings. - (match_string_constant, gfc_match_rvalue): Set the argument. - * trans-expr.c (alloc_scalar_allocatable_for_assignment): If - there is a substring reference return. - * trans-intrinsic.c (conv_intrinsic_move_alloc): For deferred - characters, assign the 'from' string length to the 'to' string - length. If the 'from' expression is deferred, set its string - length to zero. If the 'to' expression has allocatable - components, deallocate them. - -2015-10-22 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/58754 - * trans-stmt.c (gfc_trans_allocate): Do not use the scalar - character assignment if the allocate expression is an array - descriptor. - -2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67900 - * resolve.c (gfc_verify_binding_labels): Check for NULL pointer. - -2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/68019 - * decl.c (add_init_expr_to_sym): Remove an assert() to allow an error - message to be issued. - -2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67987 - * decl.c (char_len_param_value): Unwrap unlong line. If LEN < 0, - force it to zero per the Fortran 90, 95, 2003, and 2008 Standards. - * resolve.c (gfc_resolve_substring_charlen): Unwrap unlong line. - If 'start' is larger than 'end', length of substring is negative, - so explicitly set it to zero. - (resolve_charlen): Remove -Wsurprising warning. Update comment to - reflect that the text is from the F2008 standard. - -2015-10-18 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/66079 - Backport from mainline r224383: - - * trans-expr.c (gfc_conv_procedure_call): Allocatable scalar - function results must be freed and nullified after use. Create - a temporary to hold the result to prevent duplicate calls. - * trans-stmt.c (gfc_trans_allocate): Rename temporary variable - as 'source'. Deallocate allocatable components of non-variable - 'source's. - -2015-10-18 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/67721 - PR fortran/67818 - Backport from mainline r222477: - - 2015-04-27 Andre Vehreschild <vehre@gmx.de> - - PR fortran/59678 - PR fortran/65841 - * trans-array.c (duplicate_allocatable): Fixed deep copy of - allocatable components, which are liable for copy only, when - they are allocated. - (gfc_duplicate_allocatable): Add deep-copy code into if - component allocated block. Needed interface change for that. - (gfc_copy_allocatable_data): Supplying NULL_TREE for code to - add into if-block for checking whether a component was - allocated. - (gfc_duplicate_allocatable_nocopy): Likewise. - (structure_alloc_comps): Likewise. - * trans-array.h: Likewise. - * trans-expr.c (gfc_trans_alloc_subarray_assign): Likewise. - * trans-openmp.c (gfc_walk_alloc_comps): Likewise. - -2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67802 - * decl.c (add_init_expr_to_sym): Numeric constant for character - length must be an INTEGER. - -2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67616 - * primary.c (gfc_match_structure_constructor): Use a possibly - host-associated symtree to prevent ICE. - -2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66979 - * io.c (gfc_resolve_filepos): Check for a UNIT number. Add a nearby - missing 'return false'. - -2015-10-01 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/67721 - * trans-expr.c (gfc_trans_assignment_1): Remove the non-constantness - condition guarding deep copy. - -2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67614 - * resolve.c (gfc_resolve_code): Prevent ICE for invalid EXPR_NULL. - -2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67525 - * parse.c (match_deferred_characteristics): Remove an assert, which - allows an invalid SELECT TYPE selector to be detected. - -2015-09-21 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67615 - * resolve.c (gfc_resolve_code): Check for scalar expression in - arithmetic-if. - -2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/67526 - * expr.c (gfc_check_init_expr): Do not dereference a NULL pointer. - -2015-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR fortran/67429 - * error.c (gfc_clear_pp_buffer): Reset last_location, otherwise - caret lines might be skipped when actually giving a diagnostic. - -2015-08-07 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/66929 - * trans-array.c (gfc_get_proc_ifc_for_expr): Use esym as procedure - symbol if available. - -2015-08-05 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/64921 - * class.c (generate_finalization_wrapper): Set finalization - procedure symbol's always_explicit attribute. - -2015-08-03 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66942 - * trans-expr.c (gfc_conv_procedure_call): Avoid NULL pointer reference - -2015-07-25 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/64986 - * trans-expr.c (gfc_trans_assignment_1): Put component deallocation - code at the beginning of the block. - -2015-07-21 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/66035 - * trans-expr.c (alloc_scalar_allocatable_for_subcomponent_assignment): - Compute the size to allocate for class and derived type objects - correclty. - (gfc_trans_subcomponent_assign): Only allocate memory for a - component when the object to assign is not an allocatable class - object (the memory is already present for allocatable class objects). - Furthermore use copy_class_to_class for assigning the rhs to the - component (may happen for dummy class objects on the rhs). - -2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> - - * trans-intrinsic.c (conv_co_collective): Remove redundant address - operator in the generated code. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66724 - PR fortran/66724 - * io.c (is_char_type): Call gfc_resolve_expr (). - (match_open_element, match_dt_element, match_inquire_element): Fix - ASYNCHRONOUS case. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66864 - * simplify.c (gfc_simplify_floor): Set precision of temporary to - that of arg. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66545 - * primary.c (match_sym_complex_part): Do not dereference NULL pointer. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/56520 - * match.c (gfc_match_name): Special case unary minus and plus. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - * io.c (check_char_variable): New function. - (match_open_element, match_close_element, match_file_element, - match_dt_element, match_inquire_element, match_wait_element): Use it. - -2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66725 - * io.c (is_char_type): New function to test for BT_CHARACTER - (gfc_match_open, gfc_match_close, match_dt_element): Use it. - -2015-07-16 Release Manager - - * GCC 5.2.0 released. - -2015-06-24 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/66549 - * resolve.c (resolve_global_procedure): Don't save and restore - OpenMP state around the call to gfc_resolve. - (gfc_resolve): Save OpenMP state on entry and restore it on return. - -2015-06-14 Thomas Koenig <tkoenig@gcc.gnu.org> - - PR fortran/66385 - Backport from trunk - * frontend-passes.c (combine_array_constructor): Return early if - inside a FORALL loop. - -2015-06-14 Thomas Koenig <tkoenig@gcc.gnu.org> - - * intrinsic.texi: Change \leq to < in descrition of imaginary - part in argument to log. - -2015-06-11 Pierre-Marie de Rodat <derodat@adacore.com> - - * f95-lang.c (gfc_create_decls): Register the main translation unit - through the new debug hook. - -2015-06-08 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66245 - * match.c (gfc_match_type_is, gfc_match_class_is): Check if the - return type spec or derived type spec is validate. - -2015-06-05 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66347 - * resolve.c (apply_default_init_local): Do not dereference a NULL - pointer. - -2015-06-05 Russell Whitesides <russelldub@gmail.com> - Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/40958 - PR fortran/60780 - PR fortran/66377 - * module.c (load_equiv): Add check for loading duplicate EQUIVALENCEs - from different modules. Eliminate the pruning of unused - equivalence-objects - - -2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66380 - * simplify.c (gfc_simplify_reshape): Convert assert into returning - NULL, which triggers an error condition. - -2015-05-29 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/66257 - * resolve.c (resolve_actual_arglist): Don't throw an error - if the argument with procedure pointer component is not a variable. - -2015-05-22 Jakub Jelinek <jakub@redhat.com> - - Backported from mainline - 2015-05-19 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/66199 - * trans-openmp.c (gfc_trans_omp_teams): Set OMP_TEAMS_COMBINED for - combined constructs. - (gfc_trans_omp_target): Make sure BIND_EXPR has non-NULL - BIND_EXPR_BLOCK. - -2015-05-19 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/65903 - * io.c (format_lex): Change to NONSTRING when checking for - possible doubled quote. - * scanner.c (gfc_next_char_literal): Revert change from 64506 - and add a check for quotes and return. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66106 - * interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201). - * match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66057 - * decl.c(gfc_match_generic): Detected a malformed GENERIC statement. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66052 - * decl.c(gfc_match_protected): Prevent dereference of NULL pointer. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66045 - * expr.c (gfc_check_assign): Check for assignment of NULL() instead - of the (intended) pointer assignment. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66044 - * decl.c(gfc_match_entry): Change a gfc_internal_error() into - a gfc_error() - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66043 - * check.c (gfc_check_storage_size): Prevent the direct use of NULL() - in STORAGE_SIZE() reference. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66040 - * parse.c(verify_st_order): Replace a gfc_internal_error with your - generic gfc_error. - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/66039 - * io.c (match_filepos): Check for incomplete/mangled REWIND, FLUSH, - BACKSPACE, and ENDFILE statements - -2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/64925 - * symbol.c(check_conflict): Check for a conflict between a dummy - argument and an internal procedure name. - -2015-05-02 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/65976 - * invoke.texi: Remove 'no-' in '-fno-fixed-form' - -2015-04-22 Release Manager - - * GCC 5.1.0 released. - -2015-04-22 Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/65429 - * decl.c (add_init_expr_to_sym): Set the length type parameter. - -2015-04-10 Tobias Burnus <burnus@net-b.de> - - * trans-stmt.c (gfc_trans_lock_unlock): Implement -fcoarray=lib - version; reject not-yet-implemented variants. - * trans-types.c (gfc_get_derived_type): For lock_type with - -fcoarray=lib, use a void pointer as type. - * trans.c (gfc_allocate_using_lib, gfc_allocate_allocatable): - Handle lock_type with -fcoarray=lib. - -2015-04-10 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/56674 - PR fortran/58813 - PR fortran/59016 - PR fortran/59024 - * symbol.c (save_symbol_data, gfc_save_symbol_data): Rename the - former to the latter and make it non-static. Update callers. - * gfortran.h (gfc_save_symbol_data): New prototype. - * decl.c (gfc_match_decl_type_spec): Call 'gfc_save_symbol_data' - before modifying symbols 'sym' and 'dt_sym'. - -2013-04-09 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/56852 - * primary.c (gfc_variable_attr): Avoid ICE on AR_UNKNOWN if any - of the index variables are untyped and errors are present. - -2015-04-07 Andre Vehreschild <vehre@gmx.de> - - PR fortran/65548 - * trans-stmt.c (gfc_trans_allocate): For intrinsic functions - use conv_expr_descriptor() instead of conv_expr_reference(). - -2015-03-30 Jakub Jelinek <jakub@redhat.com> - - PR fortran/65597 - * trans-openmp.c (gfc_trans_omp_do): For !simple simd with explicit - linear clause for the iterator set OMP_CLAUSE_LINEAR_NO_COPYIN. - For implcitly added !simple OMP_CLAUSE_LINEAR set it too. Use step 1 - instead of the original step on the new iterator - count. - -2015-03-25 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/64952 - PR fortran/65532 - * gfortran.h (struct gfc_namespace): New field 'types_resolved'. - * resolve.c (resolve_types): Return early if field 'types_resolved' - is set. Set 'types_resolved' at the end. - -2015-03-24 Andre Vehreschild <vehre@gmx.de> - - PR fortran/55901 - * trans-expr.c (gfc_conv_structure): Fixed indendation. - Using integer_zero_node now instead of explicitly - constructing a integer constant zero node. - (gfc_conv_derived_to_class): Add handling of _len component, - i.e., when the rhs has a string_length then assign that to - class' _len, else assign 0. - (gfc_conv_intrinsic_to_class): Likewise. - -2015-03-24 Andre Vehreschild <vehre@gmx.de> - - PR fortran/64787 - PR fortran/57456 - PR fortran/63230 - * class.c (gfc_add_component_ref): Free no longer needed - ref-chains to prevent memory loss. - (find_intrinsic_vtab): For deferred length char arrays or - unlimited polymorphic objects, store the size in bytes of one - character in the size component of the vtab. - * gfortran.h: Added gfc_add_len_component () define. - * trans-array.c (gfc_trans_create_temp_array): Switched to new - function name for getting a class' vtab's field. - (build_class_array_ref): Likewise. - (gfc_array_init_size): Using the size information from allocate - more consequently now, i.e., the typespec of the entity to - allocate is no longer needed. This is to address the last open - comment in PR fortran/57456. - (gfc_array_allocate): Likewise. - (structure_alloc_comps): gfc_copy_class_to_class () needs to - know whether the class is unlimited polymorphic. - * trans-array.h: Changed interface of gfc_array_allocate () to - reflect the no longer needed typespec. - * trans-expr.c (gfc_find_and_cut_at_last_class_ref): New. - (gfc_reset_len): New. - (gfc_get_class_array_ref): Switch to new function name for - getting a class' vtab's field. - (gfc_copy_class_to_class): Added flag to know whether the class - to copy is unlimited polymorphic. Adding _len dependent code - then, which calls ->vptr->copy () with four arguments adding - the length information ->vptr->copy(from, to, from_len, to_cap). - (gfc_conv_procedure_call): Switch to new function name for - getting a class' vtab's field. - (alloc_scalar_allocatable_for_assignment): Use the string_length - as computed by gfc_conv_expr and not the statically backend_decl - which may be incorrect when ref-ing. - (gfc_trans_assignment_1): Use the string_length variable and - not the rse.string_length. The former has been computed more - generally. - * trans-intrinsic.c (gfc_conv_intrinsic_sizeof): Switch to new - function name for getting a class' vtab's field. - (gfc_conv_intrinsic_storage_size): Likewise. - (gfc_conv_intrinsic_transfer): Likewise. - * trans-stmt.c (gfc_trans_allocate): Restructured to evaluate - source=expr3 only once before the loop over the objects to - allocate, when the objects are not arrays. Doing correct _len - initialization and calling of vptr->copy () fixing PR 64787. - (gfc_trans_deallocate): Reseting _len to 0, preventing future - errors. - * trans.c (gfc_build_array_ref): Switch to new function name - for getting a class' vtab's field. - (gfc_add_comp_finalizer_call): Likewise. - * trans.h: Define the prototypes for the gfc_class_vtab_*_get () - and gfc_vptr_*_get () functions. - Added gfc_find_and_cut_at_last_class_ref () and - gfc_reset_len () routine prototype. Added flag to - gfc_copy_class_to_class () prototype to signal an unlimited - polymorphic entity to copy. - -2015-03-24 Iain Sandoe <iain@codesourcery.com> - Tobias Burnus <burnus@net-b.de> - - * gfortran.texi (_gfortran_caf_sync_memory): Improve wording. - -2015-03-23 Paul Thomas <pault@gcc.gnu.org> - Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/64952 - * gfortran.h (struct symbol_attribute) : New field - 'array_outer_dependency'. - * trans.h (struct gfc_ss_info): New field 'array_outer_dependency'. - * module.c (enum ab_attribute): New value AB_ARRAY_OUTER_DEPENDENCY. - (attr_bits): Append same value to initializer. - (mio_symbol_attribute): Handle 'array_outer_dependency' attr - in module read and write. - * resolve.c (update_current_proc_outer_array_dependency): New function. - (resolve_function, resolve_call): Add code to update current procedure's - 'array_outer_dependency' attribute. - (resolve_variable): Mark current procedure with attribute - array_outer_dependency if the variable is an array coming from outside - the current namespace. - (resolve_fl_procedure): Mark a procedure without body with attribute - 'array_outer_dependency'. - * trans-array.c (gfc_conv_resolve_dependencies): If any ss is - marked as 'array_outer_dependency' generate a temporary. - (gfc_walk_function_expr): If the function may reference external arrays, - mark the head gfc_ss with flag 'array_outer_dependency'. - -2015-03-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR libgfortran/59513 - * gfortran.texi (Read/Write after EOF marker): New information. - -2015-03-21 H.J. Lu <hongjiu.lu@intel.com> - - * gfortran.texi (_gfortran_caf_sync_memory): Put @{xxx} in one - line. - -2015-03-21 Tobias Burnus <burnus@net-b.de> - - * gfortran.texi (_gfortran_caf_sync_all, _gfortran_caf_sync_images, - _gfortran_caf_sync_memory, _gfortran_caf_error_stop, - _gfortran_caf_error_stop_str, _gfortran_caf_atomic_define, - _gfortran_caf_atomic_ref, _gfortran_caf_atomic_cas, - _gfortran_caf_atomic_op): New sections. - -2015-03-21 Tobias Burnus <burnus@net-b.de> - - * trans-expr.c (gfc_get_tree_for_caf_expr): Reject unimplemented - coindexed coarray accesses. - -2015-03-17 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/59198 - * trans-types.c (gfc_get_derived_type): If an abstract derived - type with procedure pointer components has no other type of - component, return the backend_decl. Otherwise build the - components if any of the non-procedure pointer components have - no backend_decl. - -2015-03-16 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/64432 - *trans-intrinisic.c (conv_intrinsic_system_clock): Check the - smallest kind passed in user arguments and hardcode tesults for - KIND=1 or KIND=2 to indicate no clock available. - -2015-03-16 Andre Vehreschild <vehre@gmx.de> - - * resolve.c: Prevent segfault on illegal input. - -2015-03-14 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/61138 - * trans-expr.c (gfc_trans_pointer_assignment): Clear DESCRIPTOR_ONLY - field before reusing LSE. - -2015-03-11 Janne Blomqvist <jb@gcc.gnu.org> - - PR libfortran/65200 - * gfortran.texi: Document behavior when opening files without - explicit ACTION= specifier. - -2015-03-10 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/65024 - * trans-expr.c (gfc_conv_component_ref): If the component - backend declaration is missing and the derived type symbol is - available in the reference, call gfc_build_derived_type. - -2015-03-10 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> - Tobias Burnus <burnus@net-b.de> - - * trans.h (caf_sync_memory): New function decl tree. - * trans-decl.c (gfc_build_builtin_function_decls): Define it. - (create_main_function): Don't call sync_synchronize and leave - it to the CAF library. - * trans-stmt.c (gfc_trans_stop): Ditto. - (gfc_trans_sync): Ditto; add call library call for sync memory. - -2015-03-08 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/60898 - * resolve.c (resolve_symbol): Check that the symbol found by - name lookup really is the current symbol being resolved. - -2015-03-02 Tobias Burnus <burnus@net-b.de> - - * check.c (gfc_check_atomic): Properly check for coarrayness - and for being coindexed. - -2015-02-26 Martin Liska <mliska@suse.cz> - - * resolve.c: Rename enum 'comparison' to 'compare_result' as - solution for -Wodr issue. - -2015-02-24 Thomas Schwinge <thomas@codesourcery.com> - - PR libgomp/64625 - * f95-lang.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): - Remove macros. - (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. - * types.def (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) - (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): - Remove function types. - (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR) - (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR) - (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): - New function types. - -2015-02-22 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR fortran/64980 - PR fortran/61960 - * trans-expr.c (gfc_apply_interface_mapping_to_expr): Remove mapping - for component references to class objects. - (gfc_conv_procedure_call): Compare the class by name. - -2015-02-13 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/64506 - * scanner.c (gfc_next_char_literal): For free form source, - check for '!' and if found, clear the comment and go back - and get the next character. For fixed form source, skip the - rest of the line. - -2015-02-12 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/64932 - * trans-stmt.c (gfc_trans_deallocate): If a component array - expression is not a descriptor type and it is a derived type - that has allocatable components and is not finalizable, then - deallocate the allocatable components. - -2015-02-08 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/63744 - * module.c (check_for_ambiguous): Change argument type - from gfc_symbol to gfc_symtree. Check local (symtree) name - instead of original (symbol) name. - (read_module): Update caller. - -2015-02-06 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/63205 - * gfortran.h: Add 'must finalize' field to gfc_expr and - prototypes for gfc_is_alloc_class_scalar_function and for - gfc_is_alloc_class_array_function. - * expr.c (gfc_is_alloc_class_scalar_function, - gfc_is_alloc_class_array_function): New functions. - * trans-array.c (gfc_add_loop_ss_code): Do not move the - expression for allocatable class scalar functions outside the - loop. - (conv_array_index_offset): Cope with deltas being NULL_TREE. - (build_class_array_ref): Do not return with allocatable class - array functions. Add code to pick out the returned class array. - Dereference if necessary and return if not a class object. - (gfc_conv_scalarized_array_ref): Cope with offsets being NULL. - (gfc_walk_function_expr): Return an array ss for the result of - an allocatable class array function. - * trans-expr.c (gfc_conv_subref_array_arg): Remove the assert - that the argument should be a variable. If an allocatable class - array function, set the offset to zero and skip the write-out - loop in this case. - (gfc_conv_procedure_call): Add allocatable class array function - to the assert. Call gfc_conv_subref_array_arg for allocatable - class array function arguments with derived type formal arg.. - Add the code for handling allocatable class functions, including - finalization calls to prevent memory leaks. - (arrayfunc_assign_needs_temporary): Return if an allocatable - class array function. - (gfc_trans_assignment_1): Set must_finalize to rhs expression - for allocatable class functions. Set scalar_to_array as needed - for scalar class allocatable functions assigned to an array. - Nullify the allocatable components corresponding the the lhs - derived type so that the finalization does not free them. - -2015-01-29 Andre Vehreschild <vehre@gmx.de> - Janus Weil <janus@gcc.gnu.org> - - PR fortran/60289 - Initial patch by Janus Weil - * resolve.c (resolve_allocate_expr): Add check for comp. only - when target is not unlimited polymorphic. - * trans-stmt.c (gfc_trans_allocate): Assign correct value to - _len component of unlimited polymorphic entities. - -2015-02-05 Tobias Burnus <burnus@net-b.de> - - PR fortran/64943 - * resolve.c (resolve_transfer): Also check structure - constructors. - -2015-02-05 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/64757 - * resolve.c (resolve_structure_cons): Obtain the rank of class - components. - * trans-expr.c (gfc_trans_alloc_subarray_assign): Do the - assignment to allocatable class array components. - (alloc_scalar_allocatable_for_subcomponent_assignment): If comp - is a class component, allocate to the _data field. - (gfc_trans_subcomponent_assign): If a class component with a - derived type expression set the _vptr field and for array - components, call gfc_trans_alloc_subarray_assign. For scalars, - the assignment is performed here. - -2015-02-04 Jakub Jelinek <jakub@redhat.com> - - * options.c: Include langhooks.h. - (gfc_post_options): Change lang_hooks.name based on - selected -std= mode. - -2015-02-03 Steven G. Kargl <kargl@gcc.gnu.org> - - * intrinsic.texi (CO_ASSOCIATED): c_prt_1 should be c_ptr_1. - -2015-01-30 Andre Vehreschild <vehre@gmx.de> - - * trans-decl.c (gfc_get_symbol_decl): Removed duplicate code. - * trans-expr.c (gfc_conv_intrinsic_to_class): Fixed indentation. - Fixed datatype of charlen to be a 32-bit int. - -2015-02-01 Joseph Myers <joseph@codesourcery.com> - - * error.c (gfc_warning (const char *, ...), gfc_warning_now (const - char *, ...)): Remove functions. - * gfortran.h (gfc_warning (const char *, ...), gfc_warning_now - (const char *, ...)): Remove declarations. - * arith.c, check.c, data.c, decl.c, frontend-passes.c, - interface.c, intrinsic.c, io.c, matchexp.c, module.c, openmp.c, - options.c, parse.c, primary.c, resolve.c, scanner.c, symbol.c, - trans-common.c, trans-const.c, trans-stmt.c: All callers of - gfc_warning and gfc_warning_now changed to pass 0 or option number - as first argument. - -2015-01-30 Joseph Myers <joseph@codesourcery.com> - - * f95-lang.c, gfortranspec.c, trans-const.c, trans-expr.c: All - callers of fatal_error changed to pass input_location as first - argument. - -2015-01-28 Tobias Burnus <burnus@net-b.de> - - * intrinsic.texi (CO_BROADCAST): Correct argument description. - -2015-01-27 Tobias Burnus <burnus@net-b.de> - - PR fortran/63861 - * trans-openmp.c (gfc_has_alloc_comps, gfc_trans_omp_clauses): - Fix handling for scalar coarrays. - * trans-types.c (gfc_get_element_type): Add comment. - -2015-01-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - PR fortran/64771 - * interface.c: Remove <algorithm>. - (check_dummy_characteristics): Use MAX instead of std::max. - -2015-01-26 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/62044 - * resolve.c (resolve_allocate_expr): If the default initializer - is NULL, keep the original MOLD expression so that the correct - typespec is available. - -2015-01-26 Tobias Burnus <burnus@net-b.de> - - PR fortran/64771 - * interface.c (check_dummy_characteristics): Fix coarray handling. - -2015-01-26 Tobias Burnus <burnus@net-b.de> - - * io.c (gfc_match_inquire): Replace "-1" by a defined constant. - -2015-01-26 Janus Weil <janus@gcc.gnu.org> - - PR fortran/64230 - * class.c (finalize_component): New argument 'sub_ns'. Insert code to - check if 'expr' is associated. - (generate_finalization_wrapper): Rename 'ptr' symbols to 'ptr1' and - 'ptr2'. Pass 'sub_ns' to finalize_component. - -2015-01-25 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/62044 - * decl.c (gfc_match_derived_decl): Don't insert a new symtree element. - * module.c (MOD_VERSION): Bump. - (write_module): Don't write list of extensions. - (read_module): Don't jump over list of extensions; - don't load list of extensions. - (load_derived_extensions, write_dt_extensions, - write_derived_extensions): Remove. - -2015-01-24 Tobias Burnus <burnus@net-b.de> - - * parse.c (gfc_parse_file): Fix two-location gfc_error call. - -2015-01-23 Martin Liska <mliska@suse.cz> - - * decl.c (attr_decl1): Workaround -Wmaybe-uninitialized - false positive during profiledbootstrap by initializing them. - * matchexp.c (match_mult_operand): Likewise. - * module.c (write_atom): Likewise. - (read_module): Likewise. - -2015-01-23 Tom de Vries <tom@codesourcery.com> - - PR libgomp/64672 - * lang.opt (fopenacc): Mark as LTO option. - -2015-01-23 Tom de Vries <tom@codesourcery.com> - - PR libgomp/64707 - * lang.opt (fopenmp): Mark as LTO option. - -2015-01-23 Andre Vehreschild <vehre@gmx.de> - - * trans-decl.c (gfc_finish_var_decl): Fixed moved comment. - * trans-stmt.c (gfc_trans_allocate): Fixed indentation. - -2015-01-23 Jakub Jelinek <jakub@redhat.com> - - * gfc-diagnostic.def (DK_ICE_NOBT): New kind. - -2015-01-23 Janus Weil <janus@gcc.gnu.org> - - PR fortran/60922 - * class.c (finalize_component): Apply the check for 'fini_coarray' only - to coarray components. - -2015-01-23 Tobias Burnus <burnus@net-b.de> - - PR fortran/64726 - * trans-openmp.c (gfc_trans_oacc_combined_directive): Fix - loop generation. - -2015-01-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/61933 - * libgfortran.h: - * trans-io.c (set_parameter_value): Delete use of has_iostat. - Redefine to not generate any runtime error check calls. - (set_parameter_value_chk): Rename of the former - set_parameter_value with the runtime error checks and fix - whitespace. (set_parameter_value_inquire): New function that - builds a runtime conditional block to set the INQUIRE - common parameter block unit number to -2 when unit numbers - exceed positive KIND=4 limits. (gfc_trans_open): Whitespace. - For unit, use the renamed set_parameter_value_chk. - (gfc_trans_close): Likewise use renamed function. - (build_filepos): Whitespace and use renamed function. - (gfc_trans_inquire): Whitespace and for unit use - set_parameter_value and set_parameter_value_inquire. - (gfc_trans_wait): Remove p->iostat from call to - set_parameter_value. Use new set_parameter_value_chk for unit. - (build_dt): Use the new set_parameter_value without p->iostat - and fix whitespace. Use set_parameter_value_chk for unit. - -2015-01-21 Thomas Koenig <tkoenig@netcologne.de> - - PR fortran/57023 - * dependency.c (callback_dummy_intent_not_int): New function. - (dummy_intent_not_in): New function. - (gfc_full_array_ref_p): Use dummy_intent_not_in. - -2015-01-18 Andre Vehreschild <vehre@gmx.de> - Janus Weil <janus@gcc.gnu.org> - - PR fortran/60255 - * class.c (gfc_get_len_component): New. - (gfc_build_class_symbol): Add _len component to unlimited - polymorphic entities. - (find_intrinsic_vtab): Removed emitting of error message. - * gfortran.h: Added prototype for gfc_get_len_component. - * simplify.c (gfc_simplify_len): Use _len component where - available. - * trans-expr.c (gfc_class_len_get): New. - (gfc_conv_intrinsic_to_class): Add handling for deferred - character arrays. - (gfc_conv_structure): Treat _len component correctly. - (gfc_conv_expr): Prevent bind_c handling when not required. - (gfc_trans_pointer_assignment): Propagate _len component. - * trans-stmt.c (class_has_len_component): New. - (trans_associate_var): _len component treatment for associate - context. - (gfc_trans_allocate): Same as for trans_associate_var() - * trans.h: Added prototype for gfc_class_len_get. - -2015-01-18 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/57959 - * trans-expr.c (gfc_trans_subcomponent_assign): Use a deep copy - for allocatable components, where the source is a variable. - -2015-01-18 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/55901 - * primary.c (gfc_match_varspec): Exclude dangling associate- - names with dimension 0 from being counted as arrays. - * resolve.c (resolve_assoc_var): Sub-strings are permissible - for associate-names, so exclude characters from the test for - misuse as arrays. - * trans-decl.c (gfc_get_symbol_decl): Associate-names can use - the hidden string length variable of their associated target. - Signal this by setting 'length' to a constant, if the decl for - the string length is a variable. - -2015-01-17 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/64578 - * trans-expr.c (gfc_trans_pointer_assignment): Make sure that - before reinitializing rse, to add the rse.pre to block before - creating 'ptrtemp'. - * trans-intrinsic.c (gfc_conv_associated): Deal with the class - data being a descriptor. - -2015-01-17 Andre Vehreschild <vehre@gmx.de> - - PR fortran/60357 - * primary.c (build_actual_constructor): Prevent warning. - * trans-expr.c (alloc_scalar_allocatable_for_subcomponent_ - assignment): New function encapsulates treatment of allocatable - components. - (gfc_trans_subcomponent_assign): Needed to distinguish between - regular assignment and initilization. - (gfc_trans_structure_assign): Same. - (gfc_conv_structure): Same. - - PR fortran/61275 - * gfortran.h: deferred_parameter is not needed, because - it artificial does the trick completely. - * primary.c (build_actual_constructor): Same. - (gfc_convert_to_structure_constructor): Same. - * resolve.c (resolve_fl_derived0): Same. - * trans-expr.c (gfc_conv_component_ref): Prevent treating - allocatable deferred length char arrays here. - (gfc_trans_subcomponent_assign): Same as above. - * trans-types.c (gfc_sym_type): This is done in - gfc_get_derived_type already. - -2015-01-17 Andre Vehreschild <vehre@gmx.de> - - PR fortran/60334 - * trans-decl.c (gfc_get_symbol_decl):Use a ref on the string - length when the symbol is declared to be a result. - * trans-expr.c (gfc_conv_procedure_call): Strip deref on the - string length when functions are nested and the string length - is a reference already. - -2015-01-16 Janus Weil <janus@gcc.gnu.org> - - PR fortran/45290 - * decl.c (match_pointer_init): Error out if resolution of init expr - failed. - -2015-01-15 Tobias Burnus <burnus@net-b.de> - - * openmp.c (check_symbol_not_pointer, resolve_oacc_data_clauses, - resolve_oacc_deviceptr_clause, resolve_omp_clauses, - gfc_resolve_oacc_declare): Replace '%s' by %qs. - -2015-01-15 Thomas Schwinge <thomas@codesourcery.com> - Cesar Philippidis <cesar@codesourcery.com> - James Norris <jnorris@codesourcery.com> - Ilmir Usmanov <i.usmanov@samsung.com> - Tobias Burnus <burnus@net-b.de> - - * lang.opt (fopenacc): New option. - * cpp.c (cpp_define_builtins): Conditionally define _OPENACC. - * dump-parse-tree.c (show_omp_node): Split part of it into... - (show_omp_clauses): ... this new function. - (show_omp_node, show_code_node): Handle EXEC_OACC_PARALLEL_LOOP, - EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, - EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, - EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, - EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. - (show_namespace): Update for OpenACC. - * f95-lang.c (DEF_FUNCTION_TYPE_VAR_2, DEF_FUNCTION_TYPE_VAR_8) - (DEF_FUNCTION_TYPE_VAR_12, DEF_GOACC_BUILTIN) - (DEF_GOACC_BUILTIN_COMPILER): New macros. - * types.def (BT_FN_VOID_INT_INT_VAR) - (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) - (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): - New function types. - * gfortran.h (gfc_statement): Add ST_OACC_PARALLEL_LOOP, - ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL, - ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_DATA, - ST_OACC_END_DATA, ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, - ST_OACC_LOOP, ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE, - ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP, - ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA, - ST_OACC_ROUTINE. - (struct gfc_expr_list): New data type. - (gfc_get_expr_list): New macro. - (gfc_omp_map_op): Add OMP_MAP_FORCE_ALLOC, OMP_MAP_FORCE_DEALLOC, - OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM, OMP_MAP_FORCE_TOFROM, - OMP_MAP_FORCE_PRESENT, OMP_MAP_FORCE_DEVICEPTR. - (OMP_LIST_FIRST, OMP_LIST_DEVICE_RESIDENT, OMP_LIST_USE_DEVICE) - (OMP_LIST_CACHE): New enumerators. - (struct gfc_omp_clauses): Add async_expr, gang_expr, worker_expr, - vector_expr, num_gangs_expr, num_workers_expr, vector_length_expr, - wait_list, tile_list, async, gang, worker, vector, seq, - independent, wait, par_auto, gang_static, and loc members. - (struct gfc_namespace): Add oacc_declare_clauses member. - (gfc_exec_op): Add EXEC_OACC_KERNELS_LOOP, - EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS, - EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, - EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, - EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. - (gfc_free_expr_list, gfc_resolve_oacc_directive) - (gfc_resolve_oacc_declare, gfc_resolve_oacc_parallel_loop_blocks) - (gfc_resolve_oacc_blocks): New prototypes. - * match.c (match_exit_cycle): Handle EXEC_OACC_LOOP and - EXEC_OACC_PARALLEL_LOOP. - * match.h (gfc_match_oacc_cache, gfc_match_oacc_wait) - (gfc_match_oacc_update, gfc_match_oacc_declare) - (gfc_match_oacc_loop, gfc_match_oacc_host_data) - (gfc_match_oacc_data, gfc_match_oacc_kernels) - (gfc_match_oacc_kernels_loop, gfc_match_oacc_parallel) - (gfc_match_oacc_parallel_loop, gfc_match_oacc_enter_data) - (gfc_match_oacc_exit_data, gfc_match_oacc_routine): New - prototypes. - * openmp.c: Include "diagnostic.h" and "gomp-constants.h". - (gfc_free_omp_clauses): Update for members added to struct - gfc_omp_clauses. - (gfc_match_omp_clauses): Change mask paramter to uint64_t. Add - openacc parameter. - (resolve_omp_clauses): Add openacc parameter. Update for OpenACC. - (struct fortran_omp_context): Add is_openmp member. - (gfc_resolve_omp_parallel_blocks): Initialize it. - (gfc_resolve_do_iterator): Update for OpenACC. - (gfc_resolve_omp_directive): Call - resolve_omp_directive_inside_oacc_region. - (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_FIRSTPRIVATE) - (OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_COPYPRIVATE) - (OMP_CLAUSE_SHARED, OMP_CLAUSE_COPYIN, OMP_CLAUSE_REDUCTION) - (OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE) - (OMP_CLAUSE_DEFAULT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_COLLAPSE) - (OMP_CLAUSE_UNTIED, OMP_CLAUSE_FINAL, OMP_CLAUSE_MERGEABLE) - (OMP_CLAUSE_ALIGNED, OMP_CLAUSE_DEPEND, OMP_CLAUSE_INBRANCH) - (OMP_CLAUSE_LINEAR, OMP_CLAUSE_NOTINBRANCH, OMP_CLAUSE_PROC_BIND) - (OMP_CLAUSE_SAFELEN, OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_UNIFORM) - (OMP_CLAUSE_DEVICE, OMP_CLAUSE_MAP, OMP_CLAUSE_TO) - (OMP_CLAUSE_FROM, OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_THREAD_LIMIT) - (OMP_CLAUSE_DIST_SCHEDULE): Use uint64_t. - (OMP_CLAUSE_ASYNC, OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS) - (OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_COPY, OMP_CLAUSE_COPYOUT) - (OMP_CLAUSE_CREATE, OMP_CLAUSE_PRESENT) - (OMP_CLAUSE_PRESENT_OR_COPY, OMP_CLAUSE_PRESENT_OR_COPYIN) - (OMP_CLAUSE_PRESENT_OR_COPYOUT, OMP_CLAUSE_PRESENT_OR_CREATE) - (OMP_CLAUSE_DEVICEPTR, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER) - (OMP_CLAUSE_VECTOR, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT) - (OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_DEVICE_RESIDENT) - (OMP_CLAUSE_HOST_SELF, OMP_CLAUSE_OACC_DEVICE, OMP_CLAUSE_WAIT) - (OMP_CLAUSE_DELETE, OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): New macros. - (gfc_match_omp_clauses): Handle those. - (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES) - (OACC_LOOP_CLAUSES, OACC_PARALLEL_LOOP_CLAUSES) - (OACC_KERNELS_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES) - (OACC_DECLARE_CLAUSES, OACC_UPDATE_CLAUSES) - (OACC_ENTER_DATA_CLAUSES, OACC_EXIT_DATA_CLAUSES) - (OACC_WAIT_CLAUSES): New macros. - (gfc_free_expr_list, match_oacc_expr_list, match_oacc_clause_gang) - (gfc_match_omp_map_clause, gfc_match_oacc_parallel_loop) - (gfc_match_oacc_parallel, gfc_match_oacc_kernels_loop) - (gfc_match_oacc_kernels, gfc_match_oacc_data) - (gfc_match_oacc_host_data, gfc_match_oacc_loop) - (gfc_match_oacc_declare, gfc_match_oacc_update) - (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data) - (gfc_match_oacc_wait, gfc_match_oacc_cache) - (gfc_match_oacc_routine, oacc_is_loop) - (resolve_oacc_scalar_int_expr, resolve_oacc_positive_int_expr) - (check_symbol_not_pointer, check_array_not_assumed) - (resolve_oacc_data_clauses, resolve_oacc_deviceptr_clause) - (oacc_compatible_clauses, oacc_is_parallel, oacc_is_kernels) - (omp_code_to_statement, oacc_code_to_statement) - (resolve_oacc_directive_inside_omp_region) - (resolve_omp_directive_inside_oacc_region) - (resolve_oacc_nested_loops, resolve_oacc_params_in_parallel) - (resolve_oacc_loop_blocks, gfc_resolve_oacc_blocks) - (resolve_oacc_loop, resolve_oacc_cache, gfc_resolve_oacc_declare) - (gfc_resolve_oacc_directive): New functions. - * parse.c (next_free): Update for OpenACC. Move some code into... - (verify_token_free): ... this new function. - (next_fixed): Update for OpenACC. Move some code into... - (verify_token_fixed): ... this new function. - (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, - ST_OACC_CACHE, ST_OACC_ENTER_DATA, and ST_OACC_EXIT_DATA. - (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL, - ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP, - ST_OACC_KERNELS_LOOP. - (case_decl): Add ST_OACC_ROUTINE. - (push_state, parse_critical_block, parse_progunit): Update for - OpenACC. - (gfc_ascii_statement): Handle ST_OACC_PARALLEL_LOOP, - ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL, - ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_KERNELS_LOOP, - ST_OACC_END_KERNELS_LOOP, ST_OACC_DATA, ST_OACC_END_DATA, - ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, ST_OACC_LOOP, - ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE, ST_OACC_WAIT, - ST_OACC_CACHE, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA, - ST_OACC_ROUTINE. - (verify_st_order, parse_spec): Handle ST_OACC_DECLARE. - (parse_executable): Handle ST_OACC_PARALLEL_LOOP, - ST_OACC_KERNELS_LOOP, ST_OACC_LOOP, ST_OACC_PARALLEL, - ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA. - (decode_oacc_directive, parse_oacc_structured_block) - (parse_oacc_loop, is_oacc): New functions. - * parse.h (struct gfc_state_data): Add oacc_declare_clauses - member. - (is_oacc): New prototype. - * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Handle - EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL, - EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, EXEC_OACC_DATA, - EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, EXEC_OACC_UPDATE, - EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA, - EXEC_OACC_EXIT_DATA. - (resolve_codes): Call gfc_resolve_oacc_declare. - * scanner.c (openacc_flag, openacc_locus): New variables. - (skip_free_comments): Update for OpenACC. Move some code into... - (skip_omp_attribute): ... this new function. - (skip_oacc_attribute): New function. - (skip_fixed_comments, gfc_next_char_literal): Update for OpenACC. - * st.c (gfc_free_statement): Handle EXEC_OACC_PARALLEL_LOOP, - EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, - EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, - EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, - EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. - * trans-decl.c (gfc_generate_function_code): Update for OpenACC. - * trans-openmp.c: Include "gomp-constants.h". - (gfc_omp_finish_clause, gfc_trans_omp_clauses): Use GOMP_MAP_* - instead of OMP_CLAUSE_MAP_*. Use OMP_CLAUSE_SET_MAP_KIND. - (gfc_trans_omp_clauses): Handle OMP_LIST_USE_DEVICE, - OMP_LIST_DEVICE_RESIDENT, OMP_LIST_CACHE, and OMP_MAP_FORCE_ALLOC, - OMP_MAP_FORCE_DEALLOC, OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM, - OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT, - OMP_MAP_FORCE_DEVICEPTR, and gfc_omp_clauses' async, seq, - independent, wait_list, num_gangs_expr, num_workers_expr, - vector_length_expr, vector, vector_expr, worker, worker_expr, - gang, gang_expr members. - (gfc_trans_omp_do): Handle EXEC_OACC_LOOP. - (gfc_convert_expr_to_tree, gfc_trans_oacc_construct) - (gfc_trans_oacc_executable_directive) - (gfc_trans_oacc_wait_directive, gfc_trans_oacc_combined_directive) - (gfc_trans_oacc_declare, gfc_trans_oacc_directive): New functions. - * trans-stmt.c (gfc_trans_block_construct): Update for OpenACC. - * trans-stmt.h (gfc_trans_oacc_directive, gfc_trans_oacc_declare): - New prototypes. - * trans.c (tranc_code): Handle EXEC_OACC_CACHE, EXEC_OACC_WAIT, - EXEC_OACC_UPDATE, EXEC_OACC_LOOP, EXEC_OACC_HOST_DATA, - EXEC_OACC_DATA, EXEC_OACC_KERNELS, EXEC_OACC_KERNELS_LOOP, - EXEC_OACC_PARALLEL, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_ENTER_DATA, - EXEC_OACC_EXIT_DATA. - * gfortran.texi: Update for OpenACC. - * intrinsic.texi: Likewise. - * invoke.texi: Likewise. - -2015-01-15 Janus Weil <janus@gcc.gnu.org> - - PR fortran/58023 - * resolve.c (resolve_fl_derived0): Continue resolving next component - after error. - -2015-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/61933 - * io.c (gfc_match_inquire): Generate error if unit number in - inquire statement is a constant -1. All other values allowed. - * trans-io.c (gfc_trans_inquire): Delete dummy iostat variable. - (create_dummy_iostat): Delete function no longer used. - -2015-01-13 Jakub Jelinek <jakub@redhat.com> - - PR fortran/64528 - * trans-decl.c (create_function_arglist): Don't set TREE_READONLY - on dummy args with VALUE attribute. - -2015-01-11 Janus Weil <janus@gcc.gnu.org> - - PR fortran/63733 - * interface.c (gfc_extend_expr): Look for type-bound operators before - non-typebound ones. - -2015-01-11 Janus Weil <janus@gcc.gnu.org> - - PR fortran/58023 - * resolve.c (resolve_fl_derived0): Set error flag if problems with the - interface of a procedure-pointer component were detected. - -2015-01-11 Janus Weil <janus@gcc.gnu.org> - - PR fortran/64508 - * interface.c (compare_parameter): Interface check for - procedure-pointer component as actual argument. - -2015-01-10 Thomas Schwinge <thomas@codesourcery.com> - - * gfortran.texi: Update for libgomp being renamed from "GNU OpenMP - Runtime Library" to "GNU Offloading and Multi Processing Runtime - Library". - * intrinsic.texi: Likewise. - -2015-01-10 Tobias Burnus <burnus@net-b.de> - - PR fortran/64522 - * invoke.texi (Wline-truncation): Document new behaviour. - * lang.opt (Wline-truncation): Add Init(-1). - * options.c (gfc_post_options): If -Wline-truncation is unset, - enable it for free-form source files; for the latter, also use - -Werror=line-truncation, unless -Wno-error has been specified. - -2015-01-09 Michael Collison <michael.collison@linaro.org> - - * convert.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * cpp.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * decl.c: Ditto. - * f95.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * iresolve.c: Ditto. - * match.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * module.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * options.c: Ditto. - * target-memory.c: Include hash-set.h, vec.h, - double-int.h, input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans-array.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans-common.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans-const.c: Ditto. - * trans-decl.c: Ditto. - * trans-expr.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans-intrinsic.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, inchash.h and real.h due to flattening of tree.h. - * trans-io.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, options.h, fold-const.h, - wide-int.h, and inchash.h due to flattening of tree.h. - * trans-openmp.c: Ditto. - * trans-stmt.c: Ditto. - * trans-types.c: Include hash-set.h, machmode.h, vec.h, double-int.h, - input.h, alias.h, symtab.h, fold-const.h, - wide-int.h, inchash.h and real.h due to flattening of tree.h. - -2015-01-08 Tobias Burnus <burnus@net-b.de> - - * trans-decl.c (gfc_build_qualified_array): Fix coarray tokens - for module coarrays with -fcoarray=lib. - (get_proc_pointer_decl): As module variable, make only public - when not marked as private. - -2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org> - - PR fortran/47674 - * dependency.h: Actually commit changes. - -2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org> - - PR fortran/47674 - * dependency.c: Update copyright years. - (gfc_discard_nops): Add prototype. - * dependency.c (discard_nops): Rename to gfc_discard_nops, - make non-static. - (gfc_discard_nops): Use gfc_discard_nops. - (gfc_dep_difference): Likewise. - * frontend-passes.c Update copyright years. - (realloc_strings): New function. Add prototype. - (gfc_run_passes): Call realloc_strings. - (realloc_string_callback): New function. - (create_var): Add prototype. Handle case of a - scalar character variable. - (optimize_trim): Do not handle allocatable variables. - -2015-01-05 Jakub Jelinek <jakub@redhat.com> - - Update copyright years. - - * gfortranspec.c (lang_specific_driver): Update copyright notice - dates. - * gfc-internals.texi: Bump @copying's copyright year. - * gfortran.texi: Ditto. - * intrinsic.texi: Ditto. - * invoke.texi: Ditto. - -2015-01-02 Janus Weil <janus@gcc.gnu.org> - - PR fortran/57562 - * expr.c (find_component_ref): Deal with extended types. - -2015-01-02 Tobias Burnus <burnus@net-b.de> - - * trans-decl.c (gfc_build_qualified_array): Fix coarray tokens - for module coarrays with -fcoarray=lib. - -2015-01-02 Janus Weil <janus@gcc.gnu.org> - - PR fortran/60507 - * interface.c (is_procptr_result): New function to check if an - expression is a procedure-pointer result. - (compare_actual_formal): Use it. ^L Copyright (C) 2015 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2015 b/gcc/fortran/ChangeLog-2015 new file mode 100644 index 00000000000..82e09f9913c --- /dev/null +++ b/gcc/fortran/ChangeLog-2015 @@ -0,0 +1,1491 @@ +2015-12-15 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + Backport from mainline. + 2015-12-15 + Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * resolve.c (resolve_critical): Committing symbols of + lock variables. + +2015-12-14 Tobias Burnus <burnus@net-b.de> + Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + Backport from mainline. + 2015-12-09 Tobias Burnus <burnus@net-b.de> + Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * trans.c (gfc_allocate_using_lib,gfc_deallocate_with_status): + Introducing __asm__ __volatile__ ("":::"memory") + after image control statements. + * trans-stmt.c (gfc_trans_sync, gfc_trans_event_post_wait, + gfc_trans_lock_unlock, gfc_trans_critical): Ditto. + * trans-intrinsic.c (gfc_conv_intrinsic_caf_get, + conv_caf_send): Introducing __asm__ __volatile__ ("":::"memory") + after send, before get and around sendget. + +2015-12-04 Release Manager + + * GCC 5.3.0 released. + +2015-11-27 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/68218 + * trans-array.c (gfc_array_init_size): Add gfc_evaluate_now() when + array spec in allocate is a function call. + +2015-11-24 Paul Thomas <pault@gcc.gnu.org> + + Backport from trunk. + PR fortran/68196 + * class.c (has_finalizer_component): Prevent infinite recursion + through this function if the derived type and that of its + component are the same. + * trans-types.c (gfc_get_derived_type): Do the same for proc + pointers by ignoring the explicit interface for the component. + + PR fortran/66465 + * check.c (same_type_check): If either of the expressions is + BT_PROCEDURE, use the typespec from the symbol, rather than the + expression. + +2015-11-18 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/65751 + * expr.c (gfc_check_pointer_assign): Fix error message. + +2015-11-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/58027 + PR fortran/60993 + * expr.c (gfc_check_init_expr): Prevent a redundant check when a + __convert_* function was inserted into an array constructor. + (gfc_check_assign_symbol): Check for an initialization expression + when a __convert_* was inserted. + +2015-11-14 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67803 + * array.c (gfc_match_array_constructor): If array constructor included + a CHARACTER typespec, check array elements for compatible type. + +2015-11-13 Steven G. Kargl <kargl@gccc.gnu.org> + + PR fortran/68319 + * decl.c (gfc_match_data, gfc_match_entry): Enforce F2008:C1206. + * io.c (gfc_match_format): Ditto. + * match.c (gfc_match_st_function): Ditto. + +2015-11-12 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68318 + * decl.c (get_proc_name): Increment reference count for ENTRY. + While here, fix comment and use postfix ++ for consistency. + +2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org> + + PR fortran/68053 + * decl.c (add_init_expr_to_sym): Try to reduce initialization expression + before testing for a constant value. + +2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68224 + * array.c (match_array_element_spec): Check of invalid NULL(). + While here, fix nearby comments. + +2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68153 + * check.c (gfc_check_reshape): Improve check for valid SHAPE argument. + +2015-11-08 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68151 + * match.c (match_case_selector): Check for invalid type. + +2015-01-25 Paul Thomas <pault@gcc.gnu.org> + + Backported from trunk. + PR fortran/67171 + * trans-array.c (structure_alloc_comps): On deallocation of + class components, reset the vptr to the declared type vtable + and reset the _len field of unlimited polymorphic components. + *trans-expr.c (gfc_find_and_cut_at_last_class_ref): Bail out on + allocatable component references to the right of part reference + with non-zero rank and return NULL. + (gfc_reset_vptr): Simplify this function by using the function + gfc_get_vptr_from_expr. Return if the vptr is NULL_TREE. + (gfc_reset_len): If gfc_find_and_cut_at_last_class_ref returns + NULL return. + +2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/51993 + * decl.c (gfc_set_constant_character_len): Convert gcc_assert into an + if-statement causing an early return leads to valid error message. + +2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68154 + * decl.c (add_init_expr_to_sym): if the char length in the typespec + is NULL, check for and use a constructor. + +2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/36192 + * interface.c (get_expr_storage_size): Check for INTEGER type before + calling gmp routines. + +2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68055 + * decl.c (gfc_match_decl_type_spec): Check for valid kind in old-style + declarations. + +2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68054 + * decl.c (match_attr_spec): PROTECTED can only be a module. + +2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67939 + * data.c (create_character_initializer): Deal with zero length string. + +2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67885 + * trans-decl.c (generate_local_decl): Mark PARAMETER entities in + BLOCK construct. + +2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67805 + PR fortran/68108 + * array.c (gfc_match_array_constructor): Check for error from type + spec matching. + * decl.c (char_len_param_value): Check for valid of charlen parameter. + Check for REF_ARRAY. Reap dead code dating to 2008. + match.c (gfc_match_type_spec): Special case the keyword use in REAL. + +2015-10-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/67177 + PR fortran/67977 + Backport from mainline r228940: + * primary.c (match_substring): Add an argument 'deferred' to + flag that a substring reference with null start and end should + not be optimized away for deferred length strings. + (match_string_constant, gfc_match_rvalue): Set the argument. + * trans-expr.c (alloc_scalar_allocatable_for_assignment): If + there is a substring reference return. + * trans-intrinsic.c (conv_intrinsic_move_alloc): For deferred + characters, assign the 'from' string length to the 'to' string + length. If the 'from' expression is deferred, set its string + length to zero. If the 'to' expression has allocatable + components, deallocate them. + +2015-10-22 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/58754 + * trans-stmt.c (gfc_trans_allocate): Do not use the scalar + character assignment if the allocate expression is an array + descriptor. + +2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67900 + * resolve.c (gfc_verify_binding_labels): Check for NULL pointer. + +2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/68019 + * decl.c (add_init_expr_to_sym): Remove an assert() to allow an error + message to be issued. + +2015-10-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67987 + * decl.c (char_len_param_value): Unwrap unlong line. If LEN < 0, + force it to zero per the Fortran 90, 95, 2003, and 2008 Standards. + * resolve.c (gfc_resolve_substring_charlen): Unwrap unlong line. + If 'start' is larger than 'end', length of substring is negative, + so explicitly set it to zero. + (resolve_charlen): Remove -Wsurprising warning. Update comment to + reflect that the text is from the F2008 standard. + +2015-10-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/66079 + Backport from mainline r224383: + + * trans-expr.c (gfc_conv_procedure_call): Allocatable scalar + function results must be freed and nullified after use. Create + a temporary to hold the result to prevent duplicate calls. + * trans-stmt.c (gfc_trans_allocate): Rename temporary variable + as 'source'. Deallocate allocatable components of non-variable + 'source's. + +2015-10-18 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/67721 + PR fortran/67818 + Backport from mainline r222477: + + 2015-04-27 Andre Vehreschild <vehre@gmx.de> + + PR fortran/59678 + PR fortran/65841 + * trans-array.c (duplicate_allocatable): Fixed deep copy of + allocatable components, which are liable for copy only, when + they are allocated. + (gfc_duplicate_allocatable): Add deep-copy code into if + component allocated block. Needed interface change for that. + (gfc_copy_allocatable_data): Supplying NULL_TREE for code to + add into if-block for checking whether a component was + allocated. + (gfc_duplicate_allocatable_nocopy): Likewise. + (structure_alloc_comps): Likewise. + * trans-array.h: Likewise. + * trans-expr.c (gfc_trans_alloc_subarray_assign): Likewise. + * trans-openmp.c (gfc_walk_alloc_comps): Likewise. + +2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67802 + * decl.c (add_init_expr_to_sym): Numeric constant for character + length must be an INTEGER. + +2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67616 + * primary.c (gfc_match_structure_constructor): Use a possibly + host-associated symtree to prevent ICE. + +2015-10-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66979 + * io.c (gfc_resolve_filepos): Check for a UNIT number. Add a nearby + missing 'return false'. + +2015-10-01 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/67721 + * trans-expr.c (gfc_trans_assignment_1): Remove the non-constantness + condition guarding deep copy. + +2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67614 + * resolve.c (gfc_resolve_code): Prevent ICE for invalid EXPR_NULL. + +2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67525 + * parse.c (match_deferred_characteristics): Remove an assert, which + allows an invalid SELECT TYPE selector to be detected. + +2015-09-21 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67615 + * resolve.c (gfc_resolve_code): Check for scalar expression in + arithmetic-if. + +2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/67526 + * expr.c (gfc_check_init_expr): Do not dereference a NULL pointer. + +2015-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR fortran/67429 + * error.c (gfc_clear_pp_buffer): Reset last_location, otherwise + caret lines might be skipped when actually giving a diagnostic. + +2015-08-07 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/66929 + * trans-array.c (gfc_get_proc_ifc_for_expr): Use esym as procedure + symbol if available. + +2015-08-05 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/64921 + * class.c (generate_finalization_wrapper): Set finalization + procedure symbol's always_explicit attribute. + +2015-08-03 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66942 + * trans-expr.c (gfc_conv_procedure_call): Avoid NULL pointer reference + +2015-07-25 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/64986 + * trans-expr.c (gfc_trans_assignment_1): Put component deallocation + code at the beginning of the block. + +2015-07-21 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/66035 + * trans-expr.c (alloc_scalar_allocatable_for_subcomponent_assignment): + Compute the size to allocate for class and derived type objects + correclty. + (gfc_trans_subcomponent_assign): Only allocate memory for a + component when the object to assign is not an allocatable class + object (the memory is already present for allocatable class objects). + Furthermore use copy_class_to_class for assigning the rhs to the + component (may happen for dummy class objects on the rhs). + +2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * trans-intrinsic.c (conv_co_collective): Remove redundant address + operator in the generated code. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66724 + PR fortran/66724 + * io.c (is_char_type): Call gfc_resolve_expr (). + (match_open_element, match_dt_element, match_inquire_element): Fix + ASYNCHRONOUS case. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66864 + * simplify.c (gfc_simplify_floor): Set precision of temporary to + that of arg. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66545 + * primary.c (match_sym_complex_part): Do not dereference NULL pointer. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/56520 + * match.c (gfc_match_name): Special case unary minus and plus. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + * io.c (check_char_variable): New function. + (match_open_element, match_close_element, match_file_element, + match_dt_element, match_inquire_element, match_wait_element): Use it. + +2015-07-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66725 + * io.c (is_char_type): New function to test for BT_CHARACTER + (gfc_match_open, gfc_match_close, match_dt_element): Use it. + +2015-07-16 Release Manager + + * GCC 5.2.0 released. + +2015-06-24 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/66549 + * resolve.c (resolve_global_procedure): Don't save and restore + OpenMP state around the call to gfc_resolve. + (gfc_resolve): Save OpenMP state on entry and restore it on return. + +2015-06-14 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/66385 + Backport from trunk + * frontend-passes.c (combine_array_constructor): Return early if + inside a FORALL loop. + +2015-06-14 Thomas Koenig <tkoenig@gcc.gnu.org> + + * intrinsic.texi: Change \leq to < in descrition of imaginary + part in argument to log. + +2015-06-11 Pierre-Marie de Rodat <derodat@adacore.com> + + * f95-lang.c (gfc_create_decls): Register the main translation unit + through the new debug hook. + +2015-06-08 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66245 + * match.c (gfc_match_type_is, gfc_match_class_is): Check if the + return type spec or derived type spec is validate. + +2015-06-05 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66347 + * resolve.c (apply_default_init_local): Do not dereference a NULL + pointer. + +2015-06-05 Russell Whitesides <russelldub@gmail.com> + Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/40958 + PR fortran/60780 + PR fortran/66377 + * module.c (load_equiv): Add check for loading duplicate EQUIVALENCEs + from different modules. Eliminate the pruning of unused + equivalence-objects + + +2015-06-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66380 + * simplify.c (gfc_simplify_reshape): Convert assert into returning + NULL, which triggers an error condition. + +2015-05-29 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/66257 + * resolve.c (resolve_actual_arglist): Don't throw an error + if the argument with procedure pointer component is not a variable. + +2015-05-22 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2015-05-19 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/66199 + * trans-openmp.c (gfc_trans_omp_teams): Set OMP_TEAMS_COMBINED for + combined constructs. + (gfc_trans_omp_target): Make sure BIND_EXPR has non-NULL + BIND_EXPR_BLOCK. + +2015-05-19 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/65903 + * io.c (format_lex): Change to NONSTRING when checking for + possible doubled quote. + * scanner.c (gfc_next_char_literal): Revert change from 64506 + and add a check for quotes and return. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66106 + * interface.c(gfc_match_end_interface): Enforce F2008 C1202 (R1201). + * match.c(gfc_op2string): Return 'none' for INTRINSIC_NONE. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66057 + * decl.c(gfc_match_generic): Detected a malformed GENERIC statement. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66052 + * decl.c(gfc_match_protected): Prevent dereference of NULL pointer. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66045 + * expr.c (gfc_check_assign): Check for assignment of NULL() instead + of the (intended) pointer assignment. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66044 + * decl.c(gfc_match_entry): Change a gfc_internal_error() into + a gfc_error() + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66043 + * check.c (gfc_check_storage_size): Prevent the direct use of NULL() + in STORAGE_SIZE() reference. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66040 + * parse.c(verify_st_order): Replace a gfc_internal_error with your + generic gfc_error. + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/66039 + * io.c (match_filepos): Check for incomplete/mangled REWIND, FLUSH, + BACKSPACE, and ENDFILE statements + +2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/64925 + * symbol.c(check_conflict): Check for a conflict between a dummy + argument and an internal procedure name. + +2015-05-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/65976 + * invoke.texi: Remove 'no-' in '-fno-fixed-form' + +2015-04-22 Release Manager + + * GCC 5.1.0 released. + +2015-04-22 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/65429 + * decl.c (add_init_expr_to_sym): Set the length type parameter. + +2015-04-10 Tobias Burnus <burnus@net-b.de> + + * trans-stmt.c (gfc_trans_lock_unlock): Implement -fcoarray=lib + version; reject not-yet-implemented variants. + * trans-types.c (gfc_get_derived_type): For lock_type with + -fcoarray=lib, use a void pointer as type. + * trans.c (gfc_allocate_using_lib, gfc_allocate_allocatable): + Handle lock_type with -fcoarray=lib. + +2015-04-10 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/56674 + PR fortran/58813 + PR fortran/59016 + PR fortran/59024 + * symbol.c (save_symbol_data, gfc_save_symbol_data): Rename the + former to the latter and make it non-static. Update callers. + * gfortran.h (gfc_save_symbol_data): New prototype. + * decl.c (gfc_match_decl_type_spec): Call 'gfc_save_symbol_data' + before modifying symbols 'sym' and 'dt_sym'. + +2013-04-09 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/56852 + * primary.c (gfc_variable_attr): Avoid ICE on AR_UNKNOWN if any + of the index variables are untyped and errors are present. + +2015-04-07 Andre Vehreschild <vehre@gmx.de> + + PR fortran/65548 + * trans-stmt.c (gfc_trans_allocate): For intrinsic functions + use conv_expr_descriptor() instead of conv_expr_reference(). + +2015-03-30 Jakub Jelinek <jakub@redhat.com> + + PR fortran/65597 + * trans-openmp.c (gfc_trans_omp_do): For !simple simd with explicit + linear clause for the iterator set OMP_CLAUSE_LINEAR_NO_COPYIN. + For implcitly added !simple OMP_CLAUSE_LINEAR set it too. Use step 1 + instead of the original step on the new iterator - count. + +2015-03-25 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/64952 + PR fortran/65532 + * gfortran.h (struct gfc_namespace): New field 'types_resolved'. + * resolve.c (resolve_types): Return early if field 'types_resolved' + is set. Set 'types_resolved' at the end. + +2015-03-24 Andre Vehreschild <vehre@gmx.de> + + PR fortran/55901 + * trans-expr.c (gfc_conv_structure): Fixed indendation. + Using integer_zero_node now instead of explicitly + constructing a integer constant zero node. + (gfc_conv_derived_to_class): Add handling of _len component, + i.e., when the rhs has a string_length then assign that to + class' _len, else assign 0. + (gfc_conv_intrinsic_to_class): Likewise. + +2015-03-24 Andre Vehreschild <vehre@gmx.de> + + PR fortran/64787 + PR fortran/57456 + PR fortran/63230 + * class.c (gfc_add_component_ref): Free no longer needed + ref-chains to prevent memory loss. + (find_intrinsic_vtab): For deferred length char arrays or + unlimited polymorphic objects, store the size in bytes of one + character in the size component of the vtab. + * gfortran.h: Added gfc_add_len_component () define. + * trans-array.c (gfc_trans_create_temp_array): Switched to new + function name for getting a class' vtab's field. + (build_class_array_ref): Likewise. + (gfc_array_init_size): Using the size information from allocate + more consequently now, i.e., the typespec of the entity to + allocate is no longer needed. This is to address the last open + comment in PR fortran/57456. + (gfc_array_allocate): Likewise. + (structure_alloc_comps): gfc_copy_class_to_class () needs to + know whether the class is unlimited polymorphic. + * trans-array.h: Changed interface of gfc_array_allocate () to + reflect the no longer needed typespec. + * trans-expr.c (gfc_find_and_cut_at_last_class_ref): New. + (gfc_reset_len): New. + (gfc_get_class_array_ref): Switch to new function name for + getting a class' vtab's field. + (gfc_copy_class_to_class): Added flag to know whether the class + to copy is unlimited polymorphic. Adding _len dependent code + then, which calls ->vptr->copy () with four arguments adding + the length information ->vptr->copy(from, to, from_len, to_cap). + (gfc_conv_procedure_call): Switch to new function name for + getting a class' vtab's field. + (alloc_scalar_allocatable_for_assignment): Use the string_length + as computed by gfc_conv_expr and not the statically backend_decl + which may be incorrect when ref-ing. + (gfc_trans_assignment_1): Use the string_length variable and + not the rse.string_length. The former has been computed more + generally. + * trans-intrinsic.c (gfc_conv_intrinsic_sizeof): Switch to new + function name for getting a class' vtab's field. + (gfc_conv_intrinsic_storage_size): Likewise. + (gfc_conv_intrinsic_transfer): Likewise. + * trans-stmt.c (gfc_trans_allocate): Restructured to evaluate + source=expr3 only once before the loop over the objects to + allocate, when the objects are not arrays. Doing correct _len + initialization and calling of vptr->copy () fixing PR 64787. + (gfc_trans_deallocate): Reseting _len to 0, preventing future + errors. + * trans.c (gfc_build_array_ref): Switch to new function name + for getting a class' vtab's field. + (gfc_add_comp_finalizer_call): Likewise. + * trans.h: Define the prototypes for the gfc_class_vtab_*_get () + and gfc_vptr_*_get () functions. + Added gfc_find_and_cut_at_last_class_ref () and + gfc_reset_len () routine prototype. Added flag to + gfc_copy_class_to_class () prototype to signal an unlimited + polymorphic entity to copy. + +2015-03-24 Iain Sandoe <iain@codesourcery.com> + Tobias Burnus <burnus@net-b.de> + + * gfortran.texi (_gfortran_caf_sync_memory): Improve wording. + +2015-03-23 Paul Thomas <pault@gcc.gnu.org> + Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/64952 + * gfortran.h (struct symbol_attribute) : New field + 'array_outer_dependency'. + * trans.h (struct gfc_ss_info): New field 'array_outer_dependency'. + * module.c (enum ab_attribute): New value AB_ARRAY_OUTER_DEPENDENCY. + (attr_bits): Append same value to initializer. + (mio_symbol_attribute): Handle 'array_outer_dependency' attr + in module read and write. + * resolve.c (update_current_proc_outer_array_dependency): New function. + (resolve_function, resolve_call): Add code to update current procedure's + 'array_outer_dependency' attribute. + (resolve_variable): Mark current procedure with attribute + array_outer_dependency if the variable is an array coming from outside + the current namespace. + (resolve_fl_procedure): Mark a procedure without body with attribute + 'array_outer_dependency'. + * trans-array.c (gfc_conv_resolve_dependencies): If any ss is + marked as 'array_outer_dependency' generate a temporary. + (gfc_walk_function_expr): If the function may reference external arrays, + mark the head gfc_ss with flag 'array_outer_dependency'. + +2015-03-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libgfortran/59513 + * gfortran.texi (Read/Write after EOF marker): New information. + +2015-03-21 H.J. Lu <hongjiu.lu@intel.com> + + * gfortran.texi (_gfortran_caf_sync_memory): Put @{xxx} in one + line. + +2015-03-21 Tobias Burnus <burnus@net-b.de> + + * gfortran.texi (_gfortran_caf_sync_all, _gfortran_caf_sync_images, + _gfortran_caf_sync_memory, _gfortran_caf_error_stop, + _gfortran_caf_error_stop_str, _gfortran_caf_atomic_define, + _gfortran_caf_atomic_ref, _gfortran_caf_atomic_cas, + _gfortran_caf_atomic_op): New sections. + +2015-03-21 Tobias Burnus <burnus@net-b.de> + + * trans-expr.c (gfc_get_tree_for_caf_expr): Reject unimplemented + coindexed coarray accesses. + +2015-03-17 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/59198 + * trans-types.c (gfc_get_derived_type): If an abstract derived + type with procedure pointer components has no other type of + component, return the backend_decl. Otherwise build the + components if any of the non-procedure pointer components have + no backend_decl. + +2015-03-16 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/64432 + *trans-intrinisic.c (conv_intrinsic_system_clock): Check the + smallest kind passed in user arguments and hardcode tesults for + KIND=1 or KIND=2 to indicate no clock available. + +2015-03-16 Andre Vehreschild <vehre@gmx.de> + + * resolve.c: Prevent segfault on illegal input. + +2015-03-14 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/61138 + * trans-expr.c (gfc_trans_pointer_assignment): Clear DESCRIPTOR_ONLY + field before reusing LSE. + +2015-03-11 Janne Blomqvist <jb@gcc.gnu.org> + + PR libfortran/65200 + * gfortran.texi: Document behavior when opening files without + explicit ACTION= specifier. + +2015-03-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/65024 + * trans-expr.c (gfc_conv_component_ref): If the component + backend declaration is missing and the derived type symbol is + available in the reference, call gfc_build_derived_type. + +2015-03-10 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + Tobias Burnus <burnus@net-b.de> + + * trans.h (caf_sync_memory): New function decl tree. + * trans-decl.c (gfc_build_builtin_function_decls): Define it. + (create_main_function): Don't call sync_synchronize and leave + it to the CAF library. + * trans-stmt.c (gfc_trans_stop): Ditto. + (gfc_trans_sync): Ditto; add call library call for sync memory. + +2015-03-08 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/60898 + * resolve.c (resolve_symbol): Check that the symbol found by + name lookup really is the current symbol being resolved. + +2015-03-02 Tobias Burnus <burnus@net-b.de> + + * check.c (gfc_check_atomic): Properly check for coarrayness + and for being coindexed. + +2015-02-26 Martin Liska <mliska@suse.cz> + + * resolve.c: Rename enum 'comparison' to 'compare_result' as + solution for -Wodr issue. + +2015-02-24 Thomas Schwinge <thomas@codesourcery.com> + + PR libgomp/64625 + * f95-lang.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): + Remove macros. + (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros. + * types.def (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) + (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): + Remove function types. + (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR) + (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_INT_INT_VAR) + (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): + New function types. + +2015-02-22 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR fortran/64980 + PR fortran/61960 + * trans-expr.c (gfc_apply_interface_mapping_to_expr): Remove mapping + for component references to class objects. + (gfc_conv_procedure_call): Compare the class by name. + +2015-02-13 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/64506 + * scanner.c (gfc_next_char_literal): For free form source, + check for '!' and if found, clear the comment and go back + and get the next character. For fixed form source, skip the + rest of the line. + +2015-02-12 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/64932 + * trans-stmt.c (gfc_trans_deallocate): If a component array + expression is not a descriptor type and it is a derived type + that has allocatable components and is not finalizable, then + deallocate the allocatable components. + +2015-02-08 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/63744 + * module.c (check_for_ambiguous): Change argument type + from gfc_symbol to gfc_symtree. Check local (symtree) name + instead of original (symbol) name. + (read_module): Update caller. + +2015-02-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/63205 + * gfortran.h: Add 'must finalize' field to gfc_expr and + prototypes for gfc_is_alloc_class_scalar_function and for + gfc_is_alloc_class_array_function. + * expr.c (gfc_is_alloc_class_scalar_function, + gfc_is_alloc_class_array_function): New functions. + * trans-array.c (gfc_add_loop_ss_code): Do not move the + expression for allocatable class scalar functions outside the + loop. + (conv_array_index_offset): Cope with deltas being NULL_TREE. + (build_class_array_ref): Do not return with allocatable class + array functions. Add code to pick out the returned class array. + Dereference if necessary and return if not a class object. + (gfc_conv_scalarized_array_ref): Cope with offsets being NULL. + (gfc_walk_function_expr): Return an array ss for the result of + an allocatable class array function. + * trans-expr.c (gfc_conv_subref_array_arg): Remove the assert + that the argument should be a variable. If an allocatable class + array function, set the offset to zero and skip the write-out + loop in this case. + (gfc_conv_procedure_call): Add allocatable class array function + to the assert. Call gfc_conv_subref_array_arg for allocatable + class array function arguments with derived type formal arg.. + Add the code for handling allocatable class functions, including + finalization calls to prevent memory leaks. + (arrayfunc_assign_needs_temporary): Return if an allocatable + class array function. + (gfc_trans_assignment_1): Set must_finalize to rhs expression + for allocatable class functions. Set scalar_to_array as needed + for scalar class allocatable functions assigned to an array. + Nullify the allocatable components corresponding the the lhs + derived type so that the finalization does not free them. + +2015-01-29 Andre Vehreschild <vehre@gmx.de> + Janus Weil <janus@gcc.gnu.org> + + PR fortran/60289 + Initial patch by Janus Weil + * resolve.c (resolve_allocate_expr): Add check for comp. only + when target is not unlimited polymorphic. + * trans-stmt.c (gfc_trans_allocate): Assign correct value to + _len component of unlimited polymorphic entities. + +2015-02-05 Tobias Burnus <burnus@net-b.de> + + PR fortran/64943 + * resolve.c (resolve_transfer): Also check structure + constructors. + +2015-02-05 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/64757 + * resolve.c (resolve_structure_cons): Obtain the rank of class + components. + * trans-expr.c (gfc_trans_alloc_subarray_assign): Do the + assignment to allocatable class array components. + (alloc_scalar_allocatable_for_subcomponent_assignment): If comp + is a class component, allocate to the _data field. + (gfc_trans_subcomponent_assign): If a class component with a + derived type expression set the _vptr field and for array + components, call gfc_trans_alloc_subarray_assign. For scalars, + the assignment is performed here. + +2015-02-04 Jakub Jelinek <jakub@redhat.com> + + * options.c: Include langhooks.h. + (gfc_post_options): Change lang_hooks.name based on + selected -std= mode. + +2015-02-03 Steven G. Kargl <kargl@gcc.gnu.org> + + * intrinsic.texi (CO_ASSOCIATED): c_prt_1 should be c_ptr_1. + +2015-01-30 Andre Vehreschild <vehre@gmx.de> + + * trans-decl.c (gfc_get_symbol_decl): Removed duplicate code. + * trans-expr.c (gfc_conv_intrinsic_to_class): Fixed indentation. + Fixed datatype of charlen to be a 32-bit int. + +2015-02-01 Joseph Myers <joseph@codesourcery.com> + + * error.c (gfc_warning (const char *, ...), gfc_warning_now (const + char *, ...)): Remove functions. + * gfortran.h (gfc_warning (const char *, ...), gfc_warning_now + (const char *, ...)): Remove declarations. + * arith.c, check.c, data.c, decl.c, frontend-passes.c, + interface.c, intrinsic.c, io.c, matchexp.c, module.c, openmp.c, + options.c, parse.c, primary.c, resolve.c, scanner.c, symbol.c, + trans-common.c, trans-const.c, trans-stmt.c: All callers of + gfc_warning and gfc_warning_now changed to pass 0 or option number + as first argument. + +2015-01-30 Joseph Myers <joseph@codesourcery.com> + + * f95-lang.c, gfortranspec.c, trans-const.c, trans-expr.c: All + callers of fatal_error changed to pass input_location as first + argument. + +2015-01-28 Tobias Burnus <burnus@net-b.de> + + * intrinsic.texi (CO_BROADCAST): Correct argument description. + +2015-01-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/63861 + * trans-openmp.c (gfc_has_alloc_comps, gfc_trans_omp_clauses): + Fix handling for scalar coarrays. + * trans-types.c (gfc_get_element_type): Add comment. + +2015-01-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR fortran/64771 + * interface.c: Remove <algorithm>. + (check_dummy_characteristics): Use MAX instead of std::max. + +2015-01-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/62044 + * resolve.c (resolve_allocate_expr): If the default initializer + is NULL, keep the original MOLD expression so that the correct + typespec is available. + +2015-01-26 Tobias Burnus <burnus@net-b.de> + + PR fortran/64771 + * interface.c (check_dummy_characteristics): Fix coarray handling. + +2015-01-26 Tobias Burnus <burnus@net-b.de> + + * io.c (gfc_match_inquire): Replace "-1" by a defined constant. + +2015-01-26 Janus Weil <janus@gcc.gnu.org> + + PR fortran/64230 + * class.c (finalize_component): New argument 'sub_ns'. Insert code to + check if 'expr' is associated. + (generate_finalization_wrapper): Rename 'ptr' symbols to 'ptr1' and + 'ptr2'. Pass 'sub_ns' to finalize_component. + +2015-01-25 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/62044 + * decl.c (gfc_match_derived_decl): Don't insert a new symtree element. + * module.c (MOD_VERSION): Bump. + (write_module): Don't write list of extensions. + (read_module): Don't jump over list of extensions; + don't load list of extensions. + (load_derived_extensions, write_dt_extensions, + write_derived_extensions): Remove. + +2015-01-24 Tobias Burnus <burnus@net-b.de> + + * parse.c (gfc_parse_file): Fix two-location gfc_error call. + +2015-01-23 Martin Liska <mliska@suse.cz> + + * decl.c (attr_decl1): Workaround -Wmaybe-uninitialized + false positive during profiledbootstrap by initializing them. + * matchexp.c (match_mult_operand): Likewise. + * module.c (write_atom): Likewise. + (read_module): Likewise. + +2015-01-23 Tom de Vries <tom@codesourcery.com> + + PR libgomp/64672 + * lang.opt (fopenacc): Mark as LTO option. + +2015-01-23 Tom de Vries <tom@codesourcery.com> + + PR libgomp/64707 + * lang.opt (fopenmp): Mark as LTO option. + +2015-01-23 Andre Vehreschild <vehre@gmx.de> + + * trans-decl.c (gfc_finish_var_decl): Fixed moved comment. + * trans-stmt.c (gfc_trans_allocate): Fixed indentation. + +2015-01-23 Jakub Jelinek <jakub@redhat.com> + + * gfc-diagnostic.def (DK_ICE_NOBT): New kind. + +2015-01-23 Janus Weil <janus@gcc.gnu.org> + + PR fortran/60922 + * class.c (finalize_component): Apply the check for 'fini_coarray' only + to coarray components. + +2015-01-23 Tobias Burnus <burnus@net-b.de> + + PR fortran/64726 + * trans-openmp.c (gfc_trans_oacc_combined_directive): Fix + loop generation. + +2015-01-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/61933 + * libgfortran.h: + * trans-io.c (set_parameter_value): Delete use of has_iostat. + Redefine to not generate any runtime error check calls. + (set_parameter_value_chk): Rename of the former + set_parameter_value with the runtime error checks and fix + whitespace. (set_parameter_value_inquire): New function that + builds a runtime conditional block to set the INQUIRE + common parameter block unit number to -2 when unit numbers + exceed positive KIND=4 limits. (gfc_trans_open): Whitespace. + For unit, use the renamed set_parameter_value_chk. + (gfc_trans_close): Likewise use renamed function. + (build_filepos): Whitespace and use renamed function. + (gfc_trans_inquire): Whitespace and for unit use + set_parameter_value and set_parameter_value_inquire. + (gfc_trans_wait): Remove p->iostat from call to + set_parameter_value. Use new set_parameter_value_chk for unit. + (build_dt): Use the new set_parameter_value without p->iostat + and fix whitespace. Use set_parameter_value_chk for unit. + +2015-01-21 Thomas Koenig <tkoenig@netcologne.de> + + PR fortran/57023 + * dependency.c (callback_dummy_intent_not_int): New function. + (dummy_intent_not_in): New function. + (gfc_full_array_ref_p): Use dummy_intent_not_in. + +2015-01-18 Andre Vehreschild <vehre@gmx.de> + Janus Weil <janus@gcc.gnu.org> + + PR fortran/60255 + * class.c (gfc_get_len_component): New. + (gfc_build_class_symbol): Add _len component to unlimited + polymorphic entities. + (find_intrinsic_vtab): Removed emitting of error message. + * gfortran.h: Added prototype for gfc_get_len_component. + * simplify.c (gfc_simplify_len): Use _len component where + available. + * trans-expr.c (gfc_class_len_get): New. + (gfc_conv_intrinsic_to_class): Add handling for deferred + character arrays. + (gfc_conv_structure): Treat _len component correctly. + (gfc_conv_expr): Prevent bind_c handling when not required. + (gfc_trans_pointer_assignment): Propagate _len component. + * trans-stmt.c (class_has_len_component): New. + (trans_associate_var): _len component treatment for associate + context. + (gfc_trans_allocate): Same as for trans_associate_var() + * trans.h: Added prototype for gfc_class_len_get. + +2015-01-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/57959 + * trans-expr.c (gfc_trans_subcomponent_assign): Use a deep copy + for allocatable components, where the source is a variable. + +2015-01-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55901 + * primary.c (gfc_match_varspec): Exclude dangling associate- + names with dimension 0 from being counted as arrays. + * resolve.c (resolve_assoc_var): Sub-strings are permissible + for associate-names, so exclude characters from the test for + misuse as arrays. + * trans-decl.c (gfc_get_symbol_decl): Associate-names can use + the hidden string length variable of their associated target. + Signal this by setting 'length' to a constant, if the decl for + the string length is a variable. + +2015-01-17 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/64578 + * trans-expr.c (gfc_trans_pointer_assignment): Make sure that + before reinitializing rse, to add the rse.pre to block before + creating 'ptrtemp'. + * trans-intrinsic.c (gfc_conv_associated): Deal with the class + data being a descriptor. + +2015-01-17 Andre Vehreschild <vehre@gmx.de> + + PR fortran/60357 + * primary.c (build_actual_constructor): Prevent warning. + * trans-expr.c (alloc_scalar_allocatable_for_subcomponent_ + assignment): New function encapsulates treatment of allocatable + components. + (gfc_trans_subcomponent_assign): Needed to distinguish between + regular assignment and initilization. + (gfc_trans_structure_assign): Same. + (gfc_conv_structure): Same. + + PR fortran/61275 + * gfortran.h: deferred_parameter is not needed, because + it artificial does the trick completely. + * primary.c (build_actual_constructor): Same. + (gfc_convert_to_structure_constructor): Same. + * resolve.c (resolve_fl_derived0): Same. + * trans-expr.c (gfc_conv_component_ref): Prevent treating + allocatable deferred length char arrays here. + (gfc_trans_subcomponent_assign): Same as above. + * trans-types.c (gfc_sym_type): This is done in + gfc_get_derived_type already. + +2015-01-17 Andre Vehreschild <vehre@gmx.de> + + PR fortran/60334 + * trans-decl.c (gfc_get_symbol_decl):Use a ref on the string + length when the symbol is declared to be a result. + * trans-expr.c (gfc_conv_procedure_call): Strip deref on the + string length when functions are nested and the string length + is a reference already. + +2015-01-16 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45290 + * decl.c (match_pointer_init): Error out if resolution of init expr + failed. + +2015-01-15 Tobias Burnus <burnus@net-b.de> + + * openmp.c (check_symbol_not_pointer, resolve_oacc_data_clauses, + resolve_oacc_deviceptr_clause, resolve_omp_clauses, + gfc_resolve_oacc_declare): Replace '%s' by %qs. + +2015-01-15 Thomas Schwinge <thomas@codesourcery.com> + Cesar Philippidis <cesar@codesourcery.com> + James Norris <jnorris@codesourcery.com> + Ilmir Usmanov <i.usmanov@samsung.com> + Tobias Burnus <burnus@net-b.de> + + * lang.opt (fopenacc): New option. + * cpp.c (cpp_define_builtins): Conditionally define _OPENACC. + * dump-parse-tree.c (show_omp_node): Split part of it into... + (show_omp_clauses): ... this new function. + (show_omp_node, show_code_node): Handle EXEC_OACC_PARALLEL_LOOP, + EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, + EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, + EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, + EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. + (show_namespace): Update for OpenACC. + * f95-lang.c (DEF_FUNCTION_TYPE_VAR_2, DEF_FUNCTION_TYPE_VAR_8) + (DEF_FUNCTION_TYPE_VAR_12, DEF_GOACC_BUILTIN) + (DEF_GOACC_BUILTIN_COMPILER): New macros. + * types.def (BT_FN_VOID_INT_INT_VAR) + (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR) + (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR): + New function types. + * gfortran.h (gfc_statement): Add ST_OACC_PARALLEL_LOOP, + ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL, + ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_DATA, + ST_OACC_END_DATA, ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, + ST_OACC_LOOP, ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE, + ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP, + ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA, + ST_OACC_ROUTINE. + (struct gfc_expr_list): New data type. + (gfc_get_expr_list): New macro. + (gfc_omp_map_op): Add OMP_MAP_FORCE_ALLOC, OMP_MAP_FORCE_DEALLOC, + OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM, OMP_MAP_FORCE_TOFROM, + OMP_MAP_FORCE_PRESENT, OMP_MAP_FORCE_DEVICEPTR. + (OMP_LIST_FIRST, OMP_LIST_DEVICE_RESIDENT, OMP_LIST_USE_DEVICE) + (OMP_LIST_CACHE): New enumerators. + (struct gfc_omp_clauses): Add async_expr, gang_expr, worker_expr, + vector_expr, num_gangs_expr, num_workers_expr, vector_length_expr, + wait_list, tile_list, async, gang, worker, vector, seq, + independent, wait, par_auto, gang_static, and loc members. + (struct gfc_namespace): Add oacc_declare_clauses member. + (gfc_exec_op): Add EXEC_OACC_KERNELS_LOOP, + EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS, + EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, + EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, + EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. + (gfc_free_expr_list, gfc_resolve_oacc_directive) + (gfc_resolve_oacc_declare, gfc_resolve_oacc_parallel_loop_blocks) + (gfc_resolve_oacc_blocks): New prototypes. + * match.c (match_exit_cycle): Handle EXEC_OACC_LOOP and + EXEC_OACC_PARALLEL_LOOP. + * match.h (gfc_match_oacc_cache, gfc_match_oacc_wait) + (gfc_match_oacc_update, gfc_match_oacc_declare) + (gfc_match_oacc_loop, gfc_match_oacc_host_data) + (gfc_match_oacc_data, gfc_match_oacc_kernels) + (gfc_match_oacc_kernels_loop, gfc_match_oacc_parallel) + (gfc_match_oacc_parallel_loop, gfc_match_oacc_enter_data) + (gfc_match_oacc_exit_data, gfc_match_oacc_routine): New + prototypes. + * openmp.c: Include "diagnostic.h" and "gomp-constants.h". + (gfc_free_omp_clauses): Update for members added to struct + gfc_omp_clauses. + (gfc_match_omp_clauses): Change mask paramter to uint64_t. Add + openacc parameter. + (resolve_omp_clauses): Add openacc parameter. Update for OpenACC. + (struct fortran_omp_context): Add is_openmp member. + (gfc_resolve_omp_parallel_blocks): Initialize it. + (gfc_resolve_do_iterator): Update for OpenACC. + (gfc_resolve_omp_directive): Call + resolve_omp_directive_inside_oacc_region. + (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_FIRSTPRIVATE) + (OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_COPYPRIVATE) + (OMP_CLAUSE_SHARED, OMP_CLAUSE_COPYIN, OMP_CLAUSE_REDUCTION) + (OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE) + (OMP_CLAUSE_DEFAULT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_COLLAPSE) + (OMP_CLAUSE_UNTIED, OMP_CLAUSE_FINAL, OMP_CLAUSE_MERGEABLE) + (OMP_CLAUSE_ALIGNED, OMP_CLAUSE_DEPEND, OMP_CLAUSE_INBRANCH) + (OMP_CLAUSE_LINEAR, OMP_CLAUSE_NOTINBRANCH, OMP_CLAUSE_PROC_BIND) + (OMP_CLAUSE_SAFELEN, OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_UNIFORM) + (OMP_CLAUSE_DEVICE, OMP_CLAUSE_MAP, OMP_CLAUSE_TO) + (OMP_CLAUSE_FROM, OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_THREAD_LIMIT) + (OMP_CLAUSE_DIST_SCHEDULE): Use uint64_t. + (OMP_CLAUSE_ASYNC, OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS) + (OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_COPY, OMP_CLAUSE_COPYOUT) + (OMP_CLAUSE_CREATE, OMP_CLAUSE_PRESENT) + (OMP_CLAUSE_PRESENT_OR_COPY, OMP_CLAUSE_PRESENT_OR_COPYIN) + (OMP_CLAUSE_PRESENT_OR_COPYOUT, OMP_CLAUSE_PRESENT_OR_CREATE) + (OMP_CLAUSE_DEVICEPTR, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER) + (OMP_CLAUSE_VECTOR, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT) + (OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_DEVICE_RESIDENT) + (OMP_CLAUSE_HOST_SELF, OMP_CLAUSE_OACC_DEVICE, OMP_CLAUSE_WAIT) + (OMP_CLAUSE_DELETE, OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): New macros. + (gfc_match_omp_clauses): Handle those. + (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES) + (OACC_LOOP_CLAUSES, OACC_PARALLEL_LOOP_CLAUSES) + (OACC_KERNELS_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES) + (OACC_DECLARE_CLAUSES, OACC_UPDATE_CLAUSES) + (OACC_ENTER_DATA_CLAUSES, OACC_EXIT_DATA_CLAUSES) + (OACC_WAIT_CLAUSES): New macros. + (gfc_free_expr_list, match_oacc_expr_list, match_oacc_clause_gang) + (gfc_match_omp_map_clause, gfc_match_oacc_parallel_loop) + (gfc_match_oacc_parallel, gfc_match_oacc_kernels_loop) + (gfc_match_oacc_kernels, gfc_match_oacc_data) + (gfc_match_oacc_host_data, gfc_match_oacc_loop) + (gfc_match_oacc_declare, gfc_match_oacc_update) + (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data) + (gfc_match_oacc_wait, gfc_match_oacc_cache) + (gfc_match_oacc_routine, oacc_is_loop) + (resolve_oacc_scalar_int_expr, resolve_oacc_positive_int_expr) + (check_symbol_not_pointer, check_array_not_assumed) + (resolve_oacc_data_clauses, resolve_oacc_deviceptr_clause) + (oacc_compatible_clauses, oacc_is_parallel, oacc_is_kernels) + (omp_code_to_statement, oacc_code_to_statement) + (resolve_oacc_directive_inside_omp_region) + (resolve_omp_directive_inside_oacc_region) + (resolve_oacc_nested_loops, resolve_oacc_params_in_parallel) + (resolve_oacc_loop_blocks, gfc_resolve_oacc_blocks) + (resolve_oacc_loop, resolve_oacc_cache, gfc_resolve_oacc_declare) + (gfc_resolve_oacc_directive): New functions. + * parse.c (next_free): Update for OpenACC. Move some code into... + (verify_token_free): ... this new function. + (next_fixed): Update for OpenACC. Move some code into... + (verify_token_fixed): ... this new function. + (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, + ST_OACC_CACHE, ST_OACC_ENTER_DATA, and ST_OACC_EXIT_DATA. + (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL, + ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP, + ST_OACC_KERNELS_LOOP. + (case_decl): Add ST_OACC_ROUTINE. + (push_state, parse_critical_block, parse_progunit): Update for + OpenACC. + (gfc_ascii_statement): Handle ST_OACC_PARALLEL_LOOP, + ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL, + ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_KERNELS_LOOP, + ST_OACC_END_KERNELS_LOOP, ST_OACC_DATA, ST_OACC_END_DATA, + ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, ST_OACC_LOOP, + ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE, ST_OACC_WAIT, + ST_OACC_CACHE, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA, + ST_OACC_ROUTINE. + (verify_st_order, parse_spec): Handle ST_OACC_DECLARE. + (parse_executable): Handle ST_OACC_PARALLEL_LOOP, + ST_OACC_KERNELS_LOOP, ST_OACC_LOOP, ST_OACC_PARALLEL, + ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA. + (decode_oacc_directive, parse_oacc_structured_block) + (parse_oacc_loop, is_oacc): New functions. + * parse.h (struct gfc_state_data): Add oacc_declare_clauses + member. + (is_oacc): New prototype. + * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Handle + EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL, + EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, EXEC_OACC_DATA, + EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, EXEC_OACC_UPDATE, + EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA, + EXEC_OACC_EXIT_DATA. + (resolve_codes): Call gfc_resolve_oacc_declare. + * scanner.c (openacc_flag, openacc_locus): New variables. + (skip_free_comments): Update for OpenACC. Move some code into... + (skip_omp_attribute): ... this new function. + (skip_oacc_attribute): New function. + (skip_fixed_comments, gfc_next_char_literal): Update for OpenACC. + * st.c (gfc_free_statement): Handle EXEC_OACC_PARALLEL_LOOP, + EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, + EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, + EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, + EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA. + * trans-decl.c (gfc_generate_function_code): Update for OpenACC. + * trans-openmp.c: Include "gomp-constants.h". + (gfc_omp_finish_clause, gfc_trans_omp_clauses): Use GOMP_MAP_* + instead of OMP_CLAUSE_MAP_*. Use OMP_CLAUSE_SET_MAP_KIND. + (gfc_trans_omp_clauses): Handle OMP_LIST_USE_DEVICE, + OMP_LIST_DEVICE_RESIDENT, OMP_LIST_CACHE, and OMP_MAP_FORCE_ALLOC, + OMP_MAP_FORCE_DEALLOC, OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM, + OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT, + OMP_MAP_FORCE_DEVICEPTR, and gfc_omp_clauses' async, seq, + independent, wait_list, num_gangs_expr, num_workers_expr, + vector_length_expr, vector, vector_expr, worker, worker_expr, + gang, gang_expr members. + (gfc_trans_omp_do): Handle EXEC_OACC_LOOP. + (gfc_convert_expr_to_tree, gfc_trans_oacc_construct) + (gfc_trans_oacc_executable_directive) + (gfc_trans_oacc_wait_directive, gfc_trans_oacc_combined_directive) + (gfc_trans_oacc_declare, gfc_trans_oacc_directive): New functions. + * trans-stmt.c (gfc_trans_block_construct): Update for OpenACC. + * trans-stmt.h (gfc_trans_oacc_directive, gfc_trans_oacc_declare): + New prototypes. + * trans.c (tranc_code): Handle EXEC_OACC_CACHE, EXEC_OACC_WAIT, + EXEC_OACC_UPDATE, EXEC_OACC_LOOP, EXEC_OACC_HOST_DATA, + EXEC_OACC_DATA, EXEC_OACC_KERNELS, EXEC_OACC_KERNELS_LOOP, + EXEC_OACC_PARALLEL, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_ENTER_DATA, + EXEC_OACC_EXIT_DATA. + * gfortran.texi: Update for OpenACC. + * intrinsic.texi: Likewise. + * invoke.texi: Likewise. + +2015-01-15 Janus Weil <janus@gcc.gnu.org> + + PR fortran/58023 + * resolve.c (resolve_fl_derived0): Continue resolving next component + after error. + +2015-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/61933 + * io.c (gfc_match_inquire): Generate error if unit number in + inquire statement is a constant -1. All other values allowed. + * trans-io.c (gfc_trans_inquire): Delete dummy iostat variable. + (create_dummy_iostat): Delete function no longer used. + +2015-01-13 Jakub Jelinek <jakub@redhat.com> + + PR fortran/64528 + * trans-decl.c (create_function_arglist): Don't set TREE_READONLY + on dummy args with VALUE attribute. + +2015-01-11 Janus Weil <janus@gcc.gnu.org> + + PR fortran/63733 + * interface.c (gfc_extend_expr): Look for type-bound operators before + non-typebound ones. + +2015-01-11 Janus Weil <janus@gcc.gnu.org> + + PR fortran/58023 + * resolve.c (resolve_fl_derived0): Set error flag if problems with the + interface of a procedure-pointer component were detected. + +2015-01-11 Janus Weil <janus@gcc.gnu.org> + + PR fortran/64508 + * interface.c (compare_parameter): Interface check for + procedure-pointer component as actual argument. + +2015-01-10 Thomas Schwinge <thomas@codesourcery.com> + + * gfortran.texi: Update for libgomp being renamed from "GNU OpenMP + Runtime Library" to "GNU Offloading and Multi Processing Runtime + Library". + * intrinsic.texi: Likewise. + +2015-01-10 Tobias Burnus <burnus@net-b.de> + + PR fortran/64522 + * invoke.texi (Wline-truncation): Document new behaviour. + * lang.opt (Wline-truncation): Add Init(-1). + * options.c (gfc_post_options): If -Wline-truncation is unset, + enable it for free-form source files; for the latter, also use + -Werror=line-truncation, unless -Wno-error has been specified. + +2015-01-09 Michael Collison <michael.collison@linaro.org> + + * convert.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * cpp.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * decl.c: Ditto. + * f95.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * iresolve.c: Ditto. + * match.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * module.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * options.c: Ditto. + * target-memory.c: Include hash-set.h, vec.h, + double-int.h, input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans-array.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans-common.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans-const.c: Ditto. + * trans-decl.c: Ditto. + * trans-expr.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans-intrinsic.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, inchash.h and real.h due to flattening of tree.h. + * trans-io.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, options.h, fold-const.h, + wide-int.h, and inchash.h due to flattening of tree.h. + * trans-openmp.c: Ditto. + * trans-stmt.c: Ditto. + * trans-types.c: Include hash-set.h, machmode.h, vec.h, double-int.h, + input.h, alias.h, symtab.h, fold-const.h, + wide-int.h, inchash.h and real.h due to flattening of tree.h. + +2015-01-08 Tobias Burnus <burnus@net-b.de> + + * trans-decl.c (gfc_build_qualified_array): Fix coarray tokens + for module coarrays with -fcoarray=lib. + (get_proc_pointer_decl): As module variable, make only public + when not marked as private. + +2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/47674 + * dependency.h: Actually commit changes. + +2015-01-05 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/47674 + * dependency.c: Update copyright years. + (gfc_discard_nops): Add prototype. + * dependency.c (discard_nops): Rename to gfc_discard_nops, + make non-static. + (gfc_discard_nops): Use gfc_discard_nops. + (gfc_dep_difference): Likewise. + * frontend-passes.c Update copyright years. + (realloc_strings): New function. Add prototype. + (gfc_run_passes): Call realloc_strings. + (realloc_string_callback): New function. + (create_var): Add prototype. Handle case of a + scalar character variable. + (optimize_trim): Do not handle allocatable variables. + +2015-01-05 Jakub Jelinek <jakub@redhat.com> + + Update copyright years. + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +2015-01-02 Janus Weil <janus@gcc.gnu.org> + + PR fortran/57562 + * expr.c (find_component_ref): Deal with extended types. + +2015-01-02 Tobias Burnus <burnus@net-b.de> + + * trans-decl.c (gfc_build_qualified_array): Fix coarray tokens + for module coarrays with -fcoarray=lib. + +2015-01-02 Janus Weil <janus@gcc.gnu.org> + + PR fortran/60507 + * interface.c (is_procptr_result): New function to check if an + expression is a procedure-pointer result. + (compare_actual_formal): Use it. +^L +Copyright (C) 2015 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 00a9f943fed..bc2be5dbe7f 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1,5 +1,5 @@ /* Perform type resolution on the various structures. - Copyright (C) 2001-2015 Free Software Foundation, Inc. + Copyright (C) 2001-2016 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. @@ -8494,7 +8494,7 @@ resolve_transfer (gfc_code *code) return; } } - + if (exp->expr_type == EXPR_STRUCTURE) return; @@ -8643,6 +8643,7 @@ resolve_critical (gfc_code *code) symtree->n.sym->as->cotype = AS_EXPLICIT; symtree->n.sym->as->lower[0] = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1); + gfc_commit_symbols(); } @@ -9992,6 +9993,50 @@ generate_component_assignments (gfc_code **code, gfc_namespace *ns) } +/* Deferred character length assignments from an operator expression + require a temporary because the character length of the lhs can + change in the course of the assignment. */ + +static bool +deferred_op_assign (gfc_code **code, gfc_namespace *ns) +{ + gfc_expr *tmp_expr; + gfc_code *this_code; + + if (!((*code)->expr1->ts.type == BT_CHARACTER + && (*code)->expr1->ts.deferred && (*code)->expr1->rank + && (*code)->expr2->expr_type == EXPR_OP)) + return false; + + if (!gfc_check_dependency ((*code)->expr1, (*code)->expr2, 1)) + return false; + + tmp_expr = get_temp_from_expr ((*code)->expr1, ns); + tmp_expr->where = (*code)->loc; + + /* A new charlen is required to ensure that the variable string + length is different to that of the original lhs. */ + tmp_expr->ts.u.cl = gfc_get_charlen(); + tmp_expr->symtree->n.sym->ts.u.cl = tmp_expr->ts.u.cl; + tmp_expr->ts.u.cl->next = (*code)->expr2->ts.u.cl->next; + (*code)->expr2->ts.u.cl->next = tmp_expr->ts.u.cl; + + tmp_expr->symtree->n.sym->ts.deferred = 1; + + this_code = build_assignment (EXEC_ASSIGN, + (*code)->expr1, + gfc_copy_expr (tmp_expr), + NULL, NULL, (*code)->loc); + + (*code)->expr1 = tmp_expr; + + this_code->next = (*code)->next; + (*code)->next = this_code; + + return true; +} + + /* Given a block of code, recursively resolve everything pointed to by this code block. */ @@ -10189,6 +10234,11 @@ gfc_resolve_code (gfc_code *code, gfc_namespace *ns) goto call; } + /* Check for dependencies in deferred character length array + assignments and generate a temporary, if necessary. */ + if (code->op == EXEC_ASSIGN && deferred_op_assign (&code, ns)) + break; + /* F03 7.4.1.3 for non-allocatable, non-pointer components. */ if (code->op != EXEC_CALL && code->expr1->ts.type == BT_DERIVED && code->expr1->ts.u.derived->attr.defined_assign_comp) @@ -10561,7 +10611,7 @@ gfc_verify_binding_labels (gfc_symbol *sym) sym->binding_label = NULL; } - else if (sym->attr.flavor == FL_VARIABLE && module + else if (sym->attr.flavor == FL_VARIABLE && module && (strcmp (module, gsym->mod_name) != 0 || strcmp (sym->name, gsym->sym_name) != 0)) { diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 3c2c64046e4..75bcb50de88 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1,5 +1,5 @@ /* Array translation routines - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. Contributed by Paul Brook <paul@nowt.org> and Steven Bosscher <s.bosscher@student.tudelft.nl> @@ -3112,7 +3112,8 @@ gfc_conv_scalarized_array_ref (gfc_se * se, gfc_array_ref * ar) index = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type, index, info->offset); - if (expr && is_subref_array (expr)) + if (expr && (is_subref_array (expr) + || (expr->ts.deferred && expr->expr_type == EXPR_VARIABLE))) decl = expr->symtree->n.sym->backend_decl; tmp = build_fold_indirect_ref_loc (input_location, info->data); @@ -4409,7 +4410,7 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop, gfc_ss * dest, if (!nDepend && dest_expr->rank > 0 && dest_expr->ts.type == BT_CHARACTER && ss_expr->expr_type == EXPR_VARIABLE) - + nDepend = gfc_check_dependency (dest_expr, ss_expr, false); continue; @@ -6945,7 +6946,7 @@ gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr) gfc_array_index_type, stride, info->stride[n]); - if (se->direct_byref + if ((se->direct_byref || se->use_offset) && ((info->ref && info->ref->u.ar.type != AR_FULL) || (expr->expr_type == EXPR_ARRAY && se->use_offset))) { @@ -8269,6 +8270,75 @@ gfc_is_reallocatable_lhs (gfc_expr *expr) } +static tree +concat_str_length (gfc_expr* expr) +{ + tree type; + tree len1; + tree len2; + gfc_se se; + + type = gfc_typenode_for_spec (&expr->value.op.op1->ts); + len1 = TYPE_MAX_VALUE (TYPE_DOMAIN (type)); + if (len1 == NULL_TREE) + { + if (expr->value.op.op1->expr_type == EXPR_OP) + len1 = concat_str_length (expr->value.op.op1); + else if (expr->value.op.op1->expr_type == EXPR_CONSTANT) + len1 = build_int_cst (gfc_charlen_type_node, + expr->value.op.op1->value.character.length); + else if (expr->value.op.op1->ts.u.cl->length) + { + gfc_init_se (&se, NULL); + gfc_conv_expr (&se, expr->value.op.op1->ts.u.cl->length); + len1 = se.expr; + } + else + { + /* Last resort! */ + gfc_init_se (&se, NULL); + se.want_pointer = 1; + se.descriptor_only = 1; + gfc_conv_expr (&se, expr->value.op.op1); + len1 = se.string_length; + } + } + + type = gfc_typenode_for_spec (&expr->value.op.op2->ts); + len2 = TYPE_MAX_VALUE (TYPE_DOMAIN (type)); + if (len2 == NULL_TREE) + { + if (expr->value.op.op2->expr_type == EXPR_OP) + len2 = concat_str_length (expr->value.op.op2); + else if (expr->value.op.op2->expr_type == EXPR_CONSTANT) + len2 = build_int_cst (gfc_charlen_type_node, + expr->value.op.op2->value.character.length); + else if (expr->value.op.op2->ts.u.cl->length) + { + gfc_init_se (&se, NULL); + gfc_conv_expr (&se, expr->value.op.op2->ts.u.cl->length); + len2 = se.expr; + } + else + { + /* Last resort! */ + gfc_init_se (&se, NULL); + se.want_pointer = 1; + se.descriptor_only = 1; + gfc_conv_expr (&se, expr->value.op.op2); + len2 = se.string_length; + } + } + + gcc_assert(len1 && len2); + len1 = fold_convert (gfc_charlen_type_node, len1); + len2 = fold_convert (gfc_charlen_type_node, len2); + + return fold_build2_loc (input_location, PLUS_EXPR, + gfc_charlen_type_node, len1, len2); +} + + /* Allocate the lhs of an assignment to an allocatable array, otherwise reallocate it. */ @@ -8366,6 +8436,12 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, /* Allocate if data is NULL. */ cond_null = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node, array1, build_int_cst (TREE_TYPE (array1), 0)); + + if (expr1->ts.deferred) + cond_null = gfc_evaluate_now (boolean_true_node, &fblock); + else + cond_null= gfc_evaluate_now (cond_null, &fblock); + tmp = build3_v (COND_EXPR, cond_null, build1_v (GOTO_EXPR, jump_label1), build_empty_stmt (input_location)); @@ -8454,7 +8530,13 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, cond = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, size1, size2); - neq_size = gfc_evaluate_now (cond, &fblock); + + /* If the lhs is deferred length, assume that the element size + changes and force a reallocation. */ + if (expr1->ts.deferred) + neq_size = gfc_evaluate_now (boolean_true_node, &fblock); + else + neq_size = gfc_evaluate_now (cond, &fblock); /* Deallocation of allocatable components will have to occur on reallocation. Fix the old descriptor now. */ @@ -8559,6 +8641,12 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, else { tmp = expr2->ts.u.cl->backend_decl; + if (!tmp && expr2->expr_type == EXPR_OP + && expr2->value.op.op == INTRINSIC_CONCAT) + { + tmp = concat_str_length (expr2); + expr2->ts.u.cl->backend_decl = gfc_evaluate_now (tmp, &fblock); + } tmp = fold_convert (TREE_TYPE (expr1->ts.u.cl->backend_decl), tmp); } @@ -8586,6 +8674,22 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, size2, size_one_node); size2 = gfc_evaluate_now (size2, &fblock); + /* For deferred character length, the 'size' field of the dtype might + have changed so set the dtype. */ + if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)) + && expr1->ts.type == BT_CHARACTER && expr1->ts.deferred) + { + tree type; + tmp = gfc_conv_descriptor_dtype (desc); + if (expr2->ts.u.cl->backend_decl) + type = gfc_typenode_for_spec (&expr2->ts); + else + type = gfc_typenode_for_spec (&expr1->ts); + + gfc_add_modify (&fblock, tmp, + gfc_get_dtype_rank_type (expr1->rank,type)); + } + /* Realloc expression. Note that the scalarizer uses desc.data in the array reference - (*desc.data)[<element>]. */ gfc_init_block (&realloc_block); @@ -8628,8 +8732,16 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, 1, size2); gfc_conv_descriptor_data_set (&alloc_block, desc, tmp); - tmp = gfc_conv_descriptor_dtype (desc); - gfc_add_modify (&alloc_block, tmp, gfc_get_dtype (TREE_TYPE (desc))); + + /* We already set the dtype in the case of deferred character + length arrays. */ + if (!(GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)) + && expr1->ts.type == BT_CHARACTER && expr1->ts.deferred)) + { + tmp = gfc_conv_descriptor_dtype (desc); + gfc_add_modify (&alloc_block, tmp, gfc_get_dtype (TREE_TYPE (desc))); + } + if ((expr1->ts.type == BT_DERIVED) && expr1->ts.u.derived->attr.alloc_comp) { diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 2b1cbc73900..e2c4b7782da 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1,5 +1,5 @@ /* Expression translation - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. Contributed by Paul Brook <paul@nowt.org> and Steven Bosscher <s.bosscher@student.tudelft.nl> @@ -5343,7 +5343,8 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, else { tmp = parmse.string_length; - if (TREE_CODE (tmp) != VAR_DECL) + if (TREE_CODE (tmp) != VAR_DECL + && TREE_CODE (tmp) != COMPONENT_REF) tmp = gfc_evaluate_now (parmse.string_length, &se->pre); parmse.string_length = gfc_build_addr_expr (NULL_TREE, tmp); } @@ -8998,8 +8999,10 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, } /* Stabilize a string length for temporaries. */ - if (expr2->ts.type == BT_CHARACTER) + if (expr2->ts.type == BT_CHARACTER && !expr2->ts.deferred) string_length = gfc_evaluate_now (rse.string_length, &rse.pre); + else if (expr2->ts.type == BT_CHARACTER) + string_length = rse.string_length; else string_length = NULL_TREE; @@ -9033,8 +9036,14 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, the function call must happen before the (re)allocation of the lhs - otherwise the character length of the result is not known. NOTE: This relies on having the exact dependence of the length type - parameter available to the caller; gfortran saves it in the .mod files. */ - if (flag_realloc_lhs && expr2->ts.type == BT_CHARACTER && expr1->ts.deferred) + parameter available to the caller; gfortran saves it in the .mod files. + NOTE ALSO: The concatenation operation generates a temporary pointer, + whose allocation must go to the innermost loop. */ + if (flag_realloc_lhs + && expr2->ts.type == BT_CHARACTER && expr1->ts.deferred + && !(lss != gfc_ss_terminator + && expr2->expr_type == EXPR_OP + && expr2->value.op.op == INTRINSIC_CONCAT)) gfc_add_block_to_block (&block, &rse.pre); /* Nullify the allocatable components corresponding to those of the lhs diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 3a14a913c50..68601f61fd2 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -1,5 +1,5 @@ /* Statement translation -- generate GCC trees from gfc_code. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. Contributed by Paul Brook <paul@nowt.org> and Steven Bosscher <s.bosscher@student.tudelft.nl> @@ -5119,6 +5119,7 @@ gfc_trans_allocate (gfc_code * code) tree label_finish; tree memsz; tree al_vptr, al_len; + tree def_str_len = NULL_TREE; /* If an expr3 is present, then store the tree for accessing its _vptr, and _len components in the variables, respectively. The element size, i.e. _vptr%size, is stored in expr3_esize. Any of @@ -5381,6 +5382,7 @@ gfc_trans_allocate (gfc_code * code) expr3_esize = fold_build2_loc (input_location, MULT_EXPR, TREE_TYPE (se_sz.expr), tmp, se_sz.expr); + def_str_len = gfc_evaluate_now (se_sz.expr, &block); } } @@ -5432,6 +5434,17 @@ gfc_trans_allocate (gfc_code * code) se.want_pointer = 1; se.descriptor_only = 1; + + if (expr->ts.type == BT_CHARACTER + && expr->ts.deferred + && TREE_CODE (expr->ts.u.cl->backend_decl) == VAR_DECL + && def_str_len != NULL_TREE) + { + tmp = expr->ts.u.cl->backend_decl; + gfc_add_modify (&block, tmp, + fold_convert (TREE_TYPE (tmp), def_str_len)); + } + gfc_conv_expr (&se, expr); if (expr->ts.type == BT_CHARACTER && expr->ts.deferred) /* se.string_length now stores the .string_length variable of expr diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index a267040aabf..4cf980dc891 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1,5 +1,5 @@ /* Backend support for Fortran 95 basic types and derived types. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. Contributed by Paul Brook <paul@nowt.org> and Steven Bosscher <s.bosscher@student.tudelft.nl> diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index abc6adb4b4c..ff6df84dde7 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1,5 +1,5 @@ /* Code translation -- generate GCC trees from gfc_code. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. @@ -344,6 +344,18 @@ gfc_build_array_ref (tree base, tree offset, tree decl) type = TREE_TYPE (type); + /* Use pointer arithmetic for deferred character length array + references. */ + if (type && TREE_CODE (type) == ARRAY_TYPE + && TYPE_MAXVAL (TYPE_DOMAIN (type)) != NULL_TREE + && TREE_CODE (TYPE_MAXVAL (TYPE_DOMAIN (type))) == VAR_DECL + && decl + && DECL_CONTEXT (TYPE_MAXVAL (TYPE_DOMAIN (type))) + == DECL_CONTEXT (decl)) + span = TYPE_MAXVAL (TYPE_DOMAIN (type)); + else + span = NULL_TREE; + if (DECL_P (base)) TREE_ADDRESSABLE (base) = 1; @@ -358,7 +370,8 @@ gfc_build_array_ref (tree base, tree offset, tree decl) || TREE_CODE (decl) == PARM_DECL) && ((GFC_DECL_SUBREF_ARRAY_P (decl) && !integer_zerop (GFC_DECL_SPAN(decl))) - || GFC_DECL_CLASS (decl))) + || GFC_DECL_CLASS (decl) + || span != NULL_TREE)) { if (GFC_DECL_CLASS (decl)) { @@ -377,6 +390,8 @@ gfc_build_array_ref (tree base, tree offset, tree decl) } else if (GFC_DECL_SUBREF_ARRAY_P (decl)) span = GFC_DECL_SPAN(decl); + else if (span) + span = fold_convert (gfc_array_index_type, span); else gcc_unreachable (); @@ -1667,6 +1682,7 @@ trans_code (gfc_code * code, tree cond) gfc_add_expr_to_block (&block, res); } + gfc_current_locus = code->loc; gfc_set_backend_locus (&code->loc); switch (code->op) diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index f4388743644..3b9750332d9 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,11 @@ +2016-01-11 Joseph Myers <joseph@codesourcery.com> + + * zh_CN.po: Update. + +2015-12-31 Joseph Myers <joseph@codesourcery.com> + + * fr.po: Update. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/gcc/po/fr.po b/gcc/po/fr.po index 9483d9de846..4596e5506ed 100644 --- a/gcc/po/fr.po +++ b/gcc/po/fr.po @@ -122,10 +122,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gcc 5.1.0\n" +"Project-Id-Version: gcc 5.2.0\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2015-07-02 12:31+0000\n" -"PO-Revision-Date: 2015-04-29 12:25+0200\n" +"PO-Revision-Date: 2015-12-30 14:31+0100\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -136,19 +136,19 @@ msgstr "" #: cfgrtl.c:2698 msgid "flow control insn inside a basic block" -msgstr "insn de contrôle de flot à l'intérieur d'un bloc de base" +msgstr "insn de contrôle de flot à l’intérieur d’un bloc de base" #: cfgrtl.c:2930 msgid "wrong insn in the fallthru edge" -msgstr "insn erronée dans l'arrête fallthru" +msgstr "insn erronée dans l’arrête fallthru" #: cfgrtl.c:2987 msgid "insn outside basic block" -msgstr "insn à l'extérieur de tout bloc de base" +msgstr "insn à l’extérieur de tout bloc de base" #: cfgrtl.c:2994 msgid "return not followed by barrier" -msgstr "return n'est pas suivi d'une barrière" +msgstr "return n’est pas suivi d’une barrière" #: collect-utils.c:164 #, c-format @@ -203,11 +203,11 @@ msgid "" "ldd output with constructors/destructors.\n" msgstr "" "\n" -"sortie de ldd avec constructeurs/destructeurs.\n" +"sortie de ldd avec constructeurs / destructeurs.\n" #: cprop.c:1793 msgid "const/copy propagation disabled" -msgstr "propagation de const/copy désactivée" +msgstr "propagation de const / copie désactivée" #: diagnostic.c:212 #, c-format @@ -240,13 +240,13 @@ msgid "" "Please submit a full bug report,\n" "with preprocessed source if appropriate.\n" msgstr "" -"Veuillez soumettre un rapport d'anomalies complet,\n" -"avec le source pré-traité si nécessaire.\n" +"Veuillez soumettre un rapport d’anomalies complet,\n" +"avec la sortie du préprocesseur si nécessaire.\n" #: diagnostic.c:540 #, c-format msgid "See %s for instructions.\n" -msgstr "" +msgstr "Voir %s pour les instructions.\n" #: diagnostic.c:549 #, c-format @@ -262,11 +262,11 @@ msgstr "%s:%d: embrouillé par les erreurs précédentes, abandon\n" #: diagnostic.c:1273 #, c-format msgid "Internal compiler error: Error reporting routines re-entered.\n" -msgstr "erreur interne au compilateur : routine de rapport d'erreur préemptée.\n" +msgstr "erreur interne au compilateur : routine de rapport d’erreur préemptée.\n" #: final.c:1229 msgid "negative insn length" -msgstr "longueur négative insn" +msgstr "longueur insn négative" #: final.c:3020 msgid "could not split insn" @@ -279,32 +279,32 @@ msgstr "asm invalide : " #: final.c:3564 #, c-format msgid "nested assembly dialect alternatives" -msgstr "assemblage de dialectes alternatifs imbriqués" +msgstr "alternatives imbriquées de dialecte assembleur" #: final.c:3592 final.c:3604 #, c-format msgid "unterminated assembly dialect alternative" -msgstr "assemblage de dialectes alternatifs non terminé" +msgstr "alternative non terminée de dialecte assembleur" #: final.c:3746 #, c-format msgid "operand number missing after %%-letter" -msgstr "numéro d'opérande manquant après %%-letter" +msgstr "numéro d’opérande manquant après %%-lettre" #: final.c:3749 final.c:3790 #, c-format msgid "operand number out of range" -msgstr "nombre d'opérandes hors limite" +msgstr "numéro d’opérande hors limite" #: final.c:3807 #, c-format msgid "invalid %%-code" -msgstr "%%-code est invalide" +msgstr "%%-code invalide" #: final.c:3837 #, c-format msgid "'%%l' operand isn't a label" -msgstr "l'opérande « %%l » n'est pas une étiquette" +msgstr "l’opérande « %%l » n'est pas une étiquette" #. We can't handle floating point constants; #. PRINT_OPERAND must handle them. @@ -335,23 +335,23 @@ msgid "" "Setting spec %s to '%s'\n" "\n" msgstr "" -"Initialisation des spec %s à « %s »\n" +"Initialisation des specs %s à « %s »\n" "\n" #: gcc.c:1808 #, c-format msgid "Reading specs from %s\n" -msgstr "Lecture des spécification à partir de %s\n" +msgstr "Lecture des spécifications à partir de %s\n" #: gcc.c:1935 #, c-format msgid "could not find specs file %s\n" -msgstr "ne peut repérer le fichiers des specs %s\n" +msgstr "impossible de trouver le fichier des specs %s\n" #: gcc.c:2010 #, c-format msgid "rename spec %s to %s\n" -msgstr "renommé les specs %s à %s\n" +msgstr "renommer les specs %s à %s\n" #: gcc.c:2012 #, c-format @@ -374,7 +374,7 @@ msgid "" "Go ahead? (y or n) " msgstr "" "\n" -"Aller de l'avant? (y ou n) " +"Continuer ? (y ou n) " #: gcc.c:2965 #, c-format @@ -384,133 +384,124 @@ msgstr "# %s %.2f %.2f\n" #: gcc.c:3171 #, c-format msgid "Usage: %s [options] file...\n" -msgstr "Usage: %s [options] fichier...\n" +msgstr "Usage : %s [options] fichier…\n" #: gcc.c:3172 msgid "Options:\n" -msgstr "Options:\n" +msgstr "Options :\n" #: gcc.c:3174 msgid " -pass-exit-codes Exit with highest error code from a phase\n" -msgstr " -pass-exit-codes quitter avec le plus grand code d'erreur de la phase\n" +msgstr " -pass-exit-codes Quitter avec le plus grand code d’erreur d’une phase\n" #: gcc.c:3175 msgid " --help Display this information\n" -msgstr " --help afficher l'aide mémoire\n" +msgstr " --help Afficher cette aide\n" #: gcc.c:3176 msgid " --target-help Display target specific command line options\n" -msgstr " --target-help afficher les options spécifiques de la ligne de commande\n" +msgstr " --target-help Afficher les options de ligne de commande spécifiques à la cible\n" #: gcc.c:3177 msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n" -msgstr "" +msgstr " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,…]\n" #: gcc.c:3178 -#, fuzzy -#| msgid " --target-help Display target specific command line options\n" msgid " Display specific types of command line options\n" -msgstr " --target-help afficher les options spécifiques de la ligne de commande\n" +msgstr " Afficher les types spécifiques des options de la ligne de commande\n" #: gcc.c:3180 msgid " (Use '-v --help' to display command line options of sub-processes)\n" -msgstr " (Utiliser «-v --help» pour afficher les options de la ligne de commande des sous-processus)\n" +msgstr " (Utiliser « -v --help » pour afficher les options de la ligne de commande des sous-processus)\n" #: gcc.c:3181 msgid " --version Display compiler version information\n" -msgstr " --help afficher des informations sur la version du compilateur\n" +msgstr " --help Afficher des informations sur la version du compilateur\n" #: gcc.c:3182 msgid " -dumpspecs Display all of the built in spec strings\n" -msgstr " -dumpspecs afficher tous les construits des chaînes de specs\n" +msgstr " -dumpspecs Afficher tous les chaînes de specs internes\n" #: gcc.c:3183 msgid " -dumpversion Display the version of the compiler\n" -msgstr " -dumpversion afficher la version du compilateur\n" +msgstr " -dumpversion Afficher la version du compilateur\n" #: gcc.c:3184 msgid " -dumpmachine Display the compiler's target processor\n" -msgstr " -dumpmachine afficher le processeur ciblé par le compilateur\n" +msgstr " -dumpmachine Afficher le processeur ciblé par le compilateur\n" #: gcc.c:3185 msgid " -print-search-dirs Display the directories in the compiler's search path\n" -msgstr " -print-search-dirs afficher les répertoires du chemin de recherche du compilateur\n" +msgstr " -print-search-dirs Afficher les répertoires du chemin de recherche du compilateur\n" #: gcc.c:3186 msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n" -msgstr " -print-libgcc-file-name afficher le nom de la bibliothèque compagne du compilateur\n" +msgstr " -print-libgcc-file-name Afficher le nom de la bibliothèque accompagnant le compilateur\n" #: gcc.c:3187 msgid " -print-file-name=<lib> Display the full path to library <lib>\n" -msgstr " -print-file-name=<lib> afficher le chemin d'accès complet vers la bibliothèque <lib>\n" +msgstr " -print-file-name=<lib> Afficher le chemin d’accès complet vers la bibliothèque <lib>\n" #: gcc.c:3188 msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n" -msgstr " -print-prog-name=<prog> afficher le chemin d'accès complet vers le composant du compilateur <prog>\n" +msgstr " -print-prog-name=<prog> Afficher le chemin d’accès complet vers le composant du compilateur <prog>\n" #: gcc.c:3189 -#, fuzzy -#| msgid "" -#| " -print-multi-lib Display the mapping between command line options and\n" -#| " multiple library search directories\n" msgid "" " -print-multiarch Display the target's normalized GNU triplet, used as\n" " a component in the library path\n" msgstr "" -" -print-multi-lib Afficher la table de projection entre les options de\n" -" la ligne de commande et les multiples répertoires de\n" -" recherches des bibliothèques\n" +" -print-multiarch Afficher le triplet GNU normalisé de la cible, utilisé comme\n" +" un composant dans le chemin d’accès de la bibliothèque\n" #: gcc.c:3192 msgid " -print-multi-directory Display the root directory for versions of libgcc\n" -msgstr " -print-multi-directory afficher la racine du répertoire des version libgcc\n" +msgstr " -print-multi-directory Afficher la racine du répertoire des versions de libgcc\n" #: gcc.c:3193 msgid "" " -print-multi-lib Display the mapping between command line options and\n" " multiple library search directories\n" msgstr "" -" -print-multi-lib Afficher la table de projection entre les options de\n" +" -print-multi-lib Afficher la table de correspondance entre les options de\n" " la ligne de commande et les multiples répertoires de\n" -" recherches des bibliothèques\n" +" recherche des bibliothèques\n" #: gcc.c:3196 msgid " -print-multi-os-directory Display the relative path to OS libraries\n" -msgstr " -print-multi-os-directory afficher le chemin relatif du répertoire vers les librairies de l'OS\n" +msgstr " -print-multi-os-directory Afficher le chemin relatif du répertoire vers les bibliothèques de l’OS\n" #: gcc.c:3197 -#, fuzzy -#| msgid " -dumpmachine Display the compiler's target processor\n" msgid " -print-sysroot Display the target libraries directory\n" -msgstr " -dumpmachine afficher le processeur ciblé par le compilateur\n" +msgstr " -print-sysroot Afficher le répertoire des bibliothèques de la cible\n" #: gcc.c:3198 msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" -msgstr "" +msgstr " -print-sysroot-headers-suffix Afficher le suffixe de la racine système utilisé pour trouver les en-têtes\n" #: gcc.c:3199 msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n" -msgstr " -Wa,<options> passer les <options> séparées par des virgules à l'assembleur\n" +msgstr " -Wa,<options> Passer les <options> séparées par des virgules à l’assembleur\n" #: gcc.c:3200 msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n" -msgstr " -Wp,<options> passer les <options> séparées par des virgules au préprocesseur\n" +msgstr " -Wp,<options> Passer les <options> séparées par des virgules au préprocesseur\n" #: gcc.c:3201 msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n" -msgstr " -Wl,<options> passer les <options> séparées par des virgules à l'éditeur de liens\n" +msgstr " -Wl,<options> Passer les <options> séparées par des virgules à l'éditeur de liens\n" #: gcc.c:3202 msgid " -Xassembler <arg> Pass <arg> on to the assembler\n" -msgstr " -Xassembler <arg> passer l'<arg>ument à l'assembleur\n" +msgstr " -Xassembler <argument> Passer l’<argument> à l’assembleur\n" #: gcc.c:3203 msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n" -msgstr " -Xpreprocessor <arg> passer l'<arg>ument au pré-processeur\n" +msgstr " -Xpreprocessor <argument> Passer l’<argument> au préprocesseur\n" #: gcc.c:3204 msgid " -Xlinker <arg> Pass <arg> on to the linker\n" -msgstr " -Xlinker <argument> passer l'<argument> à l'éditeur de liens\n" +msgstr " -Xlinker <argument> Passer l’<argument> à l’éditeur de liens\n" #: gcc.c:3205 msgid " -save-temps Do not delete intermediate files\n" @@ -562,11 +553,11 @@ msgstr " -### identique à -v mais les options et les comma #: gcc.c:3220 msgid " -E Preprocess only; do not compile, assemble or link\n" -msgstr " -E pré-traiter seulement; ne pas compiler, assembler ou éditer les liens\n" +msgstr " -E pré-traiter seulement ; ne pas compiler, assembler ou éditer les liens\n" #: gcc.c:3221 msgid " -S Compile only; do not assemble or link\n" -msgstr " -S compiler seulement; ne pas assembler ou éditer les liens\n" +msgstr " -S compiler seulement ; ne pas assembler ou éditer les liens\n" #: gcc.c:3222 msgid " -c Compile and assemble, but do not link\n" @@ -1199,10 +1190,8 @@ msgid "Cannot open source file %s\n" msgstr "N'a pu ouvrir le fichier source %s\n" #: gcse.c:2601 -#, fuzzy -#| msgid "GCSE disabled" msgid "PRE disabled" -msgstr "GCSE désactivé" +msgstr "PRE désactivé" #: gcse.c:3529 msgid "GCSE disabled" @@ -1260,10 +1249,8 @@ msgid "'" msgstr "" #: ipa-pure-const.c:218 -#, fuzzy -#| msgid "function might be possible candidate for attribute `noreturn'" msgid "function might be candidate for attribute %<%s%>" -msgstr "fonction peut être une possible candidate pour l'attribut « norreturn »" +msgstr "fonction peut être une candidate pour l'attribut %<%s%>" #: ipa-pure-const.c:219 #, fuzzy @@ -1428,11 +1415,11 @@ msgstr "Les options suivantes sont indépendantes du langage:\n" #: plugin.c:806 msgid "Event" -msgstr "" +msgstr "Événement" #: plugin.c:806 msgid "Plugins" -msgstr "" +msgstr "Extensions" #: plugin.c:838 #, c-format @@ -1492,7 +1479,7 @@ msgstr "collect: tordage de %s dans %s\n" #: tlink.c:846 #, c-format msgid "collect: relinking\n" -msgstr "collect: ré-édition des liens\n" +msgstr "collect: réédition des liens\n" #: toplev.c:379 #, c-format @@ -1534,7 +1521,7 @@ msgstr "options passées : " #: toplev.c:951 msgid "options enabled: " -msgstr "options autorisées: " +msgstr "options autorisées : " #: tree-diagnostic.c:306 c/c-decl.c:5184 c/c-typeck.c:6556 cp/error.c:700 #: cp/error.c:1006 c-family/c-pretty-print.c:443 @@ -1642,9 +1629,7 @@ msgstr "Autoriser le traitement des exceptions" #| "\n" #| "Target specific options:\n" msgid "target specific option mismatch" -msgstr "" -"\n" -"Options spécifiques à la cible:\n" +msgstr "Options spécifiques à la cible:\n" #: cif-code.def:117 #, fuzzy @@ -1673,7 +1658,7 @@ msgstr "" #. The remainder are real diagnostic types. #: diagnostic.def:33 msgid "fatal error: " -msgstr "erreur fatale: " +msgstr "erreur fatale : " #. This is like DK_ICE, but backtrace is not printed. Used in the driver #. when reporting fatal signal in the compiler. @@ -1685,7 +1670,7 @@ msgstr "erreur interne du compilateur: " #. due to -Werror and -Werror=warning. #: diagnostic.def:35 diagnostic.def:47 msgid "error: " -msgstr "erreur: " +msgstr "erreur : " #: diagnostic.def:36 msgid "sorry, unimplemented: " @@ -1697,15 +1682,15 @@ msgstr "attention : " #: diagnostic.def:38 msgid "anachronism: " -msgstr "anachronisme: " +msgstr "anachronisme : " #: diagnostic.def:39 msgid "note: " -msgstr "note: " +msgstr "note : " #: diagnostic.def:40 msgid "debug: " -msgstr "mise au point: " +msgstr "débogage : " #. These two would be re-classified as DK_WARNING or DK_ERROR, so the #. prefix does not matter. @@ -1716,10 +1701,8 @@ msgid "pedwarn: " msgstr "attention : " #: diagnostic.def:44 -#, fuzzy -#| msgid "error: " msgid "permerror: " -msgstr "erreur: " +msgstr "permerreur : " #: params.def:44 msgid "Maximal estimated outcome of branch considered predictable" @@ -2232,7 +2215,7 @@ msgstr "" #: params.def:765 msgid "The size of L1 cache" -msgstr "" +msgstr "La taille du cache L1" #: params.def:772 msgid "The size of L1 cache line" @@ -2240,7 +2223,7 @@ msgstr "" #: params.def:779 msgid "The size of L2 cache" -msgstr "" +msgstr "La taille du cache L2" #: params.def:790 msgid "Whether to use canonical types" @@ -2504,7 +2487,7 @@ msgstr "" #: c-family/c-format.c:356 msgid "format" -msgstr "" +msgstr "format" #: c-family/c-format.c:357 #, fuzzy @@ -3075,24 +3058,24 @@ msgstr "erreur internal du compilateur. Mode inconnu:" #: config/avr/avr.c:3426 config/avr/avr.c:4356 config/avr/avr.c:4805 msgid "invalid insn:" -msgstr "insn invalide:" +msgstr "insn invalide :" #: config/avr/avr.c:3480 config/avr/avr.c:3585 config/avr/avr.c:3643 #: config/avr/avr.c:3689 config/avr/avr.c:3708 config/avr/avr.c:3900 #: config/avr/avr.c:4208 config/avr/avr.c:4492 config/avr/avr.c:4698 #: config/avr/avr.c:4862 config/avr/avr.c:4956 config/avr/avr.c:5152 msgid "incorrect insn:" -msgstr "insn incorrect:" +msgstr "insn incorrect :" #: config/avr/avr.c:3724 config/avr/avr.c:3999 config/avr/avr.c:4279 #: config/avr/avr.c:4564 config/avr/avr.c:4744 config/avr/avr.c:5012 #: config/avr/avr.c:5210 msgid "unknown move insn:" -msgstr "insn de déplacement inconnu:" +msgstr "insn de déplacement inconnu :" #: config/avr/avr.c:5641 msgid "bad shift insn:" -msgstr "décalage insn erroné:" +msgstr "décalage insn erroné :" #: config/avr/avr.c:5749 config/avr/avr.c:6230 config/avr/avr.c:6645 msgid "internal compiler error. Incorrect shift:" @@ -3907,22 +3890,16 @@ msgid "invalid operand to %%S" msgstr "opérande invalide pour %%S" #: config/sh/sh.c:9957 -#, fuzzy -#| msgid "created and used with different settings of -fpic" msgid "created and used with different architectures / ABIs" -msgstr "créé et utilisé avec des configurations différentes de -fpic" +msgstr "créé et utilisé avec des architectures / ABI différentes" #: config/sh/sh.c:9959 -#, fuzzy -#| msgid "created and used with different settings of -fpic" msgid "created and used with different ABIs" -msgstr "créé et utilisé avec des configurations différentes de -fpic" +msgstr "créé et utilisé avec des ABI différentes" #: config/sh/sh.c:9961 -#, fuzzy -#| msgid "created and used with different settings of -fpic" msgid "created and used with different endianness" -msgstr "créé et utilisé avec des configurations différentes de -fpic" +msgstr "créé et utilisé avec des boutismes différents" #: config/sparc/sparc.c:8834 config/sparc/sparc.c:8840 #, c-format @@ -4395,10 +4372,8 @@ msgid "(anonymous namespace)" msgstr "(espace de nom anonyme)" #: cp/error.c:1231 -#, fuzzy -#| msgid "template argument required for `%s %T'" msgid "<template arguments error>" -msgstr "<argument du patron>" +msgstr "<erreur argument du patron>" #: cp/error.c:1252 msgid "<enumerator>" @@ -4409,10 +4384,8 @@ msgid "<declaration error>" msgstr "<erreur de déclaration>" #: cp/error.c:1793 cp/error.c:1813 -#, fuzzy -#| msgid "template parameter `%#D'" msgid "<template parameter error>" -msgstr "<patron de paramètre>" +msgstr "<erreur de patron de paramètre>" #: cp/error.c:1943 msgid "<statement>" @@ -4558,7 +4531,7 @@ msgstr[1] "candidats sont :" #, fuzzy #| msgid " overriding `%#D' (must be pointer or reference to class)" msgid "target is not pointer or reference to class" -msgstr " écrasant « %#D » (doit être un pointeur ou une référence vers un classe)" +msgstr "doit être un pointeur ou une référence vers un classe" #: cp/rtti.c:562 #, fuzzy @@ -4591,10 +4564,8 @@ msgid "source is a pointer to incomplete type" msgstr "ne peut utiliser %s comme pointeur sur un type incomplet « %T »" #: cp/rtti.c:609 -#, fuzzy -#| msgid "%T is not a class type" msgid "source is not of class type" -msgstr "« %T » n'est pas un type de classe" +msgstr "la source n'est pas de type classe" #: cp/rtti.c:614 #, fuzzy @@ -5965,10 +5936,9 @@ msgid "-fconvert=<big-endian|little-endian|native|swap> The endianness used for msgstr "" #: fortran/lang.opt:389 -#, fuzzy, c-format -#| msgid "Unrecognized option `%s'" +#, c-format msgid "Unrecognized option to endianess value: %qs" -msgstr "Option non reconnue `%s'" +msgstr "Option non reconnue pour la valeur de boutisme : %qs" #: fortran/lang.opt:405 msgid "Use the Cray Pointer extension" @@ -6423,7 +6393,7 @@ msgstr "Avertir à propos des transtypage qui écartent les qualificateurs" #: c-family/c.opt:332 msgid "Warn about subscripts whose type is \"char\"" -msgstr "Avertir à propos des souscripts dont le type est \"char\"" +msgstr "Avertir à propos des sous-scripts dont le type est \"char\"" #: c-family/c.opt:336 msgid "Warn about memory access errors found by Pointer Bounds Checker" @@ -6593,7 +6563,7 @@ msgstr "" #, fuzzy #| msgid "Warn about variables which are initialized to themselves." msgid "Warn about variables which are initialized to themselves" -msgstr "Avertir au sujet des variables qui sont initialisés par elles-même" +msgstr "Avertir au sujet des variables qui sont initialisés par elles-mêmes" #: c-family/c.opt:488 #, fuzzy @@ -6809,7 +6779,7 @@ msgstr "Avertir à propos de la surcharge des noms de fonctions virtuelles" #, fuzzy #| msgid "Warn about variables which are initialized to themselves." msgid "Warn about overriding initializers without side effects" -msgstr "Avertir au sujet des variables qui sont initialisés par elles-même" +msgstr "Avertir au sujet des variables qui sont initialisés par elles-mêmes" #: c-family/c.opt:714 #, fuzzy @@ -6863,7 +6833,7 @@ msgstr "Avertir lorsque le compilateur réordonne le code" #: c-family/c.opt:762 msgid "Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)" -msgstr "Avertir lorsque le type de fonction à retourner par défaut est \"int\" (C) ou à propos d'un type inconsisten à retourner (C++)" +msgstr "Avertir lorsque le type de fonction à retourner par défaut est \"int\" (C) ou à propos d'un type inconsistent à retourner (C++)" #: c-family/c.opt:766 msgid "Warn if a selector has multiple methods" @@ -7038,7 +7008,7 @@ msgstr "" #: c-family/c.opt:945 c-family/c.opt:1170 c-family/c.opt:1445 #: c-family/c.opt:1449 c-family/c.opt:1465 msgid "No longer supported" -msgstr "Prise en charge suprimée" +msgstr "Prise en charge supprimée" #: c-family/c.opt:949 msgid "Recognize the \"asm\" keyword" @@ -7291,7 +7261,7 @@ msgstr "" #, fuzzy, c-format #| msgid "unrecognized register name \"%s\"" msgid "unrecognized ivar visibility value %qs" -msgstr "nom de registre non reconnue \"%s\"" +msgstr "nom de registre non reconnue %qs" #: c-family/c.opt:1257 msgid "Treat a throw() exception specification as noexcept to improve code size" @@ -7717,7 +7687,7 @@ msgstr "" #, fuzzy #| msgid "-fdump-<type>\tDump various compiler internals to a file" msgid "-fgo-dump-<type>\tDump Go frontend internal information" -msgstr "--fgo-dump-<type>\tVidander les divers internes du compilateur dans un fichier" +msgstr "--fgo-dump-<type>\tVidanger les divers internes du compilateur dans un fichier" #: go/lang.opt:54 msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend" @@ -8826,7 +8796,7 @@ msgstr "Cible a un I&D séparé" #: config/pdp11/pdp11.opt:87 msgid "Use UNIX assembler syntax" -msgstr "Uitliser la syntaxe de l'assembleur UNIX" +msgstr "Utiliser la syntaxe de l'assembleur UNIX" #: config/xtensa/xtensa.opt:23 msgid "Use CONST16 instruction to load constants" @@ -9512,7 +9482,7 @@ msgstr "Supporte les fonctions internes MMX et SSE et la génération de code" #, fuzzy #| msgid "Call mcount for profiling after a function prologue" msgid "Emit profiling counter call at function entry before prologue." -msgstr "Ne pas appeller mcount pour le profilage avant le prologue de la fonction" +msgstr "Ne pas appeler mcount pour le profilage avant le prologue de la fonction" #: config/i386/i386.opt:831 msgid "Generate __mcount_loc section with all mcount or __fentry__ calls." @@ -9681,7 +9651,7 @@ msgstr "Ne pas utiliser l'instruction callt" #: config/v850/v850.opt:45 msgid "Reuse r30 on a per function basis" -msgstr "Ré-utiliser R30 sur une base par fonction" +msgstr "Réutiliser R30 sur une base par fonction" #: config/v850/v850.opt:52 msgid "Prohibit PC relative function calls" @@ -12410,7 +12380,7 @@ msgstr "Aucun défaut pour crt0.o" #: config/iq2000/iq2000.opt:74 config/mips/mips.opt:397 msgid "Put uninitialized constants in ROM (needs -membedded-data)" -msgstr "Placer les constantes non itialisées dans le ROM (a besoin de -membedded-data)" +msgstr "Placer les constantes non initialisées dans le ROM (a besoin de -membedded-data)" #: config/c6x/c6x-tables.opt:24 msgid "Known C6X ISAs (for use with the -march= option):" @@ -12478,7 +12448,7 @@ msgstr "Ne pas aligner les items dans le code ou les données" #: config/cris/cris.opt:142 msgid "Do not emit function prologue or epilogue" -msgstr "Ne pas générer de prologue ou d'épilogue de fonction" +msgstr "Ne pas générer de prologue ou d’épilogue de fonction" #: config/cris/cris.opt:149 msgid "Use the most feature-enabling options allowed by other options" @@ -12795,7 +12765,7 @@ msgstr "Générer du code pour un système à octets de poids faible" #, fuzzy #| msgid "PIC register `%s' clobbered in `asm'" msgid "Mark MAC register as call-clobbered" -msgstr "registre PIC « %s » est maltraité dans «asm »" +msgstr "registre PIC « %s » est maltraité" #: config/sh/sh.opt:311 msgid "Make structs a multiple of 4 bytes (warning: ABI altered)" @@ -12809,7 +12779,7 @@ msgstr "" #, fuzzy #| msgid "Assume floating-point operations can trap" msgid "Assume pt* instructions won't trap" -msgstr "On assume que les opérations en virgule flottante peuvent être attrappées" +msgstr "On assume que les opérations en virgule flottante peuvent être attrapées" #: config/sh/sh.opt:323 msgid "Shorten address references during linking" @@ -13755,7 +13725,7 @@ msgstr "" #: java/lang.opt:202 msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)" -msgstr "--encoding=<encodage>\tchoisir l'encodade d'entrée (par défaut provient de la locale)" +msgstr "--encoding=<encodage>\tchoisir l'encodage d'entrée (par défaut provient de la locale)" #: java/lang.opt:206 msgid "--extdirs=<path>\tSet the extension directory path" @@ -13789,7 +13759,7 @@ msgstr "Présumer que les fonctions natives sont implantées et qu'elles utilise #: java/lang.opt:246 msgid "Enable optimization of static class initialization code" -msgstr "Autorisser l'optimisation du code d'initialisation de classe statique" +msgstr "Autoriser l'optimisation du code d'initialisation de classe statique" #: java/lang.opt:253 msgid "Reduce the amount of reflection meta-data generated" @@ -13797,7 +13767,7 @@ msgstr "" #: java/lang.opt:257 msgid "Enable assignability checks for stores into object arrays" -msgstr "Autoriser la vérificaitions des affectations dans le stockage des tableaux d'objets" +msgstr "Autoriser la vérifications des affectations dans le stockage des tableaux d'objets" #: java/lang.opt:261 msgid "Generate code for the Boehm GC" @@ -13859,7 +13829,7 @@ msgstr "Alias pour --help=target" #: common.opt:429 msgid "--param <param>=<value>\tSet parameter <param> to value. See below for a complete list of parameters" -msgstr "--param <paramètre>=<valeur>\tinitialiser le <paramètre> avec la valeur. Voir ci-bas pour la liste complète des paramètres" +msgstr "--param <paramètre>=<valeur>\tinitialiser le <paramètre> avec la valeur. Voir ci-dessous pour la liste complète des paramètres" #: common.opt:457 msgid "-O<number>\tSet optimization level to <number>" @@ -14271,7 +14241,7 @@ msgstr "" #: common.opt:1014 msgid "Perform a register copy-propagation optimization pass" -msgstr "Effectuer la passe d'optimisation de la propagation-de-copie par registre" +msgstr "Effectuer la passe d'optimisation de la propagation de copie par registre" #: common.opt:1018 msgid "Perform cross-jumping optimization" @@ -14365,7 +14335,7 @@ msgstr "" #: common.opt:1145 msgid "-fdump-<type>\tDump various compiler internals to a file" -msgstr "-fdump-<type>\tvidander les divers internes du compilateur dans un fichier" +msgstr "-fdump-<type>\tvidanger les divers internes du compilateur dans un fichier" #: common.opt:1152 msgid "-fdump-final-insns=filename\tDump to filename the insns at the end of translation" @@ -14451,7 +14421,7 @@ msgstr "" #, fuzzy, c-format #| msgid "unknown string token %s\n" msgid "unknown excess precision style %qs" -msgstr "élément lexical %s inconnu\n" +msgstr "élément lexical %qs inconnu" #: common.opt:1233 msgid "Output lto objects containing both the intermediate language and binary output." @@ -14475,7 +14445,7 @@ msgstr "Contrôle l'ordre d'allocation des registres entier" #, fuzzy #| msgid "Perform a register copy-propagation optimization pass" msgid "Perform a forward propagation pass on RTL" -msgstr "Effectuer la passe d'optimisation de la propagation-de-copie par registre" +msgstr "Effectuer la passe d'optimisation de la propagation de copie par registre" #: common.opt:1257 msgid "-ffp-contract=[off|on|fast] Perform floating-point expression contraction." @@ -14583,7 +14553,7 @@ msgstr "Traiter les directive #ident" #: common.opt:1373 msgid "Perform conversion of conditional jumps to branchless equivalents" -msgstr "Exécuter la conversion des sauts conditionels à des équivalents sans branchements" +msgstr "Exécuter la conversion des sauts conditionnels à des équivalents sans branchements" #: common.opt:1377 msgid "Perform conversion of conditional jumps to conditional execution" @@ -14602,7 +14572,7 @@ msgstr "" #, fuzzy #| msgid "Perform conversion of conditional jumps to branchless equivalents" msgid "Convert conditional jumps in innermost loops to branchless equivalents" -msgstr "Exécuter la conversion des sauts conditionels à des équivalents sans branchements" +msgstr "Exécuter la conversion des sauts conditionnels à des équivalents sans branchements" #: common.opt:1401 msgid "Also if-convert conditional jumps containing memory writes" @@ -14713,20 +14683,18 @@ msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm" msgstr "" #: common.opt:1509 -#, fuzzy, c-format -#| msgid "unknown register name: %s" +#, c-format msgid "unknown IRA algorithm %qs" -msgstr "nom de registre inconnu: %s" +msgstr "algorithme IRA inconnu %qs" #: common.opt:1519 msgid "-fira-region=[one|all|mixed] Set regions for IRA" msgstr "" #: common.opt:1522 -#, fuzzy, c-format -#| msgid "unknown register name: %s" +#, c-format msgid "unknown IRA region %qs" -msgstr "nom de registre inconnu: %s" +msgstr "région IRA inconnue %qs" #: common.opt:1535 common.opt:1540 msgid "Use IRA based register pressure calculation" @@ -14736,7 +14704,7 @@ msgstr "" #, fuzzy #| msgid "Store locals in argument registers" msgid "Share slots for saving different hard registers." -msgstr "Stocker les var. locales dans redistres d'arguments" +msgstr "Stocker les var. locales dans registres d'arguments" #: common.opt:1549 msgid "Share stack slots for spilled pseudo-registers." @@ -14773,10 +14741,8 @@ msgid "Do CFG-sensitive rematerialization in LRA" msgstr "" #: common.opt:1585 -#, fuzzy -#| msgid "Enable linker optimizations" msgid "Enable link-time optimization." -msgstr "Activer les optimisations par l'éditeur de liens" +msgstr "Activer les optimisations durant l'édition de liens." #: common.opt:1589 msgid "Link-time optimization with number of parallel jobs or jobserver." @@ -14786,7 +14752,7 @@ msgstr "" #, fuzzy, c-format #| msgid "unknown machine mode `%s'" msgid "unknown LTO partitioning model %qs" -msgstr "mode machine « %s » inconnu" +msgstr "mode machine %qs inconnu" #: common.opt:1611 msgid "Specify the algorithm to partition symbols and vars at linktime" @@ -14844,7 +14810,7 @@ msgstr "Tentative de fusion de constantes identiques à travers des unités de c #: common.opt:1663 msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line. 0 suppresses line-wrapping" -msgstr "-fmessage-length=<nombre>\tlimiter la longueur des diagnotiques à <nombre> de caractères par ligne. 0 supprime l'enroulement de ligne" +msgstr "-fmessage-length=<nombre>\tLimiter la longueur des diagnostiques à <nombre> de caractères par ligne. 0 supprime l'enroulement de ligne" #: common.opt:1667 msgid "Perform SMS based modulo scheduling before the first scheduling pass" @@ -14881,10 +14847,9 @@ msgid "Support synchronous non-call exceptions" msgstr "Supporter les exceptions synchrones des non appels" #: common.opt:1694 -#, fuzzy, c-format -#| msgid "target missing after %s" +#, c-format msgid "options or targets missing after %qs" -msgstr "cible manquante après %s" +msgstr "options ou cibles manquantes après %qs" #: common.opt:1695 msgid "-foffload=<targets>=<options> Specify offloading targets and options for them" @@ -14898,7 +14863,7 @@ msgstr "" #, fuzzy, c-format #| msgid "unknown tls-model \"%s\"" msgid "unknown offload ABI %qs" -msgstr "tls-model \"%s\" inconnu" +msgstr "tls-model %qs inconnu" #: common.opt:1712 msgid "When possible do not generate stack frames" @@ -15044,13 +15009,11 @@ msgstr "" #, fuzzy #| msgid "Reorder functions to improve code placement" msgid "Enable function reordering that improves code placement" -msgstr "Ré-ordonner les fonctions pour améliorer l'emplacement de code" +msgstr "Réordonner les fonctions pour améliorer l'emplacement de code" #: common.opt:1848 -#, fuzzy -#| msgid "-frandom-seed=<string>\tMake compile reproducible using <string>" msgid "-frandom-seed=<number>\tMake compile reproducible using <number>" -msgstr "-frandom-seed=<chaîne>\tfaire une compilation reproduisible en utilisant <chaîne>" +msgstr "-frandom-seed=<nombre>\tfaire une compilation reproductible en utilisant <nombre>" #: common.opt:1858 msgid "Record gcc command line switches in the object file." @@ -15080,17 +15043,17 @@ msgstr "Effectuer une changement de nom de registres après une passe d'optimisa #: common.opt:1887 msgid "Reorder basic blocks to improve code placement" -msgstr "Ré-ordonner les blocs de base pour améliorer l'emplacement de code" +msgstr "Réordonner les blocs de base pour améliorer l'emplacement de code" #: common.opt:1891 #, fuzzy #| msgid "Reorder basic blocks to improve code placement" msgid "Reorder basic blocks and partition into hot and cold sections" -msgstr "Ré-ordonner les blocs de base pour améliorer l'emplacement de code" +msgstr "Réordonner les blocs de base pour améliorer l'emplacement de code" #: common.opt:1895 msgid "Reorder functions to improve code placement" -msgstr "Ré-ordonner les fonctions pour améliorer l'emplacement de code" +msgstr "Réordonner les fonctions pour améliorer l'emplacement de code" #: common.opt:1899 msgid "Add a common subexpression elimination pass after loop optimizations" @@ -15122,7 +15085,7 @@ msgstr "Autoriser le mouvement spéculatif de plusieurs chargements" #: common.opt:1931 msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler" -msgstr "-fsched-verbose=<numéro>\tnitialiser le niveau de verbosité de l'ordonnanceur" +msgstr "-fsched-verbose=<numéro>\tinitialiser le niveau de verbosité de l'ordonnanceur" #: common.opt:1935 msgid "If scheduling post reload, do superblock scheduling" @@ -15165,20 +15128,16 @@ msgid "Allow premature scheduling of queued insns" msgstr "Autoriser l'ordonnancement prématuré de queues insns" #: common.opt:1984 -#, fuzzy -#| msgid "-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled" msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled" -msgstr "-fsched-stalled-insns=<nombre> fixer le nombre d'insns en queu qui peuvent être prématurément ordonnancés" +msgstr "-fsched-stalled-insns=<nombre>\tFixer le nombre d'insns en queue qui peuvent être prématurément ordonnancés" #: common.opt:1992 msgid "Set dependence distance checking in premature scheduling of queued insns" msgstr "Fixer la distance de vérification de dépendance dans l'ordonnancement prématuré d'insns en queue" #: common.opt:1996 -#, fuzzy -#| msgid "-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns" msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns" -msgstr "-fsched-stalled-insns-dep=<nombre> fixer la distance de vérification de dépendance dans l'ordonnancement d'insnsn en queue" +msgstr "-fsched-stalled-insns-dep=<nombre>\tFixer la distance de vérification de dépendance dans l'ordonnancement d'insnsn en queue" #: common.opt:2000 msgid "Enable the group heuristic in the scheduler" @@ -15264,13 +15223,13 @@ msgstr "" #, fuzzy #| msgid "Insert stack checking code into the program" msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program" -msgstr "Insérer du code de vérificaion de la pile dans le programme" +msgstr "Insérer du code de vérification de la pile dans le programme" #: common.opt:2089 #, fuzzy #| msgid "Insert stack checking code into the program" msgid "Insert stack checking code into the program. Same as -fstack-check=specific" -msgstr "Insérer du code de vérificaion de la pile dans le programme" +msgstr "Insérer du code de vérification de la pile dans le programme" #: common.opt:2096 msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>" @@ -15300,7 +15259,7 @@ msgstr "" #, fuzzy #| msgid "Reuse r30 on a per function basis" msgid "Output stack usage information on a per-function basis" -msgstr "Ré-utiliser R30 sur une base par fonction" +msgstr "Réutiliser R30 sur une base par fonction" #: common.opt:2132 msgid "Assume strict aliasing rules apply" @@ -15337,10 +15296,9 @@ msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet t msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tinitialiser le modèle de génération de code par défaut de thread local" #: common.opt:2163 -#, fuzzy, c-format -#| msgid "unknown tls-model \"%s\"" +#, c-format msgid "unknown TLS model %qs" -msgstr "tls-model \"%s\" inconnu" +msgstr "modèle TLS %qs inconnu" #: common.opt:2179 msgid "Reorder top level functions, variables, and asms" @@ -15352,23 +15310,19 @@ msgstr "Exécuter la formation du super bloc via la duplication de la queue" #: common.opt:2190 msgid "Assume floating-point operations can trap" -msgstr "On assume que les opérations en virgule flottante peuvent être attrappées" +msgstr "On assume que les opérations en virgule flottante peuvent être attrapées" #: common.opt:2194 msgid "Trap for signed overflow in addition, subtraction and multiplication" -msgstr "Attrapper les débordements de signe dans l'addition, la soustraction et la multiplication" +msgstr "Attraper les débordements de signe dans l'addition, la soustraction et la multiplication" #: common.opt:2198 -#, fuzzy -#| msgid "Enable SSA optimizations" msgid "Enable SSA-CCP optimization on trees" -msgstr "Autoriser les optimisations SSA" +msgstr "Activer les optimisations SSA-CCP sur les arbres" #: common.opt:2202 -#, fuzzy -#| msgid "Enable SSA optimizations" msgid "Enable SSA-BIT-CCP optimization on trees" -msgstr "Autoriser les optimisations SSA" +msgstr "Activer les optimisations SSA-BIT-CCP sur les arbres" #: common.opt:2210 msgid "Enable loop header copying on trees" @@ -15388,7 +15342,7 @@ msgstr "" #: common.opt:2226 msgid "Enable copy propagation on trees" -msgstr "" +msgstr "Activer la propagation de copie sur les arbres" #: common.opt:2234 #, fuzzy @@ -15538,7 +15492,7 @@ msgstr "" #, fuzzy #| msgid "Perform a register copy-propagation optimization pass" msgid "Perform Value Range Propagation on trees" -msgstr "Effectuer la passe d'optimisation de la propagation-de-copie par registre" +msgstr "Effectuer la passe d'optimisation de la propagation de copie par registre" #: common.opt:2359 msgid "Compile whole compilation unit at a time" @@ -15546,7 +15500,7 @@ msgstr "Compiler complètement à la fois une unité de compilation" #: common.opt:2363 msgid "Perform loop unrolling when iteration count is known" -msgstr "Exécuter un dé-roulement des boucles lorsque le compteur d'itération est connu" +msgstr "Exécuter un déroulement des boucles lorsque le compteur d'itération est connu" #: common.opt:2367 msgid "Perform loop unrolling for all loops" @@ -15660,7 +15614,7 @@ msgstr "" #, fuzzy, c-format #| msgid "unrecognized register name \"%s\"" msgid "unrecognized visibility value %qs" -msgstr "nom de registre non reconnue \"%s\"" +msgstr "nom de registre non reconnue %qs" #: common.opt:2526 msgid "Validate vtable pointers before using them." @@ -15670,7 +15624,7 @@ msgstr "" #, fuzzy, c-format #| msgid "(near initialization for `%s')" msgid "unknown vtable verify initialization priority %qs" -msgstr "(près de l'initialisation de « %s »)" +msgstr "près de l'initialisation de %qs" #: common.opt:2542 msgid "Output vtable verification counters." @@ -15870,16 +15824,13 @@ msgstr "" #: go/gofrontend/expressions.cc:93 c-family/c-common.c:1910 cp/cvt.c:1182 #: cp/cvt.c:1430 -#, fuzzy, gcc-internal-format -#| msgid "%Hvalue computed is not used" +#, gcc-internal-format msgid "value computed is not used" -msgstr "%Hvaleur calculée n'est pas utilisée" +msgstr "valeur calculée n'est pas utilisée" #: go/gofrontend/expressions.cc:628 -#, fuzzy -#| msgid "invalid use of %D" msgid "invalid use of type" -msgstr "utilisation invalide de %D" +msgstr "utilisation invalide du type" #: go/gofrontend/expressions.cc:2725 go/gofrontend/expressions.cc:2791 #: go/gofrontend/expressions.cc:2807 @@ -15887,10 +15838,8 @@ msgid "constant refers to itself" msgstr "" #: go/gofrontend/expressions.cc:3704 go/gofrontend/expressions.cc:4082 -#, fuzzy -#| msgid "unexpected operand" msgid "expected pointer" -msgstr "opérande inattendue" +msgstr "pointeur attendu" #: go/gofrontend/expressions.cc:4049 #, fuzzy @@ -16164,7 +16113,7 @@ msgstr "" #, fuzzy #| msgid "%s is not addressable" msgid "slice of unaddressable value" -msgstr "%s n'est pas adressable" +msgstr "%s n'est pas addressable" #: go/gofrontend/expressions.cc:10741 #, fuzzy @@ -16402,16 +16351,14 @@ msgid "type has no methods" msgstr "erreur lors de l'analyse syntaxique des méthodes" #: go/gofrontend/types.cc:7495 -#, fuzzy, c-format -#| msgid "ambiguous abbreviation %s" +#, c-format msgid "ambiguous method %s%s%s" -msgstr "abréviation %s est ambiguë" +msgstr "méthode ambiguë %s%s%s" #: go/gofrontend/types.cc:7498 -#, fuzzy, c-format -#| msgid "missing argument to \"%s\"" +#, c-format msgid "missing method %s%s%s" -msgstr "argument manquant à \"%s\"" +msgstr "méthode manquante %s%s%s" #: go/gofrontend/types.cc:7539 #, c-format @@ -16426,31 +16373,27 @@ msgstr "" #. Warn about and ignore all others for now, but store them. #: attribs.c:455 c-family/c-common.c:8544 objc/objc-act.c:4985 #: objc/objc-act.c:6954 objc/objc-act.c:8143 objc/objc-act.c:8194 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute directive ignored" +#, gcc-internal-format msgid "%qE attribute directive ignored" -msgstr "attribut de directive « %s » ignoré" +msgstr "attribut de directive %qE ignoré" #: attribs.c:459 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute directive ignored" +#, gcc-internal-format msgid "%<%E::%E%> scoped attribute directive ignored" -msgstr "attribut de directive « %s » ignoré" +msgstr "" #: attribs.c:468 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments specified for `%s' attribute" +#, gcc-internal-format msgid "wrong number of arguments specified for %qE attribute" -msgstr "nombre erroné d'arguments spécifié pour l'attribut « %s »" +msgstr "nombre erroné d'arguments spécifié pour l'attribut %qE" #. This is a c++11 attribute that appertains to a #. type-specifier, outside of the definition of, a class #. type. Ignore it. #: attribs.c:481 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute ignored" +#, gcc-internal-format msgid "attribute ignored" -msgstr "attribut « %s » ignoré" +msgstr "attribut ignoré" #: attribs.c:483 #, gcc-internal-format @@ -16458,16 +16401,14 @@ msgid "an attribute that appertains to a type-specifier is ignored" msgstr "" #: attribs.c:500 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute does not apply to types" +#, gcc-internal-format msgid "%qE attribute does not apply to types" -msgstr "l'attribut « %s » ne s'applique pas aux types" +msgstr "l'attribut %qE ne s'applique pas aux types" #: attribs.c:548 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute only applies to function types" +#, gcc-internal-format msgid "%qE attribute only applies to function types" -msgstr "l'attribut « %s » ne s'applique qu'à des types de fonction" +msgstr "l'attribut %qE ne s'applique qu'à des types de fonction" #: attribs.c:558 #, fuzzy, gcc-internal-format @@ -16481,16 +16422,15 @@ msgid "Offset exceeds 16 bytes." msgstr "" #: auto-profile.c:859 -#, fuzzy, gcc-internal-format -#| msgid "';' expected" +#, gcc-internal-format msgid "Not expected TAG." -msgstr "«;» attendu" +msgstr "TAG inattendu." #: auto-profile.c:924 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Could not open source file %s.\n" msgid "Cannot open profile file %s." -msgstr "N'a pu ouvrir le fichier source %s.\n" +msgstr "N'a pu ouvrir le fichier source %s." #: auto-profile.c:927 #, gcc-internal-format @@ -16511,13 +16451,13 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "cannot find file for class %s" msgid "Cannot read function profile from %s." -msgstr "ne peut repérer le fichier pour la classe %s." +msgstr "Ne peut repérer le fichier pour la classe %s." #: auto-profile.c:953 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%s: cannot get working directory: %s\n" msgid "Cannot read working set from %s." -msgstr "%s: ne peut repérer le répertoire de travail: %s\n" +msgstr "Ne peut repérer le répertoire de travail %s." #: bt-load.c:1593 #, gcc-internal-format @@ -16593,7 +16533,7 @@ msgstr "l'argument de « __builtin_eh_return_regno » doit être une constante" #, fuzzy, gcc-internal-format #| msgid "initializer specified for non-member function `%D'" msgid "trampoline generated for nested function %qD" -msgstr "initialisation spécifiée pour une fonction « %D » n'étant pas membre" +msgstr "initialisation spécifiée pour une fonction %qD n'étant pas membre" #: builtins.c:5248 builtins.c:5261 #, gcc-internal-format @@ -16609,7 +16549,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "invalid type `%T' for default argument to `%T'" msgid "invalid memory model argument to builtin" -msgstr "type invalide « %T » pour l'argument par défaut « %T »" +msgstr "type invalide pour l'argument par défaut" #: builtins.c:5431 #, gcc-internal-format @@ -16763,58 +16703,51 @@ msgstr "l'appel de fonction a une valeur d'agrégat" #, fuzzy, gcc-internal-format #| msgid "Pass all arguments on stack" msgid "passing too large argument on stack" -msgstr "PAsser tous les arguments par la pile" +msgstr "Passer tous les arguments par la pile" #: cfgexpand.c:1376 function.c:1002 varasm.c:2163 -#, fuzzy, gcc-internal-format -#| msgid "%Jsize of variable '%D' is too large" +#, gcc-internal-format msgid "size of variable %q+D is too large" -msgstr "taille de la variable « %D » est trop grande" +msgstr "taille de la variable %q+D est trop grande" #: cfgexpand.c:2452 -#, fuzzy, gcc-internal-format -#| msgid "too many alternatives in `asm'" +#, gcc-internal-format msgid "too many alternatives in %<asm%>" -msgstr "trop d'alternatives dans « asm »" +msgstr "trop d'alternatives dans %<asm%>" #: cfgexpand.c:2464 #, fuzzy, gcc-internal-format #| msgid "operand constraints for `asm' differ in number of alternatives" msgid "operand constraints for %<asm%> differ in number of alternatives" -msgstr "contraintes de l'opérande pour « asm » diffèrent en nombre d'alternatives" +msgstr "contraintes de l'opérande pour %<asm%> diffèrent en nombre d'alternatives" #: cfgexpand.c:2492 -#, fuzzy, gcc-internal-format -#| msgid "asm-specifier for variable `%s' conflicts with asm clobber list" +#, gcc-internal-format msgid "asm-specifier for variable %qE conflicts with asm clobber list" -msgstr "asm-specifier pour la variable « %s » est en conflit avec la liste asm clobber" +msgstr "asm-specifier pour la variable %qE est en conflit avec la liste asm clobber" #: cfgexpand.c:2589 -#, fuzzy, gcc-internal-format -#| msgid "unknown register name `%s' in `asm'" +#, gcc-internal-format msgid "unknown register name %qs in %<asm%>" -msgstr "nom de registre inconnu « %s » dans «asm »" +msgstr "nom de registre %qs inconnu dans %<asm%>" #: cfgexpand.c:2603 -#, fuzzy, gcc-internal-format -#| msgid "PIC register `%s' clobbered in `asm'" +#, gcc-internal-format msgid "PIC register clobbered by %qs in %<asm%>" -msgstr "registre PIC « %s » est maltraité dans «asm »" +msgstr "registre PIC %qs est maltraité dans %<asm%>" #: cfgexpand.c:2651 -#, fuzzy, gcc-internal-format -#| msgid "more than %d operands in `asm'" +#, gcc-internal-format msgid "more than %d operands in %<asm%>" -msgstr "plus que %d opérandes dans « asm »" +msgstr "plus que %d opérandes dans %<asm%>" #: cfgexpand.c:2719 #, gcc-internal-format, gfc-internal-format msgid "output number %d not directly addressable" -msgstr "nombre de sortie %d n,est pas directement adressable" +msgstr "nombre de sortie %d n,est pas directement addressable" #: cfgexpand.c:2805 -#, fuzzy, gcc-internal-format -#| msgid "asm operand %d probably doesn't match constraints" +#, gcc-internal-format msgid "asm operand %d probably doesn%'t match constraints" msgstr "opérande asm %d ne concorde pas probablement avec les contraintes" @@ -16849,45 +16782,46 @@ msgid "prev_bb of %d should be %d, not %d" msgstr "prev_bb de %d devrait être %d, pas %d" #: cfghooks.c:154 -#, gcc-internal-format, gfc-internal-format +#, fuzzy, gcc-internal-format, gfc-internal-format +#| msgid "verify_flow_info: Basic block %d succ edge is corrupted" msgid "verify_flow_info: Block %i has loop_father, but there are no loops" -msgstr "" +msgstr "verify_flow_info : le bloc %i manque d’un loop_father" #: cfghooks.c:160 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "verify_flow_info: Basic block %d succ edge is corrupted" msgid "verify_flow_info: Block %i lacks loop_father" -msgstr "verify_flow_info: l'arrête succ du bloc de base %d est corrompue" +msgstr "verify_flow_info : le bloc %i manque d’un loop_father" #: cfghooks.c:166 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong count of block %i %i" -msgstr "verify_flow_info: Nombre de blocs erroné %i %i" +msgstr "verify_flow_info : Nombre de blocs erroné %i %i" #: cfghooks.c:172 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong frequency of block %i %i" -msgstr "verify_flow_info: Fréquence de blocs erronée %i %i" +msgstr "verify_flow_info : Fréquence de blocs erronée %i %i" #: cfghooks.c:180 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Duplicate edge %i->%i" -msgstr "verify_flow_info: arrête dupliquée %i->%i" +msgstr "verify_flow_info : arrête dupliquée %i->%i" #: cfghooks.c:186 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong probability of edge %i->%i %i" -msgstr "verify_flow_info: probabilité de l'arrête %i->%i %i erronée" +msgstr "verify_flow_info : probabilité de l'arrête %i->%i %i erronée" #: cfghooks.c:192 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Wrong count of edge %i->%i %i" -msgstr "verify_flow_info: Mauvais nombre d'arrête %i->%i %i" +msgstr "verify_flow_info : Mauvais nombre d'arrête %i->%i %i" #: cfghooks.c:204 #, gcc-internal-format, gfc-internal-format msgid "verify_flow_info: Basic block %d succ edge is corrupted" -msgstr "verify_flow_info: l'arrête succ du bloc de base %d est corrompue" +msgstr "verify_flow_info : l'arrête succ du bloc de base %d est corrompue" #: cfghooks.c:218 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -17499,7 +17433,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "range mode has non-constant limits" msgid "cgraph_node has wrong clone list" -msgstr "mode d'étendue a des limites non contantes" +msgstr "mode d'étendue a des limites non constantes" #: cgraph.c:2933 #, gcc-internal-format @@ -17560,7 +17494,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "cannot declare references to references" msgid "Wrong node is referenced with chkp reference" -msgstr "ne peut décalrer des références vers des références" +msgstr "ne peut déclarer des références vers des références" #: cgraph.c:3032 #, gcc-internal-format @@ -17693,7 +17627,7 @@ msgstr "Déclaration invalide" #, fuzzy, gcc-internal-format #| msgid "field `%s' declared as a function" msgid "failed to reclaim unneeded function" -msgstr "champ « %s » déclaré comme une fonction" +msgstr "champ déclaré comme une fonction" #: cgraphunit.c:1329 #, gcc-internal-format @@ -17970,10 +17904,9 @@ msgid "cannot merge separate %s counters for function %u" msgstr "ne peut faire la fusion séparée des compteurs %s pour la fonction %u" #: coverage.c:370 -#, fuzzy, gcc-internal-format -#| msgid "`%s' has overflowed" +#, gcc-internal-format msgid "%qs has overflowed" -msgstr "« %s » a déborbé" +msgstr "%qs a débordé" #: coverage.c:428 #, gcc-internal-format @@ -17997,10 +17930,9 @@ msgid "source locations for function %qE have changed, the profile data may be o msgstr "" #: coverage.c:719 -#, fuzzy, gcc-internal-format -#| msgid "error writing `%s'" +#, gcc-internal-format msgid "error writing %qs" -msgstr "erreur d'écriture dans %s" +msgstr "erreur d'écriture dans %qs" #: coverage.c:1256 #, gcc-internal-format, gfc-internal-format @@ -18039,9 +17971,9 @@ msgstr "" #: dbgcnt.c:135 #, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid " `%D'" +#| msgid " %s" msgid " %s" -msgstr " « %D »" +msgstr " %s" #: dbxout.c:3346 #, gcc-internal-format @@ -18288,7 +18220,7 @@ msgstr "comparaison est toujours %d" #, fuzzy, gcc-internal-format #| msgid "`or' of unmatched not-equal tests is always 1" msgid "%<or%> of unmatched not-equal tests is always 1" -msgstr "« or » de tests non pairé de non égalité est troujours 1" +msgstr "« or » de tests non pairé de non égalité est toujours 1" #: fold-const.c:5778 #, fuzzy, gcc-internal-format @@ -18375,7 +18307,7 @@ msgstr "specs de la spécification %s n'a pas été trouvé pour être renommer" #, fuzzy, gcc-internal-format #| msgid "%s: attempt to rename spec '%s' to already defined spec '%s'" msgid "%s: attempt to rename spec %qs to already defined spec %qs" -msgstr "%s: tentative pour renommner la spécification « %s » à un spécification « %s » déjà définie" +msgstr "%s: tentative pour renommer la spécification « %s » à un spécification « %s » déjà définie" #: gcc.c:2026 #, gcc-internal-format, gfc-internal-format @@ -18685,13 +18617,13 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "environment variable DJGPP not defined" msgid "environment variable %qs not defined" -msgstr "variable d'environment DJGPP non définie" +msgstr "variable d'environnement DJGPP non définie" #: gcc.c:8948 gcc.c:8953 #, fuzzy, gcc-internal-format #| msgid "invalid version number format" msgid "invalid version number %qs" -msgstr "format de numéro de verson invalide" +msgstr "format de numéro de version invalide" #: gcc.c:8996 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -18862,7 +18794,7 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "output number %d not directly addressable" msgid "memory input %d is not directly addressable" -msgstr "nombre de sortie %d n,est pas directement adressable" +msgstr "nombre de sortie %d n’est pas directement addressable" #: gimplify.c:5736 #, fuzzy, gcc-internal-format @@ -19420,7 +19352,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "inconsistent operand constraints in an `asm'" msgid "inconsistent operand constraints in an %<asm%>" -msgstr "contrainte d'opérande inconsistente en « asm »" +msgstr "contrainte d'opérande inconsistante en « asm »" #: lra-constraints.c:4366 #, gcc-internal-format, gfc-internal-format @@ -19594,13 +19526,13 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "environment variable DJGPP not defined" msgid "environment variable COLLECT_GCC must be set" -msgstr "variable d'environment DJGPP non définie" +msgstr "variable d'environnement DJGPP non définie" #: lto-wrapper.c:908 config/nvptx/mkoffload.c:883 #, fuzzy, gcc-internal-format #| msgid "environment variable DJGPP not defined" msgid "environment variable COLLECT_GCC_OPTIONS must be set" -msgstr "variable d'environment DJGPP non définie" +msgstr "variable d'environnement DJGPP non définie" # I18N #: lto-wrapper.c:1174 @@ -20047,7 +19979,7 @@ msgstr "limite maximale obtenue de la taille du fichier de vidange (core file): #: opts.c:2275 #, gcc-internal-format msgid "setting core file size limit to maximum: %m" -msgstr "initialisation de la limite maximal de la taille du fichier de vidance (core file): %m" +msgstr "initialisation de la limite maximal de la taille du fichier de vidange (core file): %m" #: opts.c:2320 #, gcc-internal-format, gfc-internal-format @@ -20509,7 +20441,7 @@ msgstr "contrainte d'entrée de l'opérande contient « %c »" #: stmt.c:424 #, gcc-internal-format msgid "matching constraint references invalid operand number" -msgstr "nombre d'opérandes invalides pour références de containte concordantes" +msgstr "nombre d'opérandes invalides pour références de contrainte concordantes" #: stmt.c:458 #, fuzzy, gcc-internal-format @@ -20520,7 +20452,7 @@ msgstr "ponctuation invalide « %c » dans la contrainte" #: stmt.c:479 #, gcc-internal-format msgid "matching constraint does not allow a register" -msgstr "contrainte de concordance ne permet pas de reigstre" +msgstr "contrainte de concordance ne permet pas de registre" #: stmt.c:573 #, fuzzy, gcc-internal-format @@ -20531,7 +20463,7 @@ msgstr "nom d'opérande asm « %s » apparaît en double" #: stmt.c:669 #, gcc-internal-format msgid "missing close brace for named operand" -msgstr "accolade de fermeture manquante pour l'opérandé nommée" +msgstr "accolade de fermeture manquante pour l'opérande nommée" #: stmt.c:694 #, fuzzy, gcc-internal-format @@ -20622,7 +20554,7 @@ msgstr "Le type retourné d'une fonction ne peut être une fonction" #, fuzzy, gcc-internal-format #| msgid "array is not addressable" msgid "variable symbol is not variable" -msgstr "tableau n'est pas adressable" +msgstr "tableau n'est pas addressable" #: symtab.c:932 #, gcc-internal-format @@ -20911,7 +20843,7 @@ msgstr "instruction d'ordonnancement n'est pas supportée sur cette machine cibl #: toplev.c:1430 #, gcc-internal-format msgid "this target machine does not have delayed branches" -msgstr "cette machine cible n'a pas de branchments avec délais" +msgstr "cette machine cible n'a pas de branchements avec délais" #: toplev.c:1444 #, gcc-internal-format, gfc-internal-format @@ -21339,7 +21271,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "invalid version number format" msgid "invalid conversion in gimple call" -msgstr "format de numéro de verson invalide" +msgstr "format de numéro de version invalide" #: tree-cfg.c:3368 #, fuzzy, gcc-internal-format @@ -21441,7 +21373,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "invalid version number format" msgid "non-trivial conversion in unary operation" -msgstr "format de numéro de verson invalide" +msgstr "format de numéro de version invalide" #: tree-cfg.c:3666 #, gcc-internal-format @@ -22018,7 +21950,7 @@ msgstr "fonction « %F » ne peut être enligne parce qu'elle utilise une taille #, fuzzy, gcc-internal-format #| msgid "%Jfunction '%F' can never be inlined because it uses alloca (override using the always_inline attribute)" msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)" -msgstr "fonction « %F » ne peut être enligne parce qu'elle utilise alloca (écrasant l'utiliastion de l'attribut always_inline)" +msgstr "fonction « %F » ne peut être enligne parce qu'elle utilise alloca (écrasant l'utilisation de l'attribut always_inline)" #: tree-inline.c:3634 #, fuzzy, gcc-internal-format @@ -22964,20 +22896,20 @@ msgstr "" #: c-family/c-common.c:1944 #, gcc-internal-format msgid "type-punning to incomplete type might break strict-aliasing rules" -msgstr "type-punning vers un type incomplet peut briser les règles stricte d'aliases" +msgstr "type-punning vers un type incomplet peut briser les règles stricte d'alias" # FIXME #: c-family/c-common.c:1959 #, gcc-internal-format msgid "dereferencing type-punned pointer will break strict-aliasing rules" -msgstr "déréférencement du pointeur type-punned brisera les strictes d'aliases" +msgstr "déréférencement du pointeur type-punned brisera les strictes d'alias" # FIXME #: c-family/c-common.c:1966 c-family/c-common.c:1984 #, fuzzy, gcc-internal-format #| msgid "dereferencing type-punned pointer will break strict-aliasing rules" msgid "dereferencing type-punned pointer might break strict-aliasing rules" -msgstr "déréférencement du pointeur type-punned brisera les strictes d'aliases" +msgstr "déréférencement du pointeur type-punned brisera les strictes d'alias" #: c-family/c-common.c:2118 #, gcc-internal-format @@ -23168,7 +23100,7 @@ msgstr "grand entier implicitement tronqué pour un type non signé" #: c-family/c-common.c:2934 c-family/c-common.c:2941 c-family/c-common.c:2949 #, gcc-internal-format msgid "overflow in implicit constant conversion" -msgstr "débordement dans la conversion implicte de la constante" +msgstr "débordement dans la conversion implicite de la constante" #: c-family/c-common.c:3121 #, fuzzy, gcc-internal-format @@ -23330,7 +23262,7 @@ msgstr "intervalle vide spécifié" #: c-family/c-common.c:6199 #, gcc-internal-format msgid "duplicate (or overlapping) case value" -msgstr "valeur du « case » duppliquée (ou en chevauchant une autre)" +msgstr "valeur du « case » dupliquée (ou en chevauchant une autre)" #: c-family/c-common.c:6201 #, fuzzy, gcc-internal-format @@ -23341,7 +23273,7 @@ msgstr "est la première entrée chevauchant cette valeur" #: c-family/c-common.c:6205 #, gcc-internal-format msgid "duplicate case value" -msgstr "valeur du « case » duppliquée" +msgstr "valeur du « case » dupliquée" #: c-family/c-common.c:6206 #, fuzzy, gcc-internal-format @@ -23606,7 +23538,7 @@ msgstr "« %#D » ne peut être déclaré" #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not a string constant" msgid "attribute %qE argument not a string" -msgstr "l'attribut « %s » de l'argument n'est pas une contante chaîne" +msgstr "l'attribut « %s » de l'argument n'est pas une constante chaîne" #: c-family/c-common.c:7959 #, fuzzy, gcc-internal-format @@ -23712,7 +23644,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not an integer constant" msgid "assume_aligned parameter not integer constant" -msgstr "l'attribut « %s » de l'argument n'est pas une contante entière" +msgstr "l'attribut « %s » de l'argument n'est pas une constante entière" #: c-family/c-common.c:8496 c-family/c-common.c:9494 #, fuzzy, gcc-internal-format @@ -24532,7 +24464,7 @@ msgstr "argument de format %d inutilisé avant l'utilisation de l'argument %d da #: c-family/c-format.c:1374 #, gcc-internal-format msgid "format not a string literal, format string not checked" -msgstr "le format n'est pas une chaîne littérale, le format n'est pas vérifé" +msgstr "le format n'est pas une chaîne littérale, le format n'est pas vérifié" #: c-family/c-format.c:1389 c-family/c-format.c:1392 #, gcc-internal-format @@ -24700,7 +24632,7 @@ msgstr "%s ne supporte par le format « %%%s%c » %s" #: c-family/c-format.c:2240 #, gcc-internal-format msgid "operand number specified with suppressed assignment" -msgstr "nombre d'opérandes spécifié avec des affectations suprimées" +msgstr "nombre d'opérandes spécifié avec des affectations supprimées" #: c-family/c-format.c:2244 #, gcc-internal-format @@ -24903,7 +24835,7 @@ msgstr "début possible d'une chaîne de mot non terminée" #: c-family/c-lex.c:1180 #, gcc-internal-format msgid "traditional C rejects string constant concatenation" -msgstr "le C traditionel rejette la concaténation de chaînes de constantes" +msgstr "le C traditionnel rejette la concaténation de chaînes de constantes" #: c-family/c-omp.c:205 #, fuzzy, gcc-internal-format @@ -24949,7 +24881,7 @@ msgstr "Expression de contrôle invalide" #, fuzzy, gcc-internal-format #| msgid "missing index expression" msgid "missing increment expression" -msgstr "expresion d'index manquante" +msgstr "expression d'index manquante" #: c-family/c-omp.c:663 cp/semantics.c:6395 #, fuzzy, gcc-internal-format @@ -26944,7 +26876,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "Insert stack checking code into the program" msgid "can%'t use multiple stack checking methods together" -msgstr "Insérer du code de vérificaion de la pile dans le programme" +msgstr "Insérer du code de vérification de la pile dans le programme" #: config/bfin/bfin.c:2404 #, gcc-internal-format @@ -27517,7 +27449,7 @@ msgstr "Processeur inconnu : -mcpu=%s" #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not a string constant" msgid "attribute %<target%> argument not a string" -msgstr "l'attribut « %s » de l'argument n'est pas une contante chaîne" +msgstr "l'attribut « %s » de l'argument n'est pas une constante chaîne" #: config/i386/i386.c:4887 config/i386/i386.c:4934 #, gcc-internal-format, gfc-internal-format @@ -27881,13 +27813,13 @@ msgstr "troisième argument de « __builtin_prefetch » doit être une constante #, fuzzy, gcc-internal-format #| msgid "incorrect insn:" msgid "incorrect comparison mode" -msgstr "insn incoorect:" +msgstr "insn incorrect:" #: config/i386/i386.c:37790 config/i386/i386.c:37992 #, fuzzy, gcc-internal-format #| msgid "incorrect insn:" msgid "incorrect rounding operand" -msgstr "insn incoorect:" +msgstr "insn incorrect:" #: config/i386/i386.c:37974 #, fuzzy, gcc-internal-format @@ -27950,7 +27882,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "incorrect insn:" msgid "incorrect hint operand" -msgstr "insn incoorect:" +msgstr "insn incorrect:" #: config/i386/i386.c:40245 #, fuzzy, gcc-internal-format @@ -28108,7 +28040,7 @@ msgstr "l'adresse de la zone « %s » entre en conflit avec un déclaration pré #, fuzzy, gcc-internal-format #| msgid "%Jaddress area attribute cannot be specified for functions" msgid "address area attribute cannot be specified for functions" -msgstr "l'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctiones" +msgstr "l'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctions" #: config/ia64/ia64.c:824 #, fuzzy, gcc-internal-format @@ -28206,7 +28138,7 @@ msgstr "attributs de section ne sont pas supportés pour la cible" #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not an integer constant" msgid "%qE attribute argument not an integer constant" -msgstr "l'attribut « %s » de l'argument n'est pas une contante entière" +msgstr "l'attribut « %s » de l'argument n'est pas une constante entière" #: config/m32c/m32c.c:2991 #, gcc-internal-format @@ -28336,7 +28268,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "malformed #pragma ghs section" msgid "malformed #pragma GCC coprocessor subclass" -msgstr "sectin mal composée #pragma ghs" +msgstr "section mal composée #pragma ghs" #: config/mep/mep-pragma.c:347 #, fuzzy, gcc-internal-format @@ -28616,7 +28548,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "can not handle inconsistent calls to `%s'" msgid "cannot handle inconsistent calls to %qs" -msgstr "ne peut traiter des appels inconsistents à « %s »" +msgstr "ne peut traiter des appels inconsistants à « %s »" #: config/mips/mips.c:10332 #, gcc-internal-format @@ -30214,14 +30146,14 @@ msgstr "attribut « %s » s'applique seulement aux fonctions" #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not an integer constant" msgid "%qE attribute argument should be between 0 to 255" -msgstr "l'attribut « %s » de l'argument n'est pas une contante entière" +msgstr "l'attribut « %s » de l'argument n'est pas une constante entière" #. The argument must be a constant string. #: config/sh/sh.c:9833 #, fuzzy, gcc-internal-format #| msgid "`%s' attribute argument not a string constant" msgid "%qE attribute argument not a string constant" -msgstr "l'attribut « %s » de l'argument n'est pas une contante chaîne" +msgstr "l'attribut « %s » de l'argument n'est pas une constante chaîne" #: config/sh/sh.c:12596 #, gcc-internal-format @@ -30411,7 +30343,7 @@ msgstr "nom de section non reconnue « %s »" #: config/v850/v850-c.c:194 #, gcc-internal-format msgid "malformed #pragma ghs section" -msgstr "sectin mal composée #pragma ghs" +msgstr "section mal composée #pragma ghs" #: config/v850/v850-c.c:213 #, gcc-internal-format @@ -30452,7 +30384,7 @@ msgstr "rebut à la fin de #pragma ghs endzda" #, fuzzy, gcc-internal-format #| msgid "%Jdata area attributes cannot be specified for local variables" msgid "data area attributes cannot be specified for local variables" -msgstr "attribut de zone de donnéées ne peut être spécifié pour des variables locales" +msgstr "attribut de zone de données ne peut être spécifié pour des variables locales" #: config/v850/v850.c:2165 #, fuzzy, gcc-internal-format @@ -30464,7 +30396,7 @@ msgstr "zone de données de « %D » entre en conflit avec un déclaration préc #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "bogus JR construction: %d\n" msgid "bogus JR construction: %d" -msgstr "construction JR boggé: %d\n" +msgstr "construction JR bogué: %d\n" #: config/v850/v850.c:2314 config/v850/v850.c:2421 #, gcc-internal-format, gfc-internal-format @@ -30475,13 +30407,13 @@ msgstr "taille erronée pour l'enlèvement d'espace de la pile: %d" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "bogus JARL construction: %d\n" msgid "bogus JARL construction: %d" -msgstr "construction JARL boggée: %d\n" +msgstr "construction JARL boguée: %d\n" #: config/v850/v850.c:2698 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Bogus DISPOSE construction: %d\n" msgid "bogus DISPOSE construction: %d" -msgstr "construction DISPOSE boggé: %d\n" +msgstr "construction DISPOSE bogué: %d\n" #: config/v850/v850.c:2717 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -30493,7 +30425,7 @@ msgstr "Trop d'espace pour l'empilage pour la disposition de: %d" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Bogus PREPEARE construction: %d\n" msgid "bogus PREPEARE construction: %d" -msgstr "construction PREPEARE boggée: %d\n" +msgstr "construction PREPEARE boguée: %d\n" #: config/v850/v850.c:2836 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -30592,7 +30524,7 @@ msgstr "« #pragma options » mal composé, ignoré" #, fuzzy, gcc-internal-format #| msgid "invalid #pragma %s" msgid "invalid constant in %<#pragma %s%>" -msgstr "#pragma %s invalde" +msgstr "#pragma %s invalide" #: config/xtensa/xtensa.c:2213 #, gcc-internal-format @@ -30620,10 +30552,9 @@ msgid "non-default Scalar_Storage_Order" msgstr "" #: ada/gcc-interface/misc.c:158 -#, fuzzy, gcc-internal-format -#| msgid "`-gnat' misspelled as `-gant'" +#, gcc-internal-format msgid "%<-gnat%> misspelled as %<-gant%>" -msgstr "« -gnat » mal épellé comme « -gant »" +msgstr "%<-gnat%> mal orthographié comme %<-gant%>" #: ada/gcc-interface/misc.c:269 #, gcc-internal-format @@ -30660,41 +30591,38 @@ msgstr "le nombre d'arguments ne concorde pas avec celui du prototype" #: ada/gcc-interface/utils.c:5623 ada/gcc-interface/utils.c:5797 #: ada/gcc-interface/utils.c:5859 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute ignored" +#, gcc-internal-format msgid "%qs attribute ignored" -msgstr "attribut « %s » ignoré" +msgstr "attribut %qs ignoré" #: ada/gcc-interface/utils.c:5740 #, fuzzy, gcc-internal-format #| msgid "`%s' attribute requires an integer constant argument" msgid "%qs attribute requires prototypes with named arguments" -msgstr "l'attribut « %s » requiert un argument de type constante entière" +msgstr "l'attribut %qs requiert un argument de type constante entière" #: ada/gcc-interface/utils.c:5749 -#, fuzzy, gcc-internal-format -#| msgid "`%s' attribute only applies to functions" +#, gcc-internal-format msgid "%qs attribute only applies to variadic functions" -msgstr "attribut « %s » s'applique seulement aux fonctions" +msgstr "l’attribut %qs s’applique seulement aux fonctions variadiques" #: ada/gcc-interface/utils.c:5819 -#, fuzzy, gcc-internal-format -#| msgid "%s has no effect" +#, gcc-internal-format msgid "%qE attribute has no effect" -msgstr "%s n'a pas d'effet" +msgstr "l’attribut %qE n'a pas d’effet" #: ada/gcc-interface/utils.c:5943 #, fuzzy, gcc-internal-format #| msgid "`%s' attribute only applies to variables" msgid "attribute %qs applies to array types only" -msgstr "attribut « %s » s'applique seulement aux variables" +msgstr "attribut %qs s'applique seulement aux variables" #: c/c-array-notation.c:229 c/c-array-notation.c:258 cp/call.c:7581 #: cp/cp-array-notation.c:264 #, fuzzy, gcc-internal-format #| msgid "invalid option argument `%s'" msgid "Invalid builtin arguments" -msgstr "argument de l'option invalide « %s »" +msgstr "argument de l'option invalide" #: c/c-array-notation.c:265 cp/cp-array-notation.c:271 #, gcc-internal-format @@ -30851,7 +30779,7 @@ msgstr "prototype pour « %D » déclare moins d'arguments que la définition pr #, fuzzy, gcc-internal-format #| msgid "%Jprototype for '%D' declares arg %d with incompatible type" msgid "prototype for %q+D declares argument %d with incompatible type" -msgstr "prototype pour « %D » déclare l'arguments %d avec un type incompatible" +msgstr "prototype pour « %D » déclare l'argument %d avec un type incompatible" #. If we get here, no errors were found, but do issue a warning #. for this poor-style construct. @@ -31002,7 +30930,7 @@ msgstr "déclaration non thread local de « %D » suit une déclaration de threa #, fuzzy, gcc-internal-format #| msgid "%Jextern declaration of '%D' follows declaration with no linkage" msgid "extern declaration of %q+D follows declaration with no linkage" -msgstr "déclaration externe de « %D » suit une déclaraion sans lien" +msgstr "déclaration externe de « %D » suit une déclaration sans lien" #: c/c-decl.c:2211 #, fuzzy, gcc-internal-format @@ -31032,13 +30960,13 @@ msgstr "déclaration enligne de « %D » suit la déclaration avec un attribut n #, fuzzy, gcc-internal-format #| msgid "%Jdeclaration of '%D' with attribute noinline follows inline declaration " msgid "declaration of %q+D with attribute noinline follows inline declaration " -msgstr "éclaration de « %D » avec un attribut non enligne suit une déclaration enligne" +msgstr "déclaration de « %D » avec un attribut non enligne suit une déclaration enligne" #: c/c-decl.c:2263 c/c-decl.c:2269 c/c-decl.c:2275 c/c-decl.c:2281 #, fuzzy, gcc-internal-format #| msgid "%Jdeclaration of '%D' with attribute noinline follows inline declaration " msgid "declaration of %q+D with attribute %qs follows declaration with attribute %qs" -msgstr "éclaration de « %D » avec un attribut non enligne suit une déclaration enligne" +msgstr "déclaration de « %D » avec un attribut non enligne suit une déclaration enligne" #: c/c-decl.c:2299 #, fuzzy, gcc-internal-format @@ -32333,7 +32261,7 @@ msgstr "déclaration de paramètre d'ancien style dans la définition prototypé #: c/c-decl.c:8469 #, gcc-internal-format msgid "traditional C rejects ISO C style function definitions" -msgstr "le C traditionel rejette les définitions de fonction de style ISO C" +msgstr "le C traditionnel rejette les définitions de fonction de style ISO C" #: c/c-decl.c:8485 #, fuzzy, gcc-internal-format @@ -32402,10 +32330,9 @@ msgid "number of arguments doesn%'t match prototype" msgstr "le nombre d'arguments ne concorde pas avec celui du prototype" #: c/c-decl.c:8686 c/c-decl.c:8733 c/c-decl.c:8747 -#, fuzzy, gcc-internal-format -#| msgid "%Hprototype declaration" +#, gcc-internal-format msgid "prototype declaration" -msgstr "%Hdéclaration de prototype" +msgstr "déclaration de prototype" #: c/c-decl.c:8725 #, fuzzy, gcc-internal-format @@ -32982,7 +32909,7 @@ msgstr "utilisation obsolète d'une initialisation désignée avec « : »" #: c/c-parser.c:4392 #, gcc-internal-format msgid "ISO C forbids specifying range of elements to initialize" -msgstr "ISO C interdit de spécifier les bornes des éléments à initaliser" +msgstr "ISO C interdit de spécifier les bornes des éléments à initialiser" #: c/c-parser.c:4404 #, gcc-internal-format @@ -33389,7 +33316,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "%Jaddress area attribute cannot be specified for functions" msgid "the %<getter%> attribute may only be specified once" -msgstr "l'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctiones" +msgstr "l'attribut de la zone d'adresse ne peut pas être spécifié pour des fonctions" #: c/c-parser.c:9623 #, gcc-internal-format @@ -33480,7 +33407,7 @@ msgstr "l'argument de « %d » n'est pas une constante" #, fuzzy, gcc-internal-format #| msgid "%s is not addressable" msgid "%qD is not a variable" -msgstr "%s n'est pas adressable" +msgstr "%s n'est pas addressable" #: c/c-parser.c:10342 cp/parser.c:28044 #, fuzzy, gcc-internal-format @@ -33642,7 +33569,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "invalid #pragma %s" msgid "invalid pragma" -msgstr "#pragma %s invalde" +msgstr "#pragma %s invalide" #: c/c-parser.c:12151 cp/parser.c:31654 #, gcc-internal-format @@ -33658,7 +33585,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "invalid #pragma %s" msgid "invalid form of %<#pragma omp atomic%>" -msgstr "#pragma %s invalde" +msgstr "#pragma %s invalide" #: c/c-parser.c:12670 cp/parser.c:29978 cp/parser.c:29994 #, fuzzy, gcc-internal-format @@ -34126,7 +34053,7 @@ msgstr "l'objet appelé n'est pas une fonction" #: c/c-typeck.c:2976 #, gcc-internal-format msgid "function called through a non-compatible type" -msgstr "fonction appellée à travers un type non compatible" +msgstr "fonction appelée à travers un type non compatible" #: c/c-typeck.c:2981 c/c-typeck.c:3018 #, fuzzy, gcc-internal-format @@ -34800,7 +34727,7 @@ msgstr "" #: c/c-typeck.c:6449 #, gcc-internal-format msgid "traditional C rejects automatic aggregate initialization" -msgstr "le C traditionel rejette l'initialisation automatique d'agrégats" +msgstr "le C traditionnel rejette l'initialisation automatique d'agrégats" #: c/c-typeck.c:6686 c/c-typeck.c:7577 #, gcc-internal-format @@ -34985,7 +34912,7 @@ msgstr "éléments en excès dans l'initialisation d'union" #: c/c-typeck.c:8975 #, gcc-internal-format msgid "traditional C rejects initialization of unions" -msgstr "le C traditionel rejette l'initialisation d'union" +msgstr "le C traditionnel rejette l'initialisation d'union" #: c/c-typeck.c:9043 #, gcc-internal-format @@ -35018,7 +34945,7 @@ msgstr "fonction déclarée avec « noreturn» utilisant le mot-clé « return  #, fuzzy, gcc-internal-format #| msgid "comma expression used to initialize return value" msgid "array notation expression cannot be used as a return value" -msgstr "expression virgule utilsée pour initialiser la valeur de retour" +msgstr "expression virgule utilisée pour initialiser la valeur de retour" #: c/c-typeck.c:9390 cp/typeck.c:8437 #, gcc-internal-format @@ -35128,10 +35055,9 @@ msgid "continue statement within %<#pragma simd%> loop body" msgstr "mot-clé « continue » à l'extérieur de toute boucle" #: c/c-typeck.c:9927 cp/cp-gimplify.c:439 -#, fuzzy, gcc-internal-format -#| msgid "%Hstatement with no effect" +#, gcc-internal-format msgid "statement with no effect" -msgstr "%Hdéclaration sans effet" +msgstr "déclaration sans effet" #: c/c-typeck.c:9971 #, gcc-internal-format @@ -35324,7 +35250,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "type to vector delete is neither pointer or array type" msgid "%qE does not have pointer or array type" -msgstr "type du vesteur delete n'est ni un pointeur ou un type tableau" +msgstr "type du vecteur delete n'est ni un pointeur ou un type tableau" #: c/c-typeck.c:12124 #, fuzzy, gcc-internal-format @@ -35385,7 +35311,7 @@ msgstr "« %s » n'est pas un nom de classe valide" #, fuzzy, gcc-internal-format #| msgid "type to vector delete is neither pointer or array type" msgid "%qE in %<aligned%> clause is neither a pointer nor an array" -msgstr "type du vesteur delete n'est ni un pointeur ou un type tableau" +msgstr "type du vecteur delete n'est ni un pointeur ou un type tableau" #: c/c-typeck.c:12332 #, gcc-internal-format @@ -35595,7 +35521,7 @@ msgstr "appel de « (%T) (%A) » est ambiguë" #, fuzzy, gcc-internal-format #| msgid "ambiguous conversion for array subscript" msgid "ambiguous overload for " -msgstr "comversion ambigue pour un sous-tableau" +msgstr "conversion ambiguë pour un sous-tableau" #: cp/call.c:4383 #, gcc-internal-format @@ -35728,13 +35654,13 @@ msgstr "type énuméré et non énuméré dans l'expression conditionnelle" #, fuzzy, gcc-internal-format #| msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead" msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead" -msgstr "pas « %D(int) » déclaré pour le postfixe « %s », essaie avec l'oprateur préfixe à la place" +msgstr "pas « %D(int) » déclaré pour le postfixe « %s », essaie avec l'opérateur préfixe à la place" #: cp/call.c:5530 #, fuzzy, gcc-internal-format #| msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead" msgid "no %<%D(int)%> declared for postfix %qs" -msgstr "pas « %D(int) » déclaré pour le postfixe « %s », essaie avec l'oprateur préfixe à la place" +msgstr "pas « %D(int) » déclaré pour le postfixe « %s », essaie avec l'opérateur préfixe à la place" #: cp/call.c:5623 #, fuzzy, gcc-internal-format @@ -36345,7 +36271,7 @@ msgstr "« %D » est trop petit pour contenir toutes les valeurs de « %#T »" #, fuzzy, gcc-internal-format #| msgid "member `%#D' with constructor not allowed in union" msgid "member %q+#D with constructor not allowed in union" -msgstr "membre « %#D » avec consructeur n'est pas permis dans l'union" +msgstr "membre « %#D » avec constructeur n'est pas permis dans l'union" #: cp/class.c:3535 #, fuzzy, gcc-internal-format @@ -36357,7 +36283,7 @@ msgstr "membre « %#D » avec destructeur n'est pas permis dans l'union" #, fuzzy, gcc-internal-format #| msgid "member `%#D' with copy assignment operator not allowed in union" msgid "member %q+#D with copy assignment operator not allowed in union" -msgstr "membre « %#D » avec opérateur d,affectation par copie n'st pas permis dans l'union" +msgstr "membre « %#D » avec opérateur d’affectation par copie n'est pas permis dans l'union" #: cp/class.c:3541 #, gcc-internal-format @@ -36374,7 +36300,7 @@ msgstr "champs multiples dans l'union « %T » initialisés" #, fuzzy, gcc-internal-format #| msgid "`%D' may not be static because it is a member of a union" msgid "in C++98 %q+D may not be static because it is a member of a union" -msgstr "« %D » peut ne pas être statique parce qu'il est membre de l'uniont" +msgstr "« %D » peut ne pas être statique parce qu'il est membre de l'union" #: cp/class.c:3672 #, fuzzy, gcc-internal-format @@ -36537,13 +36463,13 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "direct base `%T' inaccessible in `%T' due to ambiguity" msgid "direct base %qT inaccessible in %qT due to ambiguity" -msgstr "base directe « %T » inaccessible dans « %T » en raison de l'ambiguité" +msgstr "base directe « %T » inaccessible dans « %T » en raison de l'ambiguïté" #: cp/class.c:6104 #, fuzzy, gcc-internal-format #| msgid "virtual base `%T' inaccessible in `%T' due to ambiguity" msgid "virtual base %qT inaccessible in %qT due to ambiguity" -msgstr "base virtuelle « %T » inaccessible dans « %T » en raison de l'ambiguité" +msgstr "base virtuelle « %T » inaccessible dans « %T » en raison de l'ambiguïté" #: cp/class.c:6331 #, fuzzy, gcc-internal-format @@ -37405,10 +37331,9 @@ msgid "left operand of comma operator has no effect" msgstr "l'opérande à gauche de la virgule n'a pas d'effet" #: cp/cvt.c:1386 -#, fuzzy, gcc-internal-format -#| msgid "%Hstatement with no effect" +#, gcc-internal-format msgid "statement has no effect" -msgstr "%Hdéclaration sans effet" +msgstr "déclaration sans effet" #: cp/cvt.c:1390 #, fuzzy, gcc-internal-format @@ -37474,7 +37399,7 @@ msgstr "déclaration de « %F » amène différentes exceptions" #, fuzzy, gcc-internal-format #| msgid "than previous declaration `%F'" msgid "from previous declaration %q+F" -msgstr "qu'une précédente déclaratio « %F »" +msgstr "qu'une précédente déclaration %q+F" #: cp/decl.c:1257 #, gcc-internal-format @@ -37567,7 +37492,7 @@ msgstr "déclaration précédente d'un non fonction « %#D »" #, fuzzy, gcc-internal-format #| msgid "ambiguates built-in declaration `%#D'" msgid "new declaration %q#D ambiguates built-in declaration %q#D" -msgstr "ambiguités de la déclaration interne de « %#D »" +msgstr "ambiguïtés de la déclaration interne de « %#D »" #: cp/decl.c:1551 #, fuzzy, gcc-internal-format @@ -37591,7 +37516,7 @@ msgstr "déclaration du patron « %#D »" #, fuzzy, gcc-internal-format #| msgid "ambiguates old declaration `%#D'" msgid "ambiguating new declaration %q#D" -msgstr "ambiguités d'une vieille déclaration de « %#D »" +msgstr "ambiguïtés d'une vieille déclaration de « %#D »" #: cp/decl.c:1592 cp/decl.c:1615 #, fuzzy, gcc-internal-format @@ -37609,7 +37534,7 @@ msgstr "déclaration implicite de la fonction « %#D »" #, fuzzy, gcc-internal-format #| msgid "ambiguates old declaration `%#D'" msgid "ambiguating new declaration of %q#D" -msgstr "ambiguités d'une vieille déclaration de « %#D »" +msgstr "ambiguïtés d'une vieille déclaration de « %#D »" #: cp/decl.c:1623 #, fuzzy, gcc-internal-format @@ -38097,7 +38022,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "declaration of `%#D' outside of class is not definition" msgid "declaration of %q#D outside of class is not definition" -msgstr "déclaraion de « %#D » en dehors de la classe n'est pas une définition" +msgstr "déclaration de « %#D » en dehors de la classe n'est pas une définition" #: cp/decl.c:4859 #, gcc-internal-format @@ -38327,7 +38252,7 @@ msgstr "« %D » doit être initialisé par un constructeur, non pas par « {... #, fuzzy, gcc-internal-format #| msgid "_Pragma takes a parenthesized string literal" msgid "array %qD initialized by parenthesized string literal %qE" -msgstr "_Pragma prend une chaîne entourée de parenthèrese" +msgstr "_Pragma prend une chaîne entourée de parenthèse" #: cp/decl.c:6048 #, gcc-internal-format @@ -38517,7 +38442,7 @@ msgstr "déclaration de « %D » n'est pas dans l'espace de noms entourant « %D #, fuzzy, gcc-internal-format #| msgid "static member function `%#D' declared with type qualifiers" msgid "static member function %q#D declared with type qualifiers" -msgstr "membre de fonction statique « %#D » déclaré avec des qualificateurs de tyep" +msgstr "membre de fonction statique « %#D » déclaré avec des qualificateurs de type" #: cp/decl.c:7710 #, fuzzy, gcc-internal-format @@ -38741,7 +38666,7 @@ msgstr "taille du tableau n'est pas une expression de constante de type entier" #, fuzzy, gcc-internal-format #| msgid "ISO C++ forbids variable-size array `%D'" msgid "ISO C++ forbids variable length array %qD" -msgstr "ISO C++ interdit les tableaus de taille variable « %D »" +msgstr "ISO C++ interdit les tableaux de taille variable « %D »" #: cp/decl.c:8568 #, fuzzy, gcc-internal-format @@ -38822,12 +38747,12 @@ msgstr "déclaration de « %s » comme un tableau de fonctions" #, fuzzy, gcc-internal-format #| msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first" msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first" -msgstr "déclaration de « %D » comme tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première" +msgstr "déclaration de « %D » comme tableau multidimensionnel doit avoir des bornes pour chaque dimension excepté pour la première" #: cp/decl.c:8744 #, gcc-internal-format msgid "multidimensional array must have bounds for all dimensions except the first" -msgstr "tableau multidimensionel doit avoir des bornes pour chaque dimension excepté pour la première" +msgstr "tableau multidimensionnel doit avoir des bornes pour chaque dimension excepté pour la première" #: cp/decl.c:8779 #, gcc-internal-format @@ -39231,7 +39156,7 @@ msgstr "ne peut déclarer un pointeur vers le membre « %#T »" #, fuzzy, gcc-internal-format #| msgid "cannot declare references to references" msgid "cannot declare reference to qualified function type %qT" -msgstr "ne peut décalrer des références vers des références" +msgstr "ne peut déclarer des références vers des références" #: cp/decl.c:9997 #, fuzzy, gcc-internal-format @@ -39378,7 +39303,7 @@ msgstr "ISO C++ interdit le type imbriqué « %D » avec le même nom que la cla #: cp/decl.c:10497 #, gcc-internal-format msgid "type qualifiers specified for friend class declaration" -msgstr "qulificateurs de types spécifiés pour la déclaration d'une classe amie" +msgstr "qualificateurs de types spécifiés pour la déclaration d'une classe amie" #: cp/decl.c:10502 #, fuzzy, gcc-internal-format @@ -39497,7 +39422,7 @@ msgstr "qualificateurs ne sont pas permis dans la déclaration de « operator %T #, fuzzy, gcc-internal-format #| msgid "specialization of implicitly-declared special member function" msgid "specialization of variable template %qD declared as function" -msgstr "spécialisation d'un membre spécial d'nue fonction déclaré implicitement" +msgstr "spécialisation d'un membre spécial d'une fonction déclaré implicitement" #: cp/decl.c:10752 #, fuzzy, gcc-internal-format @@ -39532,7 +39457,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "static member `%D' declared `register'" msgid "non-static data member %qE declared %<constexpr%>" -msgstr "mambre statique « %D» déclaré «register »" +msgstr "membre statique « %D» déclaré «register »" #: cp/decl.c:10936 #, fuzzy, gcc-internal-format @@ -39628,7 +39553,7 @@ msgstr "ne peut explicitement déclarer le membre « %#D » comme ayant une liai #, fuzzy, gcc-internal-format #| msgid "declaration of `%#D' outside of class is not definition" msgid "declaration of constexpr variable %qD is not a definition" -msgstr "déclaraion de « %#D » en dehors de la classe n'est pas une définition" +msgstr "déclaration de « %#D » en dehors de la classe n'est pas une définition" #: cp/decl.c:11086 #, fuzzy, gcc-internal-format @@ -39804,7 +39729,7 @@ msgstr "postfixe « %D» doit prendre « int » comme argument" #, fuzzy, gcc-internal-format #| msgid "postfix `%D' must take `int' as its second argument" msgid "postfix %qD must take %<int%> as its second argument" -msgstr "postfixe « %D» doit prndre « int » pour son second argument" +msgstr "postfixe « %D» doit prendre « int » pour son second argument" #: cp/decl.c:11963 #, fuzzy, gcc-internal-format @@ -40123,7 +40048,7 @@ msgstr "nom manquant pour le membre d'une fonction" #: cp/decl2.c:420 cp/decl2.c:434 #, gcc-internal-format msgid "ambiguous conversion for array subscript" -msgstr "comversion ambigue pour un sous-tableau" +msgstr "conversion ambiguë pour un sous-tableau" #: cp/decl2.c:428 #, fuzzy, gcc-internal-format @@ -40578,7 +40503,7 @@ msgstr "traitement des exceptions désactivé, utiliser -fexceptions pour l'acti #: cp/except.c:730 #, gcc-internal-format msgid "throwing NULL, which has integral, not pointer type" -msgstr "retounrnant NULL (par throw), lequel est entier, pas de type pointeur" +msgstr "retournant NULL (par throw), lequel est entier, pas de type pointeur" #: cp/except.c:754 cp/init.c:2531 #, fuzzy, gcc-internal-format @@ -40997,7 +40922,7 @@ msgstr "répétitions d'expressions doit être une constante" #, fuzzy, gcc-internal-format #| msgid "double quoted strings not allowed in #if expressions" msgid "variably modified type not allowed in new-expression" -msgstr "chaînes entre quillemets ne sont pas allouées dans les expression #if" +msgstr "chaînes entre guillemets ne sont pas allouées dans les expression #if" #: cp/init.c:2400 #, fuzzy, gcc-internal-format @@ -41083,7 +41008,7 @@ msgstr "problème possible détecté dans l'invocation de l'opérateur delete:" #, fuzzy, gcc-internal-format #| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined." msgid "neither the destructor nor the class-specific operator delete [] will be called, even if they are declared when the class is defined" -msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appellé, même s'ils sont déclarés lorsque la classe est définie" +msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appelé, même s'ils sont déclarés lorsque la classe est définie" #: cp/init.c:3682 #, gcc-internal-format @@ -41109,7 +41034,7 @@ msgstr "problème possible détecté dans l'invocation de l'opérateur delete:" #, fuzzy, gcc-internal-format #| msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined." msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined" -msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appellé, même s'ils sont déclarés lorsque la classe est définie" +msgstr "ni le destructeur ni l'opérateur « delete » spécifique à la classe ne sera appelé, même s'ils sont déclarés lorsque la classe est définie" #: cp/init.c:4019 #, gcc-internal-format @@ -41124,7 +41049,7 @@ msgstr "" #: cp/init.c:4321 #, gcc-internal-format msgid "type to vector delete is neither pointer or array type" -msgstr "type du vesteur delete n'est ni un pointeur ou un type tableau" +msgstr "type du vecteur delete n'est ni un pointeur ou un type tableau" #: cp/lambda.c:480 #, gcc-internal-format @@ -41171,7 +41096,7 @@ msgstr "rebut à la fin de #pragma %s" #: cp/lex.c:345 #, gcc-internal-format, gfc-internal-format msgid "invalid #pragma %s" -msgstr "#pragma %s invalde" +msgstr "#pragma %s invalide" #: cp/lex.c:353 #, gcc-internal-format @@ -47451,7 +47376,7 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "syntax error in action" msgid "Syntax error in array constructor at %C" -msgstr "erreur de syntaxe dans l,action" +msgstr "erreur de syntaxe dans l’action" #: fortran/array.c:1061 #, gcc-internal-format, gfc-internal-format @@ -49411,7 +49336,7 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Missing first operand for binary operator at %0" msgid "Missing closing paren for binding label at %C" -msgstr "première opérande manquante pour l'opérateur biunaire à %0" +msgstr "première opérande manquante pour l'opérateur binaire à %0" #: fortran/decl.c:6016 #, gcc-internal-format, gfc-internal-format @@ -49498,7 +49423,7 @@ msgstr "" #: fortran/decl.c:6595 #, gcc-internal-format msgid "Expected %<(%> at %C" -msgstr "%<(%> atterdu à %C" +msgstr "%<(%> attendu à %C" #: fortran/decl.c:6609 fortran/decl.c:6649 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -50847,7 +50772,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'" msgid "Although not referenced, %qs has ambiguous interfaces at %L" -msgstr "référence « %s » est ambigue: apparaît dans l'interface « %s » et l'interface « %s »" +msgstr "référence « %s » est ambiguë : apparaît dans l'interface « %s » et l'interface « %s »" #: fortran/interface.c:1705 #, fuzzy, gcc-internal-format @@ -51123,7 +51048,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "Missing value at %1 for real-number exponent at %0" msgid "Missing actual argument for argument %qs at %L" -msgstr "Valeur manquante à %1 pour l'exposant d'un nombre réeal à %0" +msgstr "Valeur manquante à %1 pour l'exposant d'un nombre réel à %0" #: fortran/interface.c:3128 #, gcc-internal-format @@ -52244,7 +52169,7 @@ msgstr "constante sans type invalide à %1" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "syntax error in action" msgid "Syntax error in FORALL iterator at %C" -msgstr "erreur de syntaxe dans l,action" +msgstr "erreur de syntaxe dans l’action" #: fortran/match.c:2296 #, gcc-internal-format, gfc-internal-format @@ -53355,7 +53280,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "underflowed virtual array %s in %s, at %s:%d" msgid "Assumed rank array %qs in %s clause at %L" -msgstr "sous débordement du tableau virtuele %s dans %s, à %s:%d" +msgstr "sous débordement du tableau virtuel %s dans %s, à %s:%d" #: fortran/openmp.c:2691 #, gcc-internal-format @@ -54689,7 +54614,7 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "syntax error in action" msgid "Syntax error in COMPLEX constant at %C" -msgstr "erreur de syntaxe dans l,action" +msgstr "erreur de syntaxe dans l’action" #: fortran/primary.c:1583 #, gcc-internal-format @@ -54875,7 +54800,7 @@ msgstr "" #, fuzzy, gcc-internal-format #| msgid "%s is not addressable" msgid "%qs at %C is not a variable" -msgstr "%s n'est pas adressable" +msgstr "%s n'est pas addressable" #: fortran/resolve.c:125 #, gcc-internal-format @@ -55026,7 +54951,7 @@ msgstr "" #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "inconsistent instance variable specification" msgid "Function %s at %L has entries with mismatched array specifications" -msgstr "spécification inconsistente avec l'instance de la vairable" +msgstr "spécification inconsistante avec l'instance de la variable" #: fortran/resolve.c:797 #, gcc-internal-format, gfc-internal-format @@ -59781,25 +59706,22 @@ msgid "instance variable %qs is declared private" msgstr "instance de la variable « %s » est déclaré privée" #: objc/objc-act.c:9422 -#, fuzzy, gcc-internal-format -#| msgid "local declaration of `%s' hides instance variable" +#, gcc-internal-format msgid "local declaration of %qE hides instance variable" -msgstr "la déclaration locale de « %s » masque l'instance d'une variable" +msgstr "la déclaration locale de « %qE » masque l'instance d'une variable" #. This can happen if DECL_ARTIFICIAL (*expr_p), but #. should be impossible for real properties, which always #. have a getter. #: objc/objc-act.c:9468 -#, fuzzy, gcc-internal-format -#| msgid "no symbol table found" +#, gcc-internal-format msgid "no %qs getter found" -msgstr "aucune table des symboles trouvée" +msgstr "" #: objc/objc-act.c:9708 -#, fuzzy, gcc-internal-format -#| msgid "this media function is only available on the fr500" +#, gcc-internal-format msgid "fast enumeration is not available in Objective-C 1.0" -msgstr "cette fonction média est seulement disponible sur le fr500" +msgstr "" #: objc/objc-act.c:9718 #, gcc-internal-format @@ -59857,6 +59779,3 @@ msgstr "%<-fobjc-sjlj-exceptions%> est ignoré pour %<-fnext-runtime%> lorsque % #, gcc-internal-format msgid "creating selector for nonexistent method %qE" msgstr "création du sélection pour une méthode inexistante %qE" - -#~ msgid "ISO C++ forbids subscripting non-lvalue array" -#~ msgstr "ISO C++ interdit le souscriptage de non lvalue de tableau" diff --git a/gcc/po/zh_CN.po b/gcc/po/zh_CN.po index 56686e74b01..e7d76c1aad3 100644 --- a/gcc/po/zh_CN.po +++ b/gcc/po/zh_CN.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: gcc 5.2.0\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2015-07-02 12:31+0000\n" -"PO-Revision-Date: 2015-11-21 03:15-0500\n" +"PO-Revision-Date: 2016-01-10 13:41-0500\n" "Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" @@ -1518,7 +1518,7 @@ msgstr "è¦å‘Šï¼š" #: diagnostic.def:38 msgid "anachronism: " -msgstr "时代错误:" +msgstr "历å²é—留:" #: diagnostic.def:39 msgid "note: " @@ -1536,7 +1536,7 @@ msgstr "ä¿å®ˆè¦å‘Šï¼š" #: diagnostic.def:44 msgid "permerror: " -msgstr "永久性错误:" +msgstr "永久错误:" #: params.def:44 msgid "Maximal estimated outcome of branch considered predictable" @@ -11520,14 +11520,12 @@ msgid "Allow gcc to generate the SETLB and Lcc instructions" msgstr "å…许 gcc ç”Ÿæˆ LIW 指令" #: config/nds32/nds32.opt:26 -#, fuzzy msgid "Generate code in big-endian mode." -msgstr "生æˆå¤§ç«¯åœ¨å‰çš„代ç " +msgstr "生æˆå¤§ç«¯åœ¨å‰çš„代ç 。" #: config/nds32/nds32.opt:30 -#, fuzzy msgid "Generate code in little-endian mode." -msgstr "生æˆå°ç«¯åœ¨å‰çš„代ç " +msgstr "生æˆå°ç«¯åœ¨å‰çš„代ç 。" #: config/nds32/nds32.opt:34 #, fuzzy @@ -11555,9 +11553,8 @@ msgid "Generate v3 push25/pop25 instructions." msgstr "生æˆåŠ è½½/å˜å‚¨ä¹˜æ³•æŒ‡ä»¤" #: config/nds32/nds32.opt:54 -#, fuzzy msgid "Generate 16-bit instructions." -msgstr "ç”Ÿæˆ isel 指令" +msgstr "ç”Ÿæˆ 16 ä½æŒ‡ä»¤ã€‚" #: config/nds32/nds32.opt:58 msgid "Specify the size of each interrupt vector, which must be 4 or 16." @@ -12493,24 +12490,20 @@ msgid "Known TILE-Gx CPUs (for use with the -mcpu= option):" msgstr "已知 TILE-Gx 处ç†å™¨ (用于 -mcpu= 选项):" #: config/tilegx/tilegx.opt:37 -#, fuzzy msgid "Compile with 32 bit longs and pointers." -msgstr "为 32 ä½æŒ‡é’ˆç¼–译" +msgstr "为 32 ä½é•¿æ•´å½¢å’ŒæŒ‡é’ˆç¼–译。" #: config/tilegx/tilegx.opt:41 -#, fuzzy msgid "Compile with 64 bit longs and pointers." -msgstr "为 64 ä½æŒ‡é’ˆç¼–译" +msgstr "为 32 ä½é•¿æ•´å½¢å’ŒæŒ‡é’ˆç¼–译。" #: config/tilegx/tilegx.opt:45 -#, fuzzy msgid "Use big-endian byte order." -msgstr "令大端在å‰" +msgstr "令大端在å‰ã€‚" #: config/tilegx/tilegx.opt:49 -#, fuzzy msgid "Use little-endian byte order." -msgstr "令å°ç«¯åœ¨å‰" +msgstr "令å°ç«¯åœ¨å‰ã€‚" #: config/tilegx/tilegx.opt:53 #, fuzzy @@ -12518,14 +12511,12 @@ msgid "Use given TILE-Gx code model" msgstr "使用给定的 SPARC-V9 代ç 模型" #: config/arc/arc.opt:26 -#, fuzzy msgid "Compile code for big endian mode" -msgstr "生æˆå¤§ç«¯åœ¨å‰çš„代ç " +msgstr "生æˆå¤§ç«¯åºæ¨¡å¼çš„代ç " #: config/arc/arc.opt:30 -#, fuzzy msgid "Compile code for little endian mode. This is the default" -msgstr "生æˆå°ç«¯åœ¨å‰çš„代ç " +msgstr "生æˆç¬‘端åºæ¨¡å¼çš„代ç 。æ¤ä¸ºé»˜è®¤" #: config/arc/arc.opt:34 msgid "Disable ARCompact specific pass to generate conditional execution instructions" @@ -12540,9 +12531,8 @@ msgid "Generate ARCompact 32-bit code for ARC600 processor" msgstr "" #: config/arc/arc.opt:46 -#, fuzzy msgid "Same as -mA6" -msgstr "与上一次相åŒ" +msgstr "与 -mA6 相åŒ" #: config/arc/arc.opt:50 msgid "Generate ARCompact 32-bit code for ARC601 processor" @@ -12553,9 +12543,8 @@ msgid "Generate ARCompact 32-bit code for ARC700 processor" msgstr "" #: config/arc/arc.opt:58 -#, fuzzy msgid "Same as -mA7" -msgstr "与上一次相åŒ" +msgstr "与 -mA7 相åŒ" #: config/arc/arc.opt:62 #, fuzzy @@ -12728,9 +12717,8 @@ msgid "Enable pre-reload use of cbranchsi pattern" msgstr "å¯ç”¨ cbranchdi4 æ ·å¼" #: config/arc/arc.opt:257 -#, fuzzy msgid "Enable bbit peephole2" -msgstr "å¯ç”¨é¢„处ç†" +msgstr "å¯ç”¨ bbit peephole2" #: config/arc/arc.opt:261 msgid "Use pc-relative switch case tables - this enables case table shortening." @@ -13407,9 +13395,8 @@ msgid "Map one directory name to another in debug information" msgstr "在调试信æ¯ä¸å°†ä¸€ä¸ªç›®å½•åæ˜ å°„åˆ°å¦ä¸€ä¸ª" #: common.opt:1054 -#, fuzzy msgid "Output .debug_types section when using DWARF v4 debuginfo." -msgstr "输出.debugtypes 区段时使用 DWARF v4 debuginfo(_T)。" +msgstr "使用 DWARF v4 debuginfo 时输出 .debug_types 区段。" #: common.opt:1060 msgid "Defer popping functions args from stack until later" @@ -54216,9 +54203,9 @@ msgstr "ä¸èƒ½è®¾ç½®åªè¯»å±žæ€§" #. underlying instance variable could be a bitfield, but that is #. a different matter. #: objc/objc-act.c:955 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "property can not be a bit-field" -msgstr "ä¸èƒ½è®¾ç½®åªè¯»å±žæ€§" +msgstr "属性ä¸èƒ½æ˜¯ä¸€ä¸ªä½æ®µ" #: objc/objc-act.c:987 #, fuzzy, gcc-internal-format @@ -54309,9 +54296,9 @@ msgid "class %qE is deprecated" msgstr "已弃用类%qE" #: objc/objc-act.c:1735 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "could not find setter/getter for %qE in class %qE" -msgstr "找ä¸åˆ°ç±»%qE的接å£" +msgstr "ç±» %2$qE ä¸æ‰¾ä¸åˆ° %1$qE çš„å˜å–器。" #: objc/objc-act.c:1771 #, gcc-internal-format @@ -54513,14 +54500,14 @@ msgid "%<@throw%> (rethrow) used outside of a @catch block" msgstr "在 @catch å—外使用%<@throw%>(rethrow)" #: objc/objc-act.c:4374 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<@throw%> argument is not an object" -msgstr "对常é‡å¯¹è±¡çš„写æ“作(å®žå‚ %d)" +msgstr "%<@throw%> å‚æ•°ä¸æ˜¯ä¸€ä¸ªå¯¹è±¡" #: objc/objc-act.c:4395 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<@synchronized%> argument is not an object" -msgstr "级别 2 尚未åŒæ¥" +msgstr "%<@synchronized%> å‚æ•°ä¸æ˜¯ä¸€ä¸ªå¯¹è±¡" #: objc/objc-act.c:4603 #, gcc-internal-format @@ -54591,9 +54578,9 @@ msgstr "也找到了%<%c%s%>" #. class, or cast the receiver to 'id'. Note that #. rtype is an IDENTIFIER_NODE at this point. #: objc/objc-act.c:5428 objc/objc-act.c:5562 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "@interface of class %qE not found" -msgstr "找ä¸åˆ°ç±»%qE的接å£" +msgstr "找ä¸åˆ°ç±» %qE çš„ @interface" #: objc/objc-act.c:5436 #, gcc-internal-format @@ -54892,9 +54879,9 @@ msgstr "%<@dynamic%> 在 Objective-C 1.0 里ä¸å¯ç”¨" #. "misplaced '@dynamic' Objective-C++ construct" and skips the #. declaration. #: objc/objc-act.c:7853 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<@dynamic%> not in @implementation context" -msgstr "实现上下文ä¸ç¼ºå°‘%<@end%>" +msgstr "@implemention 上下文ä¸ç¼ºå°‘ %<@dynamic%>" #: objc/objc-act.c:7875 #, fuzzy, gcc-internal-format @@ -54958,9 +54945,9 @@ msgstr "%qE的局部声明éšè—了实例å˜é‡" #. should be impossible for real properties, which always #. have a getter. #: objc/objc-act.c:9468 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "no %qs getter found" -msgstr "找ä¸åˆ°å—段%qs。" +msgstr "找ä¸åˆ° %qs çš„å–值器" #: objc/objc-act.c:9708 #, gcc-internal-format @@ -54968,9 +54955,9 @@ msgid "fast enumeration is not available in Objective-C 1.0" msgstr "快速枚举在 Objective-C 1.0 里ä¸å¯ç”¨" #: objc/objc-act.c:9718 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "iterating variable in fast enumeration is not an object" -msgstr "è¿ä»£å˜é‡åœ¨ä¸å¿«é€Ÿæžšä¸¾ç±»åž‹ä¸æ˜¯å¯¹è±¡" +msgstr "快速枚举ä¸çš„è¿ä»£å˜é‡ä¸æ˜¯å¯¹è±¡" #: objc/objc-act.c:9724 #, fuzzy, gcc-internal-format @@ -54980,7 +54967,7 @@ msgstr "快速枚举在 Objective-C 1.0 里ä¸å¯ç”¨" #: objc/objc-encoding.c:142 #, gcc-internal-format msgid "type %qT does not have a known size" -msgstr "类型%qT大å°æœªçŸ¥" +msgstr "类型 %qT 大å°æœªçŸ¥" #: objc/objc-encoding.c:730 #, fuzzy, gcc-internal-format @@ -54989,9 +54976,9 @@ msgstr "未知类型 %<%T%>找到在的期间 Objective-C ç¼–ç " #. Do not do any encoding, produce an error and keep going. #: objc/objc-encoding.c:813 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "trying to encode non-integer type as a bitfield" -msgstr "å°è¯•ç¼–ç non-integer 类型作为 bitfield" +msgstr "å°è¯•å°†æœªæ•´æ•°ç±»åž‹ç¼–ç 为ä½æ®µï¼ˆbitfield)" #: objc/objc-gnu-runtime-abi-01.c:143 #, gcc-internal-format diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 30148ab7632..7af47eb8dd5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,157 @@ +2016-01-12 James Greenhalgh <james.greenhalgh@arm.com> + + Backport from mainline r222186. + 2015-04-17 Jakub Jelinek <jakub@redhat.com> + + PR target/65689 + * gcc.target/aarch64/c-output-template-4.c: New test. + +2015-01-10 Paul Thomas <pault@gcc.gnu.org> + + Backport from mainline. + PR fortran/50221 + * gfortran.dg/deferred_character_1.f90: New test. + * gfortran.dg/deferred_character_4.f90: New test for comment + #4 of the PR. + + Backport from mainline. + PR fortran/68216 + * gfortran.dg/deferred_character_2.f90: New test. + + Backport from mainline. + PR fortran/67674 + * gfortran.dg/deferred_character_3.f90: New test. + + Backport from mainline. + PR fortran/63932 + * gfortran.dg/deferred_character_5.f90: New test. + + Backport from mainline. + PR fortran/66408 + * gfortran.dg/deferred_character_6.f90: New test. + + Backport from mainline. + PR fortran/49954 + * gfortran.dg/deferred_character_7.f90: New test. + + Backport from mainline. + PR fortran/67779 + * gfortran.dg/actual_array_offset_1: New test. + +2016-01-08 Marek Polacek <polacek@redhat.com> + + PR c++/68449 + * g++.dg/pr68449.C: New. + +2016-01-08 Martin Jambor <mjambor@suse.cz> + + Backport from mainline + 2015-12-15 Martin Jambor <mjambor@suse.cz> + + PR ipa/68851 + * g++.dg/ipa/pr68851.C: New test. + +2016-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/68648 + * gcc.c-torture/execute/pr68648.c: New test. + +2015-12-31 Kirill Yukhin <kirill.yukhin@intel.com> + + * gcc.target/i386/avx512f-vbroadcastsd-3.c: New test. + +2015-12-30 Joseph Myers <joseph@codesourcery.com> + + PR c/69037 + Backport from mainline: + + 2015-12-07 Marek Polacek <polacek@redhat.com> + + PR c/68668 + * gcc.dg/pr68668.c: New test. + +2015-12-30 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/68987 + * gfortran.dg/error_format_2.f90: New test. + +2015-12-30 John David Anglin <danglin@gcc.gnu.org> + + * gfortran.dg/coarray_40.f90: Link with libatomic if available. + * gfortran.dg/coarray_lib_comm_1.f90: Revise to use + dg-additional-options. + +2015-12-30 Kirill Yukhin <kirill.yukhin@intel.com> + + * gcc.target/i386/avx-vextractf128-256-5.c: New test. + * gcc.target/i386/avx512vl-vextractf32x4-1.c: Fix scan pattern. + * gcc.target/i386/avx512vl-vextracti32x4-1.c: Ditto. + +2015-12-28 John David Anglin <danglin@gcc.gnu.org> + + * gcc.dg/torture/pr67609.c: Add -fno-common option on hppa*-*-hpux*. + +2015-12-22 Peter Bergner <bergner@vnet.ibm.com> + + Backport from mainline + PR target/68872 + * gcc.target/powerpc/pr68872.c: New test. + +2015-12-19 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.target/sparc/20151219-1.c: New test. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * gcc.target/s390/zvector/vec-splat-2.c: New test. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * gcc.target/s390/vector/vec-vrepi-1.c: New test. + +2015-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * gcc.target/s390/zvector/vec-splat-1.c: New test. + +2015-12-18 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2015-12-17 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/68835 + * gcc.dg/pr68835-1.c: New test. + * gcc.dg/pr68835-2.c: New test. + +2015-12-16 Joseph Myers <joseph@codesourcery.com> + + PR c/68162 + * gcc.dg/pr68162-1.c: New test. + +2015-12-16 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2015-12-02 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/68184 + * g++.dg/torture/pr68184.C: New testcase. + +2015-12-15 Alessandro Fanfarillo <fanfarillo@gmail.com> + + Backport from mainline. + 2015-12-15 + Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * gfortran.dg/coarray_critical_1.f90: New. + 2015-12-14 Tobias Burnus <burnus@net-b.de> Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> @@ -15,7 +169,7 @@ 2015-12-14 James Greenhalgh <james.greenhalgh@arm.com> Backport from mainline. - 2015-12-09 James Greenhalgh <james.greenhalgh@arm.com> + 2015-12-09 James Greenhalgh <james.greenhalgh@arm.com> PR rtl-optimization/67609 * gcc.dg/torture/pr67609.c: New. diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C new file mode 100644 index 00000000000..d0ac27d893c --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C @@ -0,0 +1,16 @@ +// PR c++/67339 +// { dg-do compile { target c++11 } } + +template < typename T> +struct A +{ + void foo(); + template < typename S, typename W > + using N = void (T::*)(S, W) const ; +}; + +template < typename T> +void A<T>::foo() +{ + typename A<T>::template N<int, int> fun = &T::out; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C new file mode 100644 index 00000000000..b8eb08411c1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C @@ -0,0 +1,9 @@ +// PR c++/66921 +// { dg-do compile { target c++11 } } + +template<typename T> +struct Holder { + constexpr static const int array[] = { 1, 2, 3 }; + enum {F = array[0]}; +}; +class HI: public Holder<int> {}; diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C new file mode 100644 index 00000000000..8b54578b524 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C @@ -0,0 +1,18 @@ +// PR c++/67411 +// { dg-do compile { target c++14 } } + +template <class T> +void f() +{ + int i = 42; + [x = i] { + [&](auto) { + [=] { return x; }(); + }(1); + }(); +} + +int main() +{ + f<int>(); +} diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C new file mode 100644 index 00000000000..9b3455a4da3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C @@ -0,0 +1,15 @@ +// PR c++/63628 +// { dg-do compile { target c++14 } } + +auto const pack = [](auto&&... t) +{ + return [&](auto&& f)->decltype(auto) + { + return f(static_cast<decltype(t)>(t)...); + }; +}; + +int main(int argc, char** argv) { + pack(1)([](int){}); + return 0; +} diff --git a/gcc/testsuite/g++.dg/init/aggr13.C b/gcc/testsuite/g++.dg/init/aggr13.C new file mode 100644 index 00000000000..08248a6df94 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/aggr13.C @@ -0,0 +1,17 @@ +// PR c++/67550 +// { dg-do run } + +struct S { + int x; + int y; +}; +int foo() { return 1; } + +int main() { + S const data[] = {{0, foo()}}; + + S data2[] = {data[0]}; + + if (!data2[0].y) + __builtin_abort(); +} diff --git a/gcc/testsuite/g++.dg/init/elide4.C b/gcc/testsuite/g++.dg/init/elide4.C new file mode 100644 index 00000000000..f85d6eea40a --- /dev/null +++ b/gcc/testsuite/g++.dg/init/elide4.C @@ -0,0 +1,13 @@ +// PR c++/67557 + +class A { +public: + A m_fn1(); + A(A const &); + int *L; + int ref; +}; +struct B : A { + B(); +}; +B::B() : A((0, m_fn1())) {} diff --git a/gcc/testsuite/g++.dg/ipa/pr68851.C b/gcc/testsuite/g++.dg/ipa/pr68851.C new file mode 100644 index 00000000000..659e4cdcc4a --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr68851.C @@ -0,0 +1,29 @@ +// { dg-do compile } +// { dg-options "-O3" } + +class A; +class B { +public: + operator A *() const; +}; +class A { +public: + virtual bool isFormControlElement() const {} +}; +class C { + struct D { + B element; + }; + bool checkPseudoClass(const D &, int &) const; +}; +class F { + virtual bool isFormControlElement() const; +}; +class G : A, F { + bool isFormControlElement() const {} +}; +bool C::checkPseudoClass(const D &p1, int &) const { + A &a = *p1.element; + a.isFormControlElement(); + a.isFormControlElement() || a.isFormControlElement(); +} diff --git a/gcc/testsuite/g++.dg/pr68449.C b/gcc/testsuite/g++.dg/pr68449.C new file mode 100644 index 00000000000..7d86fe97e64 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr68449.C @@ -0,0 +1,9 @@ +// PR c++/68449 +// { dg-do compile } +// { dg-options "-Wsign-compare" } + +int +foo (int a) +{ + return __extension__ ({ int b; b; }) < 0; +} diff --git a/gcc/testsuite/g++.dg/rtti/typeid11.C b/gcc/testsuite/g++.dg/rtti/typeid11.C new file mode 100644 index 00000000000..384b0f41705 --- /dev/null +++ b/gcc/testsuite/g++.dg/rtti/typeid11.C @@ -0,0 +1,16 @@ +// { dg-do run } + +#include <typeinfo> + +struct Base { virtual void foo() {} }; // polymorphic + +int main() +{ + Base b; + Base *ary[] = { &b, &b, &b}; + + int iter = 0; + typeid(*ary[iter++]); + if (iter != 1) // should be 1 + __builtin_abort(); // but 2 +} diff --git a/gcc/testsuite/g++.dg/torture/pr68184.C b/gcc/testsuite/g++.dg/torture/pr68184.C new file mode 100644 index 00000000000..d0c7c84910c --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr68184.C @@ -0,0 +1,31 @@ +// { dg-do run } +namespace { +struct IFoo { virtual void foo() = 0; }; +struct IBar { virtual void bar() = 0; }; + +struct FooBar : private IBar, private IFoo +{ + void call_foo() + { + try + { + static_cast<IFoo*>(this)->foo(); + } + catch( ... ) {} + } + void foo() { throw 1; } + void bar() {} +}; + +void test() +{ + FooBar foobar; + foobar.call_foo(); +} +} +int main() +{ + test(); + return 0; +} + diff --git a/gcc/testsuite/gcc.c-torture/execute/pr68648.c b/gcc/testsuite/gcc.c-torture/execute/pr68648.c new file mode 100644 index 00000000000..fc66806a99a --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr68648.c @@ -0,0 +1,20 @@ +int __attribute__ ((noinline)) +foo (void) +{ + return 123; +} + +int __attribute__ ((noinline)) +bar (void) +{ + int c = 1; + c |= 4294967295 ^ (foo () | 4073709551608); + return c; +} + +int +main () +{ + if (bar () != 0x83fd4005) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.dg/pr68162-1.c b/gcc/testsuite/gcc.dg/pr68162-1.c new file mode 100644 index 00000000000..a2c495365fe --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68162-1.c @@ -0,0 +1,6 @@ +/* Test handling of pointers to arrays of const elements involving a + typedef. PR c/68162. */ + +typedef const double cd; +void f (const double (*)[]); +void g (void) { f ((cd (*)[]) 0); } diff --git a/gcc/testsuite/gcc.dg/pr68668.c b/gcc/testsuite/gcc.dg/pr68668.c new file mode 100644 index 00000000000..d013aa92cef --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68668.c @@ -0,0 +1,53 @@ +/* PR c/68668 */ +/* { dg-do compile } */ + +typedef const int T[]; +typedef const int U[1]; + +int +fn1 (T p) +{ + return p[0]; +} + +int +fn2 (U p[2]) +{ + return p[0][0]; +} + +int +fn3 (U p[2][3]) +{ + return p[0][0][0]; +} + +int +fn4 (U *p) +{ + return p[0][0]; +} + +int +fn5 (U (*p)[1]) +{ + return (*p)[0][0]; +} + +int +fn6 (U (*p)[1][2]) +{ + return (*p)[0][0][0]; +} + +int +fn7 (U **p) +{ + return p[0][0][0]; +} + +int +fn8 (U (**p)[1]) +{ + return (*p)[0][0][0]; +} diff --git a/gcc/testsuite/gcc.dg/pr68835-1.c b/gcc/testsuite/gcc.dg/pr68835-1.c new file mode 100644 index 00000000000..47aebe3c1c6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68835-1.c @@ -0,0 +1,12 @@ +/* PR tree-optimization/68835 */ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2" } */ + +unsigned __int128 +foo (unsigned long a, unsigned long b) +{ + unsigned __int128 x = (unsigned __int128) a * b; + struct { unsigned __int128 a : 96; } w; + w.a = x; + return w.a; +} diff --git a/gcc/testsuite/gcc.dg/pr68835-2.c b/gcc/testsuite/gcc.dg/pr68835-2.c new file mode 100644 index 00000000000..dd355b17223 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68835-2.c @@ -0,0 +1,23 @@ +/* PR tree-optimization/68835 */ +/* { dg-do run { target int128 } } */ +/* { dg-options "-O2" } */ + +__attribute__((noinline, noclone)) unsigned __int128 +foo (void) +{ + unsigned __int128 x = (unsigned __int128) 0xffffffffffffffffULL; + struct { unsigned __int128 a : 65; } w; + w.a = x; + w.a += x; + return w.a; +} + +int +main () +{ + unsigned __int128 x = foo (); + if ((unsigned long long) x != 0xfffffffffffffffeULL + || (unsigned long long) (x >> 64) != 1) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr67609.c b/gcc/testsuite/gcc.dg/torture/pr67609.c index 817857dc52d..bd60610c693 100644 --- a/gcc/testsuite/gcc.dg/torture/pr67609.c +++ b/gcc/testsuite/gcc.dg/torture/pr67609.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-options "-fno-common" { target hppa*-*-hpux* } } */ typedef union { diff --git a/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c new file mode 100644 index 00000000000..5359eb7f4b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c @@ -0,0 +1,12 @@ +/* { dg-require-effective-target avx512f } */ +/* { dg-do assemble { target { ! ia32 } } } */ +/* { dg-options "-O2 -mavx512f" } */ + +#include <immintrin.h> + +register __m512d z asm ("zmm16"); /* { dg-warning "call-clobbered register used for global register variable" } */ + +__m128d foo () +{ + return _mm256_extractf128_pd (_mm512_extractf64x4_pd(z, 0), 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c index c8cce51c016..dd7e30b0e88 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c @@ -3,7 +3,7 @@ /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vextractf(?:128|64x2)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c index d49b0c0c916..a3f3224a77a 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c @@ -3,7 +3,7 @@ /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vextracti(?:128|64x2)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-3.c new file mode 100644 index 00000000000..9e44513daca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-3.c @@ -0,0 +1,21 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-mavx512f -O2 -ftree-vectorize -ffixed-xmm0 -ffixed-xmm1 -ffixed-xmm2 -ffixed-xmm3 -ffixed-xmm4 -ffixed-xmm5 -ffixed-xmm6 -ffixed-xmm7 -ffixed-xmm8 -ffixed-xmm9 -ffixed-xmm10 -ffixed-xmm11 -ffixed-xmm12 -ffixed-xmm13 -ffixed-xmm14" } */ +/* { dg-final { scan-assembler-times "vbroadcastsd\[ \\t\]+(?:%xmm(?:\[0-9\]|1\[0-5\]),\[ \\t\]*%ymm(?:\[0-9\]|1\[0-5\])|%xmm\[0-9\]+,\[ \\t\]*%zmm)" 1 } } */ + +#include <immintrin.h> + +register __m512d z asm ("zmm16"); /* { dg-warning "call-clobbered register used for global register variable" } */ + +double a[10000]; + +void foo (unsigned N) +{ + double d; + _mm_store_sd(&d, _mm256_extractf128_pd (_mm512_extractf64x4_pd (z, 0), 0)); + + for (int i=0; i<N; i++) + { + a[i] = d; + a[i] += a[i-4]; + } +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr68872.c b/gcc/testsuite/gcc.target/powerpc/pr68872.c new file mode 100644 index 00000000000..68f388efaa2 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr68872.c @@ -0,0 +1,14 @@ +/* PR target/68872 */ +/* { dg-do assemble { target { powerpc64le-*-* } } } */ +/* { dg-options "-mcpu=powerpc64le" } */ + +/* Verify that -mcpu=powerpc64le passes -mpower8/-mpwr8 to the assembler. */ + +long +bar (unsigned char *ptr, unsigned char val) +{ + long ret; + asm volatile ("stbcx. %0,0,%1" :: "r" (val), "r" (ptr)); + asm volatile ("mfcr %0,8" : "=r" (ret) ::); + return ret; +} diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c new file mode 100644 index 00000000000..27bf39e0963 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */ +/* { dg-require-effective-target vector } */ + +typedef unsigned char uv16qi __attribute__((vector_size(16))); +typedef unsigned short uv8hi __attribute__((vector_size(16))); +typedef unsigned int uv4si __attribute__((vector_size(16))); +typedef unsigned long long uv2di __attribute__((vector_size(16))); + +uv2di __attribute__((noinline)) +foo1 () +{ + return (uv2di){ 0x7f0f, 0x7f0f }; +} +/* { dg-final { scan-assembler-times "vrepig\t%v24,32527" 1 } } */ + +uv4si __attribute__((noinline)) +foo2 () +{ + return (uv4si){ 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f }; +} +/* { dg-final { scan-assembler-times "vrepif\t%v24,32527" 1 } } */ + +uv8hi __attribute__((noinline)) +foo3 () +{ + return (uv8hi){ 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f, + 0x7f0f, 0x7f0f, 0x7f0f, 0x7f0f }; +} +/* { dg-final { scan-assembler-times "vrepih\t%v24,32527" 1 } } */ + +uv16qi __attribute__((noinline)) +foo4 () +{ + return (uv16qi){ 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77, 0x77, 0x77 }; +} +/* { dg-final { scan-assembler-times "vrepib\t%v24,119" 1 } } */ + +int +main () +{ + if (foo1()[1] != 0x7f0f) + __builtin_abort (); + + if (foo2()[1] != 0x7f0f) + __builtin_abort (); + + if (foo3()[1] != 0x7f0f) + __builtin_abort (); + + if (foo4()[1] != 0x77) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c new file mode 100644 index 00000000000..bab2e2d4028 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c @@ -0,0 +1,42 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */ + +#include <vecintrin.h> + +vector signed char v16qi; +vector short v8hi; +vector int v4si; +vector long long v2di; + +vector unsigned char uv16qi; +vector unsigned short uv8hi; +vector unsigned int uv4si; +vector unsigned long long uv2di; + +int +foo () +{ + v16qi = vec_splats ((signed char)0x77); + uv16qi = vec_splats ((unsigned char)0x77); + + v8hi = vec_splats ((short int)0x7f0f); + uv8hi = vec_splats ((unsigned short int)0x7f0f); + + v4si = vec_splats ((int)0x7f0f); + uv4si = vec_splats ((unsigned int)0x7f0f); + + v2di = vec_splats ((long long)0x7f0f); + uv2di = vec_splats ((unsigned long long)0x7f0f); +} + +/* { dg-final { scan-assembler-times "vrepib\t%v.*,119" 1 } } */ +/* { dg-final { scan-assembler-times "vrepib\t%v.*,119" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepih\t%v.*,32527" 1 } } */ +/* { dg-final { scan-assembler-times "vrepih\t%v.*,32527" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepif\t%v.*,32527" 1 } } */ +/* { dg-final { scan-assembler-times "vrepif\t%v.*,32527" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepig\t%v.*,32527" 1 } } */ +/* { dg-final { scan-assembler-times "vrepig\t%v.*,32527" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c new file mode 100644 index 00000000000..7ad090b2d5e --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c @@ -0,0 +1,42 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */ + +#include <vecintrin.h> + +vector signed char v16qi; +vector short v8hi; +vector int v4si; +vector long long v2di; + +vector unsigned char uv16qi; +vector unsigned short uv8hi; +vector unsigned int uv4si; +vector unsigned long long uv2di; + +int +foo () +{ + v16qi = vec_splat_s8 (-112); + uv16qi = vec_splat_u8 (215); + + v8hi = vec_splat_s16 (-32000); + uv8hi = vec_splat_u16 (64000); + + v4si = vec_splat_s32 (-32000); + uv4si = vec_splat_u32 (64000); + + v2di = vec_splat_s64 (-32000); + uv2di = vec_splat_u64 (64000); +} + +/* { dg-final { scan-assembler-times "vrepib\t%v.*,-112" 1 } } */ +/* { dg-final { scan-assembler-times "vrepib\t%v.*,-41" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepih\t%v.*,-32000" 1 } } */ +/* { dg-final { scan-assembler-times "vrepih\t%v.*,-1536" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepif\t%v.*,-32000" 1 } } */ +/* { dg-final { scan-assembler-times "vrepif\t%v.*,-1536" 1 } } */ + +/* { dg-final { scan-assembler-times "vrepig\t%v.*,-32000" 1 } } */ +/* { dg-final { scan-assembler-times "vrepig\t%v.*,-1536" 1 } } */ diff --git a/gcc/testsuite/gcc.target/sparc/20151219-1.c b/gcc/testsuite/gcc.target/sparc/20151219-1.c new file mode 100644 index 00000000000..efe720af6cd --- /dev/null +++ b/gcc/testsuite/gcc.target/sparc/20151219-1.c @@ -0,0 +1,39 @@ +/* PR rtl-optimization/68910 */ +/* Reported by Sebastian Huber <sebastian.huber@embedded-brains.de> */ + +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=supersparc" } */ + +typedef unsigned int size_t; +typedef long long unsigned int uint64_t; + +extern void *memcpy (void *, const void *, size_t); + +void +SHA512_Transform(uint64_t * state, const unsigned char block[128]) +{ + uint64_t W[80]; + uint64_t S[8]; + uint64_t t0, t1; + int i; + + memcpy ((void *)W, (const void *)block, (size_t)128); + + for (i = 16; i < 80; i++) + W[i] = (((W[i - 2] >> 19) | (W[i - 2] << (64 - 19))) ^ ((W[i - 2] >> 61) | (W[i - 2] << (64 - 61))) ^ (W[i - 2] >> 6)) + W[i - 7] + (((W[i - 15] >> 1) | (W[i - 15] << (64 - 1))) ^ ((W[i - 15] >> 8) | (W[i - 15] << (64 - 8))) ^ (W[i - 15] >> 7)) + W[i - 16]; + + memcpy (S, state, 64); + + t0 = S[(87 - 0) % 8] + (((S[(84 - 0) % 8] >> 14) | (S[(84 - 0) % 8] << (64 - 14))) ^ ((S[(84 - 0) % 8] >> 18) | (S[(84 - 0) % 8] << (64 - 18))) ^ ((S[(84 - 0) % 8] >> 41) | (S[(84 - 0) % 8] << (64 - 41)))) + ((S[(84 - 0) % 8] & (S[(85 - 0) % 8] ^ S[(86 - 0) % 8])) ^ S[(86 - 0) % 8]) + W[0] + 0x428a2f98d728ae22ULL; t1 = (((S[(80 - 0) % 8] >> 28) | (S[(80 - 0) % 8] << (64 - 28))) ^ ((S[(80 - 0) % 8] >> 34) | (S[(80 - 0) % 8] << (64 - 34))) ^ ((S[(80 - 0) % 8] >> 39) | (S[(80 - 0) % 8] << (64 - 39)))) + ((S[(80 - 0) % 8] & (S[(81 - 0) % 8] | S[(82 - 0) % 8])) | (S[(81 - 0) % 8] & S[(82 - 0) % 8])); S[(83 - 0) % 8] += t0; S[(87 - 0) % 8] = t0 + t1; + + t0 = S[(87 - 1) % 8] + (((S[(84 - 1) % 8] >> 14) | (S[(84 - 1) % 8] << (64 - 14))) ^ ((S[(84 - 1) % 8] >> 18) | (S[(84 - 1) % 8] << (64 - 18))) ^ ((S[(84 - 1) % 8] >> 41) | (S[(84 - 1) % 8] << (64 - 41)))) + ((S[(84 - 1) % 8] & (S[(85 - 1) % 8] ^ S[(86 - 1) % 8])) ^ S[(86 - 1) % 8]) + W[1] + 0x7137449123ef65cdULL; t1 = (((S[(80 - 1) % 8] >> 28) | (S[(80 - 1) % 8] << (64 - 28))) ^ ((S[(80 - 1) % 8] >> 34) | (S[(80 - 1) % 8] << (64 - 34))) ^ ((S[(80 - 1) % 8] >> 39) | (S[(80 - 1) % 8] << (64 - 39)))) + ((S[(80 - 1) % 8] & (S[(81 - 1) % 8] | S[(82 - 1) % 8])) | (S[(81 - 1) % 8] & S[(82 - 1) % 8])); S[(83 - 1) % 8] += t0; S[(87 - 1) % 8] = t0 + t1; + + t0 = S[(87 - 2) % 8] + (((S[(84 - 2) % 8] >> 14) | (S[(84 - 2) % 8] << (64 - 14))) ^ ((S[(84 - 2) % 8] >> 18) | (S[(84 - 2) % 8] << (64 - 18))) ^ ((S[(84 - 2) % 8] >> 41) | (S[(84 - 2) % 8] << (64 - 41)))) + ((S[(84 - 2) % 8] & (S[(85 - 2) % 8] ^ S[(86 - 2) % 8])) ^ S[(86 - 2) % 8]) + W[2] + 0xb5c0fbcfec4d3b2fULL; t1 = (((S[(80 - 2) % 8] >> 28) | (S[(80 - 2) % 8] << (64 - 28))) ^ ((S[(80 - 2) % 8] >> 34) | (S[(80 - 2) % 8] << (64 - 34))) ^ ((S[(80 - 2) % 8] >> 39) | (S[(80 - 2) % 8] << (64 - 39)))) + ((S[(80 - 2) % 8] & (S[(81 - 2) % 8] | S[(82 - 2) % 8])) | (S[(81 - 2) % 8] & S[(82 - 2) % 8])); S[(83 - 2) % 8] += t0; S[(87 - 2) % 8] = t0 + t1; + + t0 = S[(87 - 3) % 8] + (((S[(84 - 3) % 8] >> 14) | (S[(84 - 3) % 8] << (64 - 14))) ^ ((S[(84 - 3) % 8] >> 18) | (S[(84 - 3) % 8] << (64 - 18))) ^ ((S[(84 - 3) % 8] >> 41) | (S[(84 - 3) % 8] << (64 - 41)))) + ((S[(84 - 3) % 8] & (S[(85 - 3) % 8] ^ S[(86 - 3) % 8])) ^ S[(86 - 3) % 8]) + W[3] + 0xe9b5dba58189dbbcULL; t1 = (((S[(80 - 3) % 8] >> 28) | (S[(80 - 3) % 8] << (64 - 28))) ^ ((S[(80 - 3) % 8] >> 34) | (S[(80 - 3) % 8] << (64 - 34))) ^ ((S[(80 - 3) % 8] >> 39) | (S[(80 - 3) % 8] << (64 - 39)))) + ((S[(80 - 3) % 8] & (S[(81 - 3) % 8] | S[(82 - 3) % 8])) | (S[(81 - 3) % 8] & S[(82 - 3) % 8])); S[(83 - 3) % 8] += t0; S[(87 - 3) % 8] = t0 + t1; + + for (i = 0; i < 8; i++) + state[i] += S[i]; +} + +/* { dg-final { scan-assembler-not "stx\t%" } } */ diff --git a/gcc/testsuite/gfortran.dg/actual_array_offset_1.f90 b/gcc/testsuite/gfortran.dg/actual_array_offset_1.f90 new file mode 100644 index 00000000000..f67bcfd9651 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/actual_array_offset_1.f90 @@ -0,0 +1,167 @@ +! { dg-do run } +! +! Check the fix for PR67779, in which array sections passed in the +! recursive calls to 'quicksort' had an incorrect offset. +! +! Contributed by Arjen Markus <arjen.markus895@gmail.com> +! +! NOTE: This is the version of the testcase in comment #16 (from Thomas Koenig) +! +module myclass_def + implicit none + + type, abstract :: myclass + contains + procedure(assign_object), deferred :: copy + procedure(one_lower_than_two), deferred :: lower + procedure(print_object), deferred :: print + procedure, nopass :: quicksort ! without nopass, it does not work + end type myclass + + abstract interface + subroutine assign_object( left, right ) + import :: myclass + class(myclass), intent(inout) :: left + class(myclass), intent(in) :: right + end subroutine assign_object + end interface + + abstract interface + logical function one_lower_than_two( op1, op2 ) + import :: myclass + class(myclass), intent(in) :: op1, op2 + end function one_lower_than_two + end interface + + abstract interface + subroutine print_object( obj ) + import :: myclass + class(myclass), intent(in) :: obj + end subroutine print_object + end interface + + ! + ! Type containing a real + ! + + type, extends(myclass) :: mysortable + integer :: value + contains + procedure :: copy => copy_sortable + procedure :: lower => lower_sortable + procedure :: print => print_sortable + end type mysortable + +contains +! +! Generic part +! +recursive subroutine quicksort( array ) + class(myclass), dimension(:) :: array + + class(myclass), allocatable :: v, tmp + integer :: i, j + + integer :: k + + i = 1 + j = size(array) + + allocate( v, source = array(1) ) + allocate( tmp, source = array(1) ) + + call v%copy( array((j+i)/2) ) ! Use the middle element + + do + do while ( array(i)%lower(v) ) + i = i + 1 + enddo + do while ( v%lower(array(j)) ) + j = j - 1 + enddo + + if ( i <= j ) then + call tmp%copy( array(i) ) + call array(i)%copy( array(j) ) + call array(j)%copy( tmp ) + i = i + 1 + j = j - 1 + endif + + if ( i > j ) then + exit + endif + enddo + + if ( 1 < j ) then + call quicksort( array(1:j) ) ! Problem here + endif + + if ( i < size(array) ) then + call quicksort( array(i:) ) ! ....and here + endif +end subroutine quicksort + +! +! Specific part +! +subroutine copy_sortable( left, right ) + class(mysortable), intent(inout) :: left + class(myclass), intent(in) :: right + + select type (right) + type is (mysortable) + select type (left) + type is (mysortable) + left = right + end select + end select +end subroutine copy_sortable + +logical function lower_sortable( op1, op2 ) + class(mysortable), intent(in) :: op1 + class(myclass), intent(in) :: op2 + + select type (op2) + type is (mysortable) + lower_sortable = op1%value < op2%value + end select +end function lower_sortable + +subroutine print_sortable( obj ) + class(mysortable), intent(in) :: obj + + write(*,'(G0," ")', advance="no") obj%value +end subroutine print_sortable + +end module myclass_def + + +! test program +program test_quicksort + use myclass_def + + implicit none + + type(mysortable), dimension(20) :: array + real, dimension(20) :: values + + call random_number(values) + + array%value = int (1000000 * values) + +! It would be pretty perverse if this failed! + if (check (array)) call abort + + call quicksort( array ) + +! Check the the array is correctly ordered + if (.not.check (array)) call abort +contains + logical function check (arg) + type(mysortable), dimension(:) :: arg + integer :: s + s = size (arg, 1) + check = all (arg(2 : s)%value .ge. arg(1 : s - 1)%value) + end function check +end program test_quicksort diff --git a/gcc/testsuite/gfortran.dg/coarray_40.f90 b/gcc/testsuite/gfortran.dg/coarray_40.f90 index 84af50e7dad..d40a65accce 100644 --- a/gcc/testsuite/gfortran.dg/coarray_40.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_40.f90 @@ -1,5 +1,6 @@ ! { dg-do run } ! { dg-options "-fcoarray=lib -lcaf_single" } +! { dg-additional-options "-latomic" { target libatomic_available } } ! ! Run-time test for memory consistency ! diff --git a/gcc/testsuite/gfortran.dg/coarray_critical_1.f90 b/gcc/testsuite/gfortran.dg/coarray_critical_1.f90 new file mode 100644 index 00000000000..4d93bf6debc --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_critical_1.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! { dg-options "-fcoarray=lib" } +! + +module m + contains + subroutine f() + critical + end critical + end subroutine f + end module m +end program diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 b/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 index bfa758e432a..d23c9d18a7a 100644 --- a/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 @@ -1,6 +1,6 @@ ! { dg-do run } -! { dg-options "-fdump-tree-original -fcoarray=lib -lcaf_single -latomic" { target libatomic_available } } -! { dg-options "-fdump-tree-original -fcoarray=lib -lcaf_single" { target { ! libatomic_available } } } +! { dg-options "-fdump-tree-original -fcoarray=lib -lcaf_single" } +! { dg-additional-options "-latomic" { target libatomic_available } } ! ! Some dependency-analysis check for coarray communication ! diff --git a/gcc/testsuite/gfortran.dg/deferred_character_1.f90 b/gcc/testsuite/gfortran.dg/deferred_character_1.f90 new file mode 100644 index 00000000000..0772c70537f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_1.f90 @@ -0,0 +1,40 @@ +! { dg-do run } +! +! Tests the fix for PR50221 +! +! Contributed by Clive Page <clivegpage@gmail.com> +! and Tobias Burnus <burnus@gcc.gnu.org> +! +! This is from comment #2 by Tobias Burnus. +! +module m + character(len=:), save, allocatable :: str(:) + character(len=2), parameter :: const(3) = ["a1", "b2", "c3"] +end + + use m + call test() + if(allocated(str)) deallocate(str) + call foo +contains + subroutine test() + call doit() +! print *, 'strlen=',len(str),' / array size =',size(str) +! print '(3a)', '>',str(1),'<' +! print '(3a)', '>',str(2),'<' +! print '(3a)', '>',str(3),'<' + if (any (str .ne. const)) call abort + end subroutine test + subroutine doit() + str = const + end subroutine doit + subroutine foo +! +! This is the original PR from Clive Page +! + character(:), allocatable, dimension(:) :: array + array = (/'xx', 'yy', 'zz'/) +! print *, 'array=', array, len(array(1)), size(array) + if (any (array .ne. ["xx", "yy", "zz"])) call abort + end subroutine +end diff --git a/gcc/testsuite/gfortran.dg/deferred_character_2.f90 b/gcc/testsuite/gfortran.dg/deferred_character_2.f90 new file mode 100644 index 00000000000..bac738bf3d9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_2.f90 @@ -0,0 +1,89 @@ +! { dg-do run } +! +! Tests the fix for PR68216 +! +! Reported on clf: https://groups.google.com/forum/#!topic/comp.lang.fortran/eWQTKfqKLZc +! +PROGRAM hello +! +! This is based on the first testcase, from Francisco (Ayyy LMAO). Original +! lines are commented out. The second testcase from this thread is acalled +! at the end of the program. +! + IMPLICIT NONE + + CHARACTER(LEN=:),DIMENSION(:),ALLOCATABLE :: array_lineas + CHARACTER(LEN=:),DIMENSION(:),ALLOCATABLE :: array_copia + character (3), dimension (2) :: array_fijo = ["abc","def"] + character (100) :: buffer + INTEGER :: largo , cant_lineas , i + + write (buffer, "(2a3)") array_fijo + +! WRITE(*,*) ' Escriba un numero para el largo de cada linea' +! READ(*,*) largo + largo = LEN (array_fijo) + +! WRITE(*,*) ' Escriba la cantidad de lineas' +! READ(*,*) cant_lineas + cant_lineas = size (array_fijo, 1) + + ALLOCATE(CHARACTER(LEN=largo) :: array_lineas(cant_lineas)) + +! WRITE(*,*) 'Escriba el array', len(array_lineas), size(array_lineas) + READ(buffer,"(2a3)") (array_lineas(i),i=1,cant_lineas) + +! WRITE(*,*) 'Array guardado: ' +! DO i=1,cant_lineas +! WRITE(*,*) array_lineas(i) +! ENDDO + if (any (array_lineas .ne. array_fijo)) call abort + +! The following are additional tests beyond that of the original. +! NOTE: These tests all work in 6 branch but those involving deferred length +! SOURCE or MOLD do not work correctly in 5 branch because the requisite +! patches to gfc_trans_allocate have not been backported. +! +! Check that allocation with source = another deferred length is OK +! allocate (array_copia(size (array_lineas, 1)), source = array_lineas) +! if (any (array_copia .ne. array_fijo)) call abort +! deallocate (array_lineas, array_copia) + deallocate (array_lineas) + +! Check that allocation with source = a non-deferred length is OK + allocate (array_lineas(size (array_fijo, 1)), source = array_fijo) + if (any (array_lineas .ne. array_fijo)) call abort + deallocate (array_lineas) + +! Check that allocation with MOLD = a non-deferred length is OK + allocate (array_copia(4), mold = [array_fijo(:)(1:2), array_fijo(:)(1:2)]) + if (size (array_copia, 1) .ne. 4) call abort + if (LEN (array_copia) .ne. 2) call abort + +! Check that allocation with MOLD = another deferred length is OK +! allocate (array_lineas(4), mold = array_copia) +! if (size (array_lineas, 1) .ne. 4) call abort +! if (LEN (array_lineas) .ne. 2) call abort +! deallocate (array_lineas, array_copia) + +! READ(*,*) + call testdefchar +contains + subroutine testdefchar +! +! This is the testcase in the above thread from Blokbuster +! + implicit none + character(:), allocatable :: test(:) + + allocate(character(3) :: test(2)) + test(1) = 'abc' + test(2) = 'def' + if (any (test .ne. ['abc', 'def'])) call abort + + test = ['aa','bb','cc'] + if (any (test .ne. ['aa', 'bb', 'cc'])) call abort + + end subroutine testdefchar + +END PROGRAM diff --git a/gcc/testsuite/gfortran.dg/deferred_character_3.f90 b/gcc/testsuite/gfortran.dg/deferred_character_3.f90 new file mode 100644 index 00000000000..8f2933713c3 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_3.f90 @@ -0,0 +1,46 @@ +! {dg_do run } +! +! Tests the fix for PR67674 +! +! Contributed by Kristopher Kuhlman <kristopher.kuhlman@gmail.com> +! +program test + implicit none + + type string_type + character(len=:), allocatable :: name + end type string_type + type(string_type), allocatable :: my_string_type + + allocate(my_string_type) + allocate(character(len=0) :: my_string_type%name) + +! print *, 'length main program before',len(my_string_type%name) + + call inputreadword1(my_string_type%name) + +! print *, 'length main program after',len(my_string_type%name) +! print *, 'final result:',my_string_type%name + if (my_string_type%name .ne. 'here the word is finally set') call abort + +contains + subroutine inputreadword1(word_intermediate) + character(len=:), allocatable :: word_intermediate + +! print *, 'length intermediate before',len(word_intermediate) + call inputreadword2(word_intermediate) +! print *, 'length intermediate after',len(word_intermediate) +! print *, word_intermediate + + end subroutine inputreadword1 + + subroutine inputreadword2(word) + character(len=:), allocatable :: word + +! print *, 'length inner before',len(word) + word = 'here the word is finally set' ! want automatic reallocation to happen here +! print *, 'length inner after',len(word) +! print *, word + + end subroutine inputreadword2 +end program test diff --git a/gcc/testsuite/gfortran.dg/deferred_character_4.f90 b/gcc/testsuite/gfortran.dg/deferred_character_4.f90 new file mode 100644 index 00000000000..5bb865810c1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_4.f90 @@ -0,0 +1,30 @@ +! { dg-do run } +! +! Check that PR50221 comment #4 is fixed. +! +! Contributed by Arjen Makus <arjen.markus895@gmail.com> +! +program chk_alloc_string + implicit none + + character(len=:), dimension(:), allocatable :: strings + character(20) :: buffer + integer :: i + + allocate( character(10):: strings(1:3) ) + + strings = [ "A ", "C ", "ABCD", "V " ] + + if (len(strings) .ne. 4) call abort + if (size(strings, 1) .ne. 4) call abort + if (any (strings .ne. [character(len=4) :: "A", "C", "ABCD", "V"])) call abort + + strings = [character(len=4) :: "A", "C", "ABCDE", "V", "zzzz"] + + if (len(strings) .ne. 4) call abort + if (size(strings, 1) .ne. 5) call abort + if (any (strings .ne. [character(len=4) :: "A", "C", "ABCD", "V", "zzzz"])) call abort + + write (buffer, "(5a4)") strings + if (buffer .ne. "A C ABCDV zzzz") call abort +end program chk_alloc_string diff --git a/gcc/testsuite/gfortran.dg/deferred_character_5.f90 b/gcc/testsuite/gfortran.dg/deferred_character_5.f90 new file mode 100644 index 00000000000..b5d64b43840 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_5.f90 @@ -0,0 +1,32 @@ +! { dg-do run } +! +! Tests that PR63932 stays fixed. +! +! Contributed by Valery Weber <valeryweber@hotmail.com> +! +module mod + type :: t + character(:), allocatable :: c + integer :: i + contains + procedure, pass :: get + end type t + type :: u + character(:), allocatable :: c + end type u +contains + subroutine get(this, a) + class(t), intent(in) :: this + character(:), allocatable, intent(out), optional :: a + if (present (a)) a = this%c + end subroutine get +end module mod + +program test + use mod + type(t) :: a + type(u) :: b + a%c = 'something' + call a%get (a = b%c) + if (b%c .ne. 'something') call abort +end program test diff --git a/gcc/testsuite/gfortran.dg/deferred_character_6.f90 b/gcc/testsuite/gfortran.dg/deferred_character_6.f90 new file mode 100644 index 00000000000..94afa0c0f28 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_6.f90 @@ -0,0 +1,54 @@ +! { dg-do run } +! +! Tests that PR66408 stays fixed. +! +! Contributed by <werner.blokbuster@gmail.com> +! +module mytest + + implicit none + + type vary + character(:), allocatable :: string + end type vary + + interface assignment(=) + module procedure char_eq_vary + end interface assignment(=) + +contains + + subroutine char_eq_vary(my_char,my_vary) + character(:), allocatable, intent(out) :: my_char + type(vary), intent(in) :: my_vary + my_char = my_vary%string + end subroutine char_eq_vary + +end module mytest + + +program thistest + + use mytest, only: vary, assignment(=) + implicit none + + character(:), allocatable :: test_char + character(14), parameter :: str = 'example string' + type(vary) :: test_vary + type(vary) :: my_stuff + + + test_vary%string = str + if (test_vary%string .ne. str) call abort + +! This previously gave a blank string. + my_stuff%string = test_vary + if (my_stuff%string .ne. str) call abort + + test_char = test_vary + if (test_char .ne. str) call abort + + my_stuff = test_vary + if (my_stuff%string .ne. str) call abort + +end program thistest diff --git a/gcc/testsuite/gfortran.dg/deferred_character_7.f90 b/gcc/testsuite/gfortran.dg/deferred_character_7.f90 new file mode 100644 index 00000000000..64b03aba0bd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_7.f90 @@ -0,0 +1,39 @@ +! { dg-do run } +! +! Tests the fix for pr49954, in which concatenation to deferred length character +! arrays, at best, did not work correctly. +! +! +! +implicit none + character(len=:), allocatable :: a1(:) + character(len=:), allocatable :: a2(:), a3(:) + character(len=:), allocatable :: b1 + character(len=:), allocatable :: b2 + character(8) :: chr = "IJKLMNOP" + character(48) :: buffer + + a1 = ["ABCDEFGH","abcdefgh"] + a2 = "_"//a1//chr//"_" + if (any (a2 .ne. ["_ABCDEFGHIJKLMNOP_","_abcdefghIJKLMNOP_"])) call abort + +! Check that the descriptor dtype is OK - the array write needs it. + write (buffer, "(2a18)") a2 + if (trim (buffer) .ne. "_ABCDEFGHIJKLMNOP__abcdefghIJKLMNOP_") call abort + +! Make sure scalars survived the fix! + b1 = "ABCDEFGH" + b2 = "_"//b1//chr//"_" + if (b2 .ne. "_ABCDEFGHIJKLMNOP_") call abort + +! Check the dependency is detected and dealt with by generation of a temporary. + a1 = "?"//a1//"?" + if (any (a1 .ne. ["?ABCDEFGH?","?abcdefgh?"])) call abort +! With an array reference... + a1 = "?"//a1(1:2)//"?" + if (any (a1 .ne. ["??ABCDEFGH??","??abcdefgh??"])) call abort +!... together with a substring. + a1 = "?"//a1(1:1)(2:4)//"?" + if (any (a1 .ne. ["??AB?"])) call abort +contains +end diff --git a/gcc/testsuite/gfortran.dg/error_format_2.f90 b/gcc/testsuite/gfortran.dg/error_format_2.f90 new file mode 100644 index 00000000000..421da9a0261 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/error_format_2.f90 @@ -0,0 +1,16 @@ +! { dg-do run } +! PR68987, this test case failed on a memory double free +program foo + call s('(foo)') +end program +subroutine s(fmt) + character (*) :: fmt + character (1) :: c + integer :: i + write (c, fmt, iostat=i) 42 + ! print *, i + if (i==0) call abort() + write (c, fmt, err=100) 42 + call abort() +100 continue +end subroutine diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c index fb2f3b31854..96f1aaf3e54 100644 --- a/gcc/tree-ssa-uninit.c +++ b/gcc/tree-ssa-uninit.c @@ -1118,14 +1118,16 @@ prune_uninit_phi_opnds_in_unrealizable_paths (gphi *phi, edge opnd_edge; unsigned uninit_opnds2 = compute_uninit_opnds_pos (opnd_def_phi); - gcc_assert (!MASK_EMPTY (uninit_opnds2)); - opnd_edge = gimple_phi_arg_edge (phi, i); - if (!is_use_properly_guarded (phi, - opnd_edge->src, - opnd_def_phi, - uninit_opnds2, - visited_phis)) - return false; + if (!MASK_EMPTY (uninit_opnds2)) + { + opnd_edge = gimple_phi_arg_edge (phi, i); + if (!is_use_properly_guarded (phi, + opnd_edge->src, + opnd_def_phi, + uninit_opnds2, + visited_phis)) + return false; + } } else return false; diff --git a/gcc/tree.c b/gcc/tree.c index 6f07d3d951a..665143716b5 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1221,11 +1221,9 @@ static unsigned int get_int_cst_ext_nunits (tree type, const wide_int &cst) { gcc_checking_assert (cst.get_precision () == TYPE_PRECISION (type)); - /* We need an extra zero HWI if CST is an unsigned integer with its - upper bit set, and if CST occupies a whole number of HWIs. */ - if (TYPE_UNSIGNED (type) - && wi::neg_p (cst) - && (cst.get_precision () % HOST_BITS_PER_WIDE_INT) == 0) + /* We need extra HWIs if CST is an unsigned integer with its + upper bit set. */ + if (TYPE_UNSIGNED (type) && wi::neg_p (cst)) return cst.get_precision () / HOST_BITS_PER_WIDE_INT + 1; return cst.get_len (); } @@ -1242,7 +1240,8 @@ build_new_int_cst (tree type, const wide_int &cst) if (len < ext_len) { --ext_len; - TREE_INT_CST_ELT (nt, ext_len) = 0; + TREE_INT_CST_ELT (nt, ext_len) + = zext_hwi (-1, cst.get_precision () % HOST_BITS_PER_WIDE_INT); for (unsigned int i = len; i < ext_len; ++i) TREE_INT_CST_ELT (nt, i) = -1; } diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog index 25ff7c30e03..282831d23dd 100644 --- a/libatomic/ChangeLog +++ b/libatomic/ChangeLog @@ -1,3 +1,12 @@ +2016-01-06 Szabolcs Nagy <szabolcs.nagy@arm.com> + + Backport from mainline: + 2016-01-06 Szabolcs Nagy <szabolcs.nagy@arm.com> + + PR other/67627 + * Makefile.am (all-multi): Add dependency. + * Makefile.in: Regenerate. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am index 3d8ab62dc8f..d1a29549e81 100644 --- a/libatomic/Makefile.am +++ b/libatomic/Makefile.am @@ -139,3 +139,10 @@ endif libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES) libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD) + +# Override the automake generated all-multi rule to guarantee that all-multi +# is not run in parallel with the %_.lo rules which generate $(DEPDIR)/*.Ppo +# makefile fragments to avoid broken *.Ppo getting included into the Makefile +# when it is reloaded during the build of all-multi. +all-multi: $(libatomic_la_LIBADD) + $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in index 9288652d9f2..76ba1f72459 100644 --- a/libatomic/Makefile.in +++ b/libatomic/Makefile.in @@ -494,12 +494,6 @@ clean-libtool: distclean-libtool: -rm -f libtool config.lt - -# GNU Make needs to see an explicit $(MAKE) variable in the command it -# runs to enable its job server during parallel builds. Hence the -# comments below. -all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) install-multi: $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) @@ -798,6 +792,13 @@ vpath % $(strip $(search_path)) %_.lo: Makefile $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c -o $@ $(M_SRC) +# Override the automake generated all-multi rule to guarantee that all-multi +# is not run in parallel with the %_.lo rules which generate $(DEPDIR)/*.Ppo +# makefile fragments to avoid broken *.Ppo getting included into the Makefile +# when it is reloaded during the build of all-multi. +all-multi: $(libatomic_la_LIBADD) + $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7a186377f79..ebf3d4ad274 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2015-12-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + Backport from trunk + PR libfortran/68987 + io/format.c (format_error): Remove unneeded memory cleanup. + 2015-12-05 Juoko Orava <jouko.orava@iki.fi> PR fortran/50201 diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index 42be2586e1f..6ef029a6d41 100644 --- a/libgfortran/io/format.c +++ b/libgfortran/io/format.c @@ -1171,26 +1171,6 @@ format_error (st_parameter_dt *dtp, const fnode *f, const char *message) *p++ = '^'; *p = '\0'; - /* Cleanup any left over memory allocations before calling generate - error. */ - if (is_internal_unit (dtp)) - { - if (dtp->format != NULL) - { - free (dtp->format); - dtp->format = NULL; - } - - /* Leave these alone if IOSTAT was given because execution will - return from generate error in those cases. */ - if (!(dtp->common.flags & IOPARM_HAS_IOSTAT)) - { - free (dtp->u.p.fmt); - free_format_hash_table (dtp->u.p.current_unit); - free_internal_unit (dtp); - } - } - generate_error (&dtp->common, LIBERROR_FORMAT, buffer); } diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh index c68dc352d7f..57d4a038e76 100755 --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -261,6 +261,9 @@ enum { #ifdef TUNGETFILTER TUNGETFILTER_val = TUNGETFILTER, #endif +#ifdef NLA_HDRLEN + NLA_HDRLEN_val = NLA_HDRLEN, +#endif }; EOF @@ -1057,8 +1060,6 @@ if ! grep '^const TUNGETFILTER' ${OUT} >/dev/null 2>&1; then fi fi - - # The ioctl flags for terminal control grep '^const _TC[GS]ET' gen-sysinfo.go | grep -v _val | \ sed -e 's/^\(const \)_\(TC[GS]ET[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} @@ -1404,9 +1405,15 @@ grep '^type _rtnexthop ' gen-sysinfo.go | \ # The GNU/Linux netlink flags. grep '^const _NETLINK_' gen-sysinfo.go | \ sed -e 's/^\(const \)_\(NETLINK_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} -grep '^const _NLA_' gen-sysinfo.go | \ +grep '^const _NLA_' gen-sysinfo.go | grep -v '_val =' | \ sed -e 's/^\(const \)_\(NLA_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} +if ! grep '^const NLA_HDRLEN' ${OUT} >/dev/null 2>&1; then + if grep '^const _NLA_HDRLEN_val' ${OUT} >/dev/null 2>&1; then + echo 'const NLA_HDRLEN = _NLA_HDRLEN_val' >> ${OUT} + fi +fi + # The GNU/Linux packet socket flags. grep '^const _PACKET_' gen-sysinfo.go | \ sed -e 's/^\(const \)_\(PACKET_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d413bfb14cc..31041864edd 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2016-01-03 Matthias Klose <doko@ubuntu.com> + + * include/jvm.h (GCJ_CXX_ABI_VERSION): Freeze the ABI for releases + made from the gcc-5-branch. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h index ec74f295a5f..bd39a944c5d 100644 --- a/libjava/include/jvm.h +++ b/libjava/include/jvm.h @@ -686,7 +686,10 @@ extern void _Jv_RegisterBootstrapPackages (); loader. */ // These are used to find ABI versions we recognize. -#define GCJ_CXX_ABI_VERSION (__GNUC__ * 100000 + __GNUC_MINOR__ * 1000) +// GCC 5 changed the versioning schema; the __GNUC_MINOR__ is not anymore +// a part of a GCC release series. Freeze the ABI on the gcc-5-branch with +// the value of the GCC 5.3 release. +#define GCJ_CXX_ABI_VERSION (__GNUC__ * 100000 + 3 * 1000) // This is the old-style BC version ID used by GCJ 4.0.0. #define OLD_GCJ_40_BC_ABI_VERSION (4 * 10000 + 0 * 10 + 5) diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 8be7f44131b..abd1d21f64f 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,3 +1,10 @@ +2016-01-13 Maxim Ostapenko <m.ostapenko@partner.samsung.com> + + PR sanitizer/69147 + * asan/asan_mac.cc: Cherry pick upstream r241487. + * sanitizer_common/sanitizer_mac.cc: Cherry pick upstream r224315. + * sanitizer_common/sanitizer_mac.h: Likewise. + 2015-12-04 Release Manager * GCC 5.3.0 released. diff --git a/libsanitizer/asan/asan_mac.cc b/libsanitizer/asan/asan_mac.cc index 70823bdef92..22f3f702cce 100644 --- a/libsanitizer/asan/asan_mac.cc +++ b/libsanitizer/asan/asan_mac.cc @@ -99,6 +99,23 @@ void LeakyResetEnv(const char *name, const char *name_value) { } } +bool DyldNeedsEnvVariable() { +// If running on OS X 10.11+ or iOS 9.0+, dyld will interpose even if +// DYLD_INSERT_LIBRARIES is not set. + +#if SANITIZER_IOSSIM + // GetMacosVersion will not work for the simulator, whose kernel version + // is tied to the host. Use a weak linking hack for the simulator. + // This API was introduced in the same version of the OS as the dyld + // optimization. + + // Check for presence of a symbol that is available on OS X 10.11+, iOS 9.0+. + return (dlsym(RTLD_NEXT, "mach_memory_info") == nullptr); +#else + return (GetMacosVersion() <= MACOS_VERSION_YOSEMITE); +#endif +} + void MaybeReexec() { if (!flags()->allow_reexec) return; // Make sure the dynamic ASan runtime library is preloaded so that the @@ -111,8 +128,9 @@ void MaybeReexec() { uptr old_env_len = dyld_insert_libraries ? internal_strlen(dyld_insert_libraries) : 0; uptr fname_len = internal_strlen(info.dli_fname); - if (!dyld_insert_libraries || - !REAL(strstr)(dyld_insert_libraries, info.dli_fname)) { + bool lib_is_in_env = + dyld_insert_libraries && REAL(strstr)(dyld_insert_libraries, info.dli_fname); + if (DyldNeedsEnvVariable() && !lib_is_in_env) { // DYLD_INSERT_LIBRARIES is not set or does not contain the runtime // library. char program_name[1024]; @@ -141,6 +159,10 @@ void MaybeReexec() { VReport(1, "Set ASAN_OPTIONS=allow_reexec=0 to disable this.\n"); execv(program_name, *_NSGetArgv()); } else { + + if (!lib_is_in_env) + return; + // DYLD_INSERT_LIBRARIES is set and contains the runtime library. if (old_env_len == fname_len) { // It's just the runtime library name - fine to unset the variable. diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.cc b/libsanitizer/sanitizer_common/sanitizer_mac.cc index 17b931cb535..b53ffbaafad 100644 --- a/libsanitizer/sanitizer_common/sanitizer_mac.cc +++ b/libsanitizer/sanitizer_common/sanitizer_mac.cc @@ -296,7 +296,11 @@ MacosVersion GetMacosVersionInternal() { case '2': return MACOS_VERSION_MOUNTAIN_LION; case '3': return MACOS_VERSION_MAVERICKS; case '4': return MACOS_VERSION_YOSEMITE; - default: return MACOS_VERSION_UNKNOWN; + default: + if (IsDigit(version[1])) + return MACOS_VERSION_UNKNOWN_NEWER; + else + return MACOS_VERSION_UNKNOWN; } } default: return MACOS_VERSION_UNKNOWN; diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.h b/libsanitizer/sanitizer_common/sanitizer_mac.h index 47739f71c3c..46a7b4442c9 100644 --- a/libsanitizer/sanitizer_common/sanitizer_mac.h +++ b/libsanitizer/sanitizer_common/sanitizer_mac.h @@ -25,6 +25,7 @@ enum MacosVersion { MACOS_VERSION_MOUNTAIN_LION, MACOS_VERSION_MAVERICKS, MACOS_VERSION_YOSEMITE, + MACOS_VERSION_UNKNOWN_NEWER }; MacosVersion GetMacosVersion(); diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fb4acc2f4bd..c52bafa3533 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,40 @@ +2016-01-12 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/69092 + * include/bits/basic_string.h (basic_string::_S_copy_chars<_Iterator>): + Remove _GLIBCXX_NOEXCEPT. + testsuite/21_strings/basic_string/cons/char/69092.cc: New. + + PR libstdc++/68995 + * include/std/functional (_Function_handler::_M_invoke): Qualify + __callable_functor. + * testsuite/20_util/function/68995.cc: New. + + PR libstdc++/69005 + PR libstdc++/69222 + * include/std/functional (function::_Invoke): Remove, use result_of. + (function::_Callable): Replace alias template with class template + and use partial specialization instead of _NotSelf alias template. + (function(_Functor)): Add "not self" constraint so that _Callable is + not used while type is incomplete. + * testsuite/20_util/function/69222.cc: New. + +2015-12-27 Edward Smith-Rowland <3dw4rd@verizon.net> + + * include/bits/c++0x_warning.h Remove experimental language. + +2015-12-16 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/68912 + * include/std/functional (_Bind::operator()): Use lvalue functor to + deduce return type. + * testsuite/20_util/bind/68912.cc: New. + + PR libstdc++/68921 + * src/c++11/futex.cc + (__atomic_futex_unsigned_base::_M_futex_wait_until): Use null pointer + as timeout argument. + 2015-12-15 Tim Shen <timshen@google.com> Backport from mainline diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 19222d13832..9ef5be95a91 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -322,7 +322,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 template<class _Iterator> static void _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) - _GLIBCXX_NOEXCEPT { for (; __k1 != __k2; ++__k1, ++__p) traits_type::assign(*__p, *__k1); // These types are off. @@ -2782,7 +2781,6 @@ _GLIBCXX_END_NAMESPACE_CXX11 template<class _Iterator> static void _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) - _GLIBCXX_NOEXCEPT { for (; __k1 != __k2; ++__k1, ++__p) traits_type::assign(*__p, *__k1); // These types are off. diff --git a/libstdc++-v3/include/bits/c++0x_warning.h b/libstdc++-v3/include/bits/c++0x_warning.h index 5c7e9720222..dabc2c4fd2c 100644 --- a/libstdc++-v3/include/bits/c++0x_warning.h +++ b/libstdc++-v3/include/bits/c++0x_warning.h @@ -29,9 +29,9 @@ #define _CXX0X_WARNING_H 1 #if __cplusplus < 201103L -#error This file requires compiler and library support for the \ -ISO C++ 2011 standard. This support is currently experimental, and must be \ -enabled with the -std=c++11 or -std=gnu++11 compiler options. +#error This file requires compiler and library support \ +for the ISO C++ 2011 standard. This support must be enabled \ +with the -std=c++11 or -std=gnu++11 compiler options. #endif #endif diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index e9d48e40877..cc40e4d8ec4 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -1122,7 +1122,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) // Call unqualified template<typename... _Args, typename _Result - = decltype( std::declval<_Functor>()( + = decltype( std::declval<_Functor&>()( _Mu<_Bound_args>()( std::declval<_Bound_args&>(), std::declval<tuple<_Args...>&>() )... ) )> _Result @@ -1136,7 +1136,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) // Call as const template<typename... _Args, typename _Result = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), - typename add_const<_Functor>::type>::type>()( + typename add_const<_Functor>::type&>::type>()( _Mu<_Bound_args>()( std::declval<const _Bound_args&>(), std::declval<tuple<_Args...>&>() )... ) )> _Result @@ -1150,7 +1150,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) // Call as volatile template<typename... _Args, typename _Result = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), - typename add_volatile<_Functor>::type>::type>()( + typename add_volatile<_Functor>::type&>::type>()( _Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(), std::declval<tuple<_Args...>&>() )... ) )> _Result @@ -1164,7 +1164,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) // Call as const volatile template<typename... _Args, typename _Result = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), - typename add_cv<_Functor>::type>::type>()( + typename add_cv<_Functor>::type&>::type>()( _Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(), std::declval<tuple<_Args...>&>() )... ) )> _Result @@ -1883,7 +1883,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) static _Res _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) { - return __callable_functor(**_Base::_M_get_pointer(__functor))( + return std::__callable_functor(**_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; @@ -1898,7 +1898,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) static void _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) { - __callable_functor(**_Base::_M_get_pointer(__functor))( + std::__callable_functor(**_Base::_M_get_pointer(__functor))( std::forward<_ArgTypes>(__args)...); } }; @@ -1977,19 +1977,14 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) { typedef _Res _Signature_type(_ArgTypes...); - template<typename _Functor> - using _Invoke = decltype(__callable_functor(std::declval<_Functor&>()) - (std::declval<_ArgTypes>()...) ); + template<typename _Func, + typename _Res2 = typename result_of<_Func(_ArgTypes...)>::type> + struct _Callable : __check_func_return_type<_Res2, _Res> { }; // Used so the return type convertibility checks aren't done when // performing overload resolution for copy construction/assignment. template<typename _Tp> - using _NotSelf = __not_<is_same<_Tp, function>>; - - template<typename _Functor> - using _Callable - = __and_<_NotSelf<_Functor>, - __check_func_return_type<_Invoke<_Functor>, _Res>>; + struct _Callable<function, _Tp> : false_type { }; template<typename _Cond, typename _Tp> using _Requires = typename enable_if<_Cond::value, _Tp>::type; @@ -2054,6 +2049,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) * reference_wrapper<F>, this function will not throw. */ template<typename _Functor, + typename = _Requires<__not_<is_same<_Functor, function>>, void>, typename = _Requires<_Callable<_Functor>, void>> function(_Functor); @@ -2246,7 +2242,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) } template<typename _Res, typename... _ArgTypes> - template<typename _Functor, typename> + template<typename _Functor, typename, typename> function<_Res(_ArgTypes...)>:: function(_Functor __f) : _Function_base() diff --git a/libstdc++-v3/src/c++11/futex.cc b/libstdc++-v3/src/c++11/futex.cc index e04dba812bf..e723364ced0 100644 --- a/libstdc++-v3/src/c++11/futex.cc +++ b/libstdc++-v3/src/c++11/futex.cc @@ -52,7 +52,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // we will fall back to spin-waiting. The only thing we could do // here on errors is abort. int ret __attribute__((unused)); - ret = syscall (SYS_futex, __addr, futex_wait_op, __val); + ret = syscall (SYS_futex, __addr, futex_wait_op, __val, nullptr); _GLIBCXX_DEBUG_ASSERT(ret == 0 || errno == EINTR || errno == EAGAIN); return true; } diff --git a/libstdc++-v3/testsuite/20_util/bind/68912.cc b/libstdc++-v3/testsuite/20_util/bind/68912.cc new file mode 100644 index 00000000000..7a00b75124a --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/bind/68912.cc @@ -0,0 +1,53 @@ +// Copyright (C) 2015 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +#include<functional> + +struct Wrong {}; +struct A {}; +struct B {}; +struct C{}; +struct D{}; + +struct X { + A operator()(int, double) & { return {}; } + Wrong operator()(int, double) && {return {}; } + + B operator()(int, double) const & { return {}; } + Wrong operator()(int, double) const && {return {}; } + + C operator()(int, double) volatile & { return {}; } + Wrong operator()(int, double) volatile && {return {}; } + + D operator()(int, double) const volatile & { return {}; } + Wrong operator()(int, double) const volatile && {return {}; } +}; + +void test01() +{ + auto bound = std::bind(X{}, 5, std::placeholders::_1); + A res = bound(1.0); + const auto bound_c = bound; + B res_c = bound_c(1.0); + volatile auto bound_v = bound; + C res_v = bound_v(1.0); + volatile const auto bound_cv = bound; + D res_cv = bound_cv(1.0); +} diff --git a/libstdc++-v3/testsuite/20_util/function/68995.cc b/libstdc++-v3/testsuite/20_util/function/68995.cc new file mode 100644 index 00000000000..75dafb4776b --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/function/68995.cc @@ -0,0 +1,32 @@ +// Copyright (C) 2015 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +#include <tr1/memory> +#include <functional> +#include <tr1/functional> + +std::tr1::shared_ptr<int> test() { return {}; } + +std::function<std::tr1::shared_ptr<int>()> func = test; +std::function<std::tr1::shared_ptr<int>()> funcr = std::ref(test); + +void test2(std::tr1::shared_ptr<int>) { } + +std::function<void(std::tr1::shared_ptr<int>)> func2 = std::ref(test2); diff --git a/libstdc++-v3/testsuite/20_util/function/69222.cc b/libstdc++-v3/testsuite/20_util/function/69222.cc new file mode 100644 index 00000000000..7c9dfecb547 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/function/69222.cc @@ -0,0 +1,30 @@ +// Copyright (C) 2016 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +#include <functional> + +// Reduced from c++/69005 +struct Foo { + std::function<void(Foo)> f; +}; + +extern Foo exfoo; +Foo f(exfoo); +Foo& r = f = exfoo; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc new file mode 100644 index 00000000000..483708b948a --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc @@ -0,0 +1,58 @@ +// Copyright (C) 2016 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } + +// PR libstdc++/69092 + +#include <string> +#include <iterator> + +struct hate_T_iterator : std::iterator<std::forward_iterator_tag, char> { + explicit hate_T_iterator(char* p) : p(p) {} + char* p; + + hate_T_iterator& operator++() { ++p; return *this; } + + hate_T_iterator operator++(int) + { + hate_T_iterator r = *this; + ++*this; return r; + } + + char& operator*() const + { + if (*p == 'T') + throw 1; + return *p; + } + + char* operator->() const { return p; } + + bool operator== (hate_T_iterator other) const { return p == other.p;} + bool operator!= (hate_T_iterator other) const { return p != other.p;} +}; + +int main() +{ + char test_str[4] = "ATA"; + try { + std::string s(hate_T_iterator(test_str), hate_T_iterator(test_str+3)); + } + catch(int) { + } +} |