aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2016-01-13 14:27:57 +0100
committerYvan Roux <yvan.roux@linaro.org>2016-01-13 14:27:57 +0100
commitd8e1f79a80caf5b40088476b15b29925c0a42348 (patch)
treee874dcd41321f2d982cb3320784d2b5ea127ec34
parent428ded17977c8142625804eb8f7545ae7bb06f7b (diff)
Merge branches/gcc-5-branch rev 232321.
Change-Id: I69778250351f56596e2aa93cbd9fe5ee12b54548
-rw-r--r--gcc/ChangeLog263
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/builtins.c4
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.h2
-rw-r--r--gcc/c/ChangeLog20
-rw-r--r--gcc/c/c-decl.c39
-rw-r--r--gcc/c/c-typeck.c37
-rw-r--r--gcc/cgraph.c3
-rw-r--r--gcc/cgraph.h2
-rw-r--r--gcc/cgraphclones.c1
-rw-r--r--gcc/cgraphunit.c1
-rw-r--r--gcc/common.opt2
-rw-r--r--gcc/config/arm/arm.md18
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/config/i386/sse.md71
-rw-r--r--gcc/config/pa/pa.c148
-rw-r--r--gcc/config/pa/pa.md466
-rw-r--r--gcc/config/rs6000/freebsd64.h23
-rw-r--r--gcc/config/rs6000/rs6000.h1
-rw-r--r--gcc/config/s390/constraints.md46
-rw-r--r--gcc/config/s390/predicates.md5
-rw-r--r--gcc/config/s390/s390-builtin-types.def1025
-rw-r--r--gcc/config/s390/s390-builtins.def27
-rw-r--r--gcc/config/s390/s390-c.c24
-rw-r--r--gcc/config/s390/s390-protos.h2
-rw-r--r--gcc/config/s390/s390.c66
-rw-r--r--gcc/config/s390/vecintrin.h16
-rw-r--r--gcc/config/s390/vector.md19
-rw-r--r--gcc/config/s390/vx-builtins.md194
-rw-r--r--gcc/config/sparc/sparc.md184
-rw-r--r--gcc/cp/ChangeLog50
-rw-r--r--gcc/cp/call.c3
-rw-r--r--gcc/cp/constexpr.c3
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/cp/decl2.c3
-rw-r--r--gcc/cp/init.c5
-rw-r--r--gcc/cp/parser.c2
-rw-r--r--gcc/cp/pt.c15
-rw-r--r--gcc/cp/rtti.c2
-rw-r--r--gcc/cp/tree.c3
-rw-r--r--gcc/doc/invoke.texi10
-rw-r--r--gcc/dwarf2out.c5
-rw-r--r--gcc/emit-rtl.c3
-rw-r--r--gcc/fortran/ChangeLog1519
-rw-r--r--gcc/fortran/ChangeLog-20151491
-rw-r--r--gcc/fortran/resolve.c56
-rw-r--r--gcc/fortran/trans-array.c126
-rw-r--r--gcc/fortran/trans-expr.c19
-rw-r--r--gcc/fortran/trans-stmt.c15
-rw-r--r--gcc/fortran/trans-types.c2
-rw-r--r--gcc/fortran/trans.c20
-rw-r--r--gcc/po/ChangeLog8
-rw-r--r--gcc/po/fr.po745
-rw-r--r--gcc/po/zh_CN.po83
-rw-r--r--gcc/testsuite/ChangeLog156
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-pmf1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-array14.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-const1.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C15
-rw-r--r--gcc/testsuite/g++.dg/init/aggr13.C17
-rw-r--r--gcc/testsuite/g++.dg/init/elide4.C13
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr68851.C29
-rw-r--r--gcc/testsuite/g++.dg/pr68449.C9
-rw-r--r--gcc/testsuite/g++.dg/rtti/typeid11.C16
-rw-r--r--gcc/testsuite/g++.dg/torture/pr68184.C31
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr68648.c20
-rw-r--r--gcc/testsuite/gcc.dg/pr68162-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/pr68668.c53
-rw-r--r--gcc/testsuite/gcc.dg/pr68835-1.c12
-rw-r--r--gcc/testsuite/gcc.dg/pr68835-2.c23
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr67609.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-3.c21
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr68872.c14
-rw-r--r--gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c58
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c42
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/vec-splat-2.c42
-rw-r--r--gcc/testsuite/gcc.target/sparc/20151219-1.c39
-rw-r--r--gcc/testsuite/gfortran.dg/actual_array_offset_1.f90167
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_40.f901
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_critical_1.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_1.f9040
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_2.f9089
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_3.f9046
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_4.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_5.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_6.f9054
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_7.f9039
-rw-r--r--gcc/testsuite/gfortran.dg/error_format_2.f9016
-rw-r--r--gcc/tree-ssa-uninit.c18
-rw-r--r--gcc/tree.c11
-rw-r--r--libatomic/ChangeLog9
-rw-r--r--libatomic/Makefile.am7
-rw-r--r--libatomic/Makefile.in13
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/format.c20
-rwxr-xr-xlibgo/mksysinfo.sh13
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/include/jvm.h5
-rw-r--r--libsanitizer/ChangeLog7
-rw-r--r--libsanitizer/asan/asan_mac.cc26
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_mac.cc6
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_mac.h1
-rw-r--r--libstdc++-v3/ChangeLog37
-rw-r--r--libstdc++-v3/include/bits/basic_string.h2
-rw-r--r--libstdc++-v3/include/bits/c++0x_warning.h6
-rw-r--r--libstdc++-v3/include/std/functional28
-rw-r--r--libstdc++-v3/src/c++11/futex.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/bind/68912.cc53
-rw-r--r--libstdc++-v3/testsuite/20_util/function/68995.cc32
-rw-r--r--libstdc++-v3/testsuite/20_util/function/69222.cc30
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc58
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) {
+ }
+}