]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
9 years ago[6/7] Explicitly classify vector loads and stores
rsandifo [Wed, 6 Jul 2016 08:15:28 +0000 (08:15 +0000)] 
[6/7] Explicitly classify vector loads and stores

This is the main patch in the series.  It adds a new enum and routines
for classifying a vector load or store implementation.

Originally there were three motivations:

      (1) Reduce cut-&-paste

      (2) Make the chosen vectorisation strategy more obvious.  At the
          moment this is derived implicitly from various other bits of
          state (GROUPED, STRIDED, SLP, etc.)

      (3) Decouple the vectorisation strategy from those other bits of state,
          so that there can be a choice of implementation for a given scalar
          statement.  The specific problem here is that we class:

              for (...)
                {
                  ... = a[i * x];
                  ... = a[i * x + 1];
                }

          as "strided and grouped" but:

              for (...)
                {
                  ... = a[i * 7];
                  ... = a[i * 7 + 1];
                }

          as "non-strided and grouped".  Before the patch, "strided and
          grouped" loads would always try to use separate scalar loads
          while "non-strided and grouped" loads would always try to use
          load-and-permute.  But load-and-permute is never supported for
          a group size of 7, so the effect was that the first loop was
          vectorisable and the second wasn't.  It seemed odd that not
          knowing x (but accepting it could be 7) would allow more
          optimisation opportunities than knowing x is 7.

Unfortunately, it looks like we underestimate the cost of separate
scalar accesses on at least aarch64, so I've disabled (3) for now;
see the "if" statement at the end of get_load_store_type.  I think
the patch still does (1) and (2), so that's the justification for
it in its current form.  It also means that (3) is now simply a
case of removing the FIXME code, once the cost model problems have
been sorted out.  (I did wonder about adding a --param, but that
seems overkill.  I hope to get back to this during GCC 7 stage 1.)

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_memory_access_type): New enum.
(_stmt_vec_info): Add a memory_access_type field.
(STMT_VINFO_MEMORY_ACCESS_TYPE): New macro.
(vect_model_store_cost): Take an access type instead of a boolean.
(vect_model_load_cost): Likewise.
* tree-vect-slp.c (vect_analyze_slp_cost_1): Update calls to
vect_model_store_cost and vect_model_load_cost.
* tree-vect-stmts.c (vec_load_store_type): New enum.
(vect_model_store_cost): Take an access type instead of a
store_lanes_p boolean.  Simplify tests.
(vect_model_load_cost): Likewise, but for load_lanes_p.
(get_group_load_store_type, get_load_store_type): New functions.
(vectorizable_store): Use get_load_store_type.  Record the access
type in STMT_VINFO_MEMORY_ACCESS_TYPE.
(vectorizable_load): Likewise.
(vectorizable_mask_load_store): Likewise.  Replace is_store
variable with vls_type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238038 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[5/7] Move the fix for PR65518
rsandifo [Wed, 6 Jul 2016 08:14:41 +0000 (08:14 +0000)] 
[5/7] Move the fix for PR65518

This patch moves the fix for PR65518 to the code that checks whether
load-and-permute operations are supported.   If the group size is
greater than the vectorisation factor, it would still be possible
to fall back to elementwise loads (as for strided groups) rather
than fail vectorisation entirely.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vect_grouped_load_supported): Add a
single_element_p parameter.
* tree-vect-data-refs.c (vect_grouped_load_supported): Likewise.
Check the PR65518 case here rather than in vectorizable_load.
* tree-vect-loop.c (vect_analyze_loop_2): Update call accordignly.
* tree-vect-stmts.c (vectorizable_load): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238037 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[4/7] Add a gather_scatter_info structure
rsandifo [Wed, 6 Jul 2016 08:13:49 +0000 (08:13 +0000)] 
[4/7] Add a gather_scatter_info structure

This patch just refactors the gather/scatter support so that all
information is in a single structure, rather than separate variables.
This reduces the number of arguments to a function added in patch 6.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (gather_scatter_info): New structure.
(vect_check_gather_scatter): Return a bool rather than a decl.
Replace return-by-pointer arguments with a single
gather_scatter_info *.
* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
(vect_analyze_data_refs): Update call accordingly.
* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
(vectorizable_mask_load_store): Likewise.  Also record the
offset dt and vectype in the gather_scatter_info.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238036 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[3/7] Fix load/store costs for strided groups
rsandifo [Wed, 6 Jul 2016 08:12:36 +0000 (08:12 +0000)] 
[3/7] Fix load/store costs for strided groups

vect_model_store_cost had:

      /* Costs of the stores.  */
      if (STMT_VINFO_STRIDED_P (stmt_info)
          && !STMT_VINFO_GROUPED_ACCESS (stmt_info))
        {
          /* N scalar stores plus extracting the elements.  */
          inside_cost += record_stmt_cost (body_cost_vec,
       ncopies * TYPE_VECTOR_SUBPARTS (vectype),
       scalar_store, stmt_info, 0, vect_body);

But non-SLP strided groups also use individual scalar stores rather than
vector stores, so I think we should skip this only for SLP groups.

The same applies to vect_model_load_cost.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vect_model_store_cost): For non-SLP
strided groups, use the cost of N scalar accesses instead
of ncopies vector accesses.
(vect_model_load_cost): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238035 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[2/7] Clean up vectorizer load/store costs
rsandifo [Wed, 6 Jul 2016 08:11:31 +0000 (08:11 +0000)] 
[2/7] Clean up vectorizer load/store costs

Add a bit more commentary and try to make the structure more obvious.
The horrendous:

      if (grouped_access_p
          && represents_group_p
          && !store_lanes_p
          && !STMT_VINFO_STRIDED_P (stmt_info)
          && !slp_node)

checks go away in patch 6.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vect_cost_group_size): Delete.
(vect_model_store_cost): Avoid calling it.  Use first_stmt_p
variable to indicate when once-per-group costs are being used.
(vect_model_load_cost): Likewise.  Fix comment and misindented code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238034 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[1/7] Remove unnecessary peeling for gaps check
rsandifo [Wed, 6 Jul 2016 08:10:29 +0000 (08:10 +0000)] 
[1/7] Remove unnecessary peeling for gaps check

I recently relaxed the peeling-for-gaps conditions for LD3 but
kept them as-is for load-and-permute.  I don't think the conditions
are needed for load-and-permute either though.  No current load-and-
permute should load outside the group, so if there is no gap at the end,
the final vector element loaded will correspond to an element loaded
by the original scalar loop.

The patch for PR68559 (a missed optimisation PR) increased the peeled
cases from "exact_log2 (groupsize) == -1" to "vf % group_size == 0", so
before that fix, we didn't peel for gaps if there was no gap at the end
of the group and if the group size was a power of 2.

The only current non-power-of-2 load-and-permute size is 3, which
doesn't require loading more than 3 vectors.

The testcase is based on gcc.dg/vect/pr49038.c.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vectorizable_load): Remove unnecessary
peeling-for-gaps condition.

gcc/testsuite/
* gcc.dg/vect/group-no-gaps-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238033 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoS/390: Fix vecinit expansion.
krebbel [Wed, 6 Jul 2016 07:05:11 +0000 (07:05 +0000)] 
S/390: Fix vecinit expansion.

The fallback routine in the S/390 vecinit expander did not check
whether each of the initializer elements is a proper general_operand.
Since revision r236582 the expander is invoked also with e.g. symbol
refs with an odd addend resulting in invalid insns.

Fixed by forcing the element into a register in such cases.

gcc/ChangeLog:

2016-07-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_expand_vec_init): Force initializer
element to register if it doesn't match general_operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238032 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix MPX tests on systems with MPX disabled
ak [Wed, 6 Jul 2016 02:38:49 +0000 (02:38 +0000)] 
Fix MPX tests on systems with MPX disabled

I have a Skylake system with MPX in the CPU, but MPX is disabled
in the kernel configuration.

This makes all the MPX tests fail because they assume if MPX
is in CPUID it works

Check the output of XGETBV too to detect non MPX kernels.

gcc/testsuite/:

2016-07-05  Andi Kleen  <ak@linux.intel.com>

* gcc.target/i386/mpx/mpx-check.h: Check XGETBV output
if kernel supports MPX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238031 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Wed, 6 Jul 2016 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238029 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-05 Kito Cheng <kito.cheng@gmail.com>
mrs [Tue, 5 Jul 2016 18:51:38 +0000 (18:51 +0000)] 
2016-07-05  Kito Cheng <kito.cheng@gmail.com>

* gcc.c-torture/compile/pr69102.c: Require fpic support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238023 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago Implement LWG 2509,
ville [Tue, 5 Jul 2016 18:33:18 +0000 (18:33 +0000)] 
Implement LWG 2509,
any_cast doesn't work with rvalue reference targets and cannot
move with a value target.
* include/experimental/any (any(_ValueType&&)): Constrain and
add an overload that doesn't forward.
(any_cast(any&&)): Constrain and add an overload that moves.
* testsuite/experimental/any/misc/any_cast.cc: Add tests for
the functionality added by LWG 2509.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238022 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix PR c++/71214
trippels [Tue, 5 Jul 2016 17:50:41 +0000 (17:50 +0000)] 
Fix PR c++/71214

       PR c++/71214
       * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_rvalue_references.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238017 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[gcc]
wschmidt [Tue, 5 Jul 2016 17:50:22 +0000 (17:50 +0000)] 
[gcc]

2016-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs6000-protos.h (rs6000_split_signbit): New
prototype.
* config/rs6000/rs6000.c (rs6000_split_signbit): New function.
* config/rs6000/rs6000.md (UNSPEC_SIGNBIT): New constant.
(SIGNBIT): New mode iterator.
(Fsignbit): New mode attribute.
(signbit<mode>2): Change operand1 to match FLOAT128 instead of
IBM128; dispatch to gen_signbit{kf,tf}2_dm for __float128
when direct moves are available.
(signbit<mode>2_dm): New define_insn_and_split).
(signbit<mode>2_dm2): New define_insn.

[gcc/testsuite]

2016-07-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/signbit-1.c: New test.
* gcc.target/powerpc/signbit-2.c: New test.
* gcc.target/powerpc/signbit-3.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238016 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[RTL ifcvt] PR rtl-optimization/71594: ICE in noce_emit_cmove due to mismatched sourc...
ktkachov [Tue, 5 Jul 2016 16:37:40 +0000 (16:37 +0000)] 
[RTL ifcvt] PR rtl-optimization/71594: ICE in noce_emit_cmove due to mismatched source modes

PR rtl-optimization/71594
* ifcvt.c (noce_convert_multiple_sets): Wrap new_val or old_val
into subregs of appropriate mode before trying to emit a conditional
move.

* gcc.dg/torture/pr71594.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238013 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-scalar-evolution.c (iv_can_overflow_p): New function.
hubicka [Tue, 5 Jul 2016 16:17:12 +0000 (16:17 +0000)] 
* tree-scalar-evolution.c (iv_can_overflow_p): New function.
(simple_iv): Use it.

* gcc.dg/tree-ssa/scev-14.c: new testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238012 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-ssa-loop-niter.c (nowrap_type_p): Use ANY_INTEGRAL_TYPE_P.
hubicka [Tue, 5 Jul 2016 16:13:46 +0000 (16:13 +0000)] 
* tree-ssa-loop-niter.c (nowrap_type_p): Use ANY_INTEGRAL_TYPE_P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238011 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[LRA] Don't count spilling cost for it offmemok
jiwang [Tue, 5 Jul 2016 16:05:27 +0000 (16:05 +0000)] 
[LRA] Don't count spilling cost for it offmemok

* lra-constraints.c (process_alt_operands): Don't add spilling cost for
"offmemok".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238010 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if
hubicka [Tue, 5 Jul 2016 16:02:52 +0000 (16:02 +0000)] 
* tree-scalar-evoluiton.c (simple_iv): Use nowrap_type to check if
IV can overflow.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238009 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoPR c++/62314: add fixit hint for "expected ';' after class definition"
dmalcolm [Tue, 5 Jul 2016 15:50:54 +0000 (15:50 +0000)] 
PR c++/62314: add fixit hint for "expected ';' after class definition"

gcc/cp/ChangeLog:
PR c++/62314
* parser.c (cp_parser_class_specifier_1): When reporting
missing semicolons, use a fixit-hint to suggest insertion
of a semicolon immediately after the closing brace,
offsetting the reported column accordingly.

gcc/testsuite/ChangeLog:
PR c++/62314
* gcc/testsuite/g++.dg/parse/error5.C: Update column
number of missing semicolon error.
* g++.dg/pr62314-2.C: New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238008 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoSecond review of STAT= patch + tests
afanfa [Tue, 5 Jul 2016 15:33:06 +0000 (15:33 +0000)] 
Second review of STAT= patch + tests

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238007 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-05 Richard Biener <rguenther@suse.de>
rguenth [Tue, 5 Jul 2016 13:25:47 +0000 (13:25 +0000)] 
2016-07-05  Richard Biener  <rguenther@suse.de>

* gimple-ssa-split-paths.c (find_block_to_duplicate_for_splitting_pa):
Handle empty else block.
(is_feasible_trace): Likewise.
(split_paths): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238005 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-05 Richard Biener <rguenther@suse.de>
rguenth [Tue, 5 Jul 2016 13:25:19 +0000 (13:25 +0000)] 
2016-07-05  Richard Biener  <rguenther@suse.de>

* tree-loop-distribution.c (distribute_loop): Fix issue with
the cost model loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238004 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoUpdate documentation.
charlet [Tue, 5 Jul 2016 12:18:48 +0000 (12:18 +0000)] 
Update documentation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238003 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/fortran/ChangeLog:
vehre [Tue, 5 Jul 2016 12:06:22 +0000 (12:06 +0000)] 
gcc/fortran/ChangeLog:

2016-07-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71623
* trans-stmt.c (gfc_trans_allocate): Add code of pre block of typespec
in allocate to parent block.

gcc/testsuite/ChangeLog:

2016-07-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71623
* gfortran.dg/deferred_character_17.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238002 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * gcc-interface/decl.c (gnat_to_gnu_entity): Invoke global_bindings_p
ebotcazou [Tue, 5 Jul 2016 10:32:43 +0000 (10:32 +0000)] 
* gcc-interface/decl.c (gnat_to_gnu_entity): Invoke global_bindings_p
last when possible.  Do not call elaborate_expression_2 on offsets in
local record types and avoid useless processing for constant offsets.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238001 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM][testsuite] neon-testgen.ml removal
clyon [Tue, 5 Jul 2016 09:24:38 +0000 (09:24 +0000)] 
[ARM][testsuite] neon-testgen.ml removal

2016-07-05  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/neon-testgen.ml: Delete.
* config/arm/neon.ml: Delete.

gcc/testsuite/
* gcc.target/arm/neon/polytypes.c: Move to ...
* gcc.target/arm/polytypes.c: ... here.
* gcc.target/arm/neon/pr51534.c: Move to ...
* gcc.target/arm/pr51534.c: ... here.
* gcc.target/arm/neon/vect-vcvt.c: Move to ...
* gcc.target/arm/vect-vcvt.c: ... here.
* gcc.target/arm/neon/vect-vcvtq.c: Move to ...
* gcc.target/arm/vect-vcvtq.c: ... here.
* gcc.target/arm/neon/vfp-shift-a2t2.c: Move to ...
* gcc.target/arm/vfp-shift-a2t2.c: ... here.
* gcc.target/arm/neon/vst1Q_laneu64-1.c: Move to ...
* gcc.target/arm/vst1Q_laneu64-1.c: ... here. Fix foo() prototype.
* gcc.target/arm/neon/neon.exp: Delete.
* gcc.target/arm/neon/*.c: Delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238000 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Tue, 5 Jul 2016 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237998 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Mon, 4 Jul 2016 21:04:55 +0000 (21:04 +0000)] 
2016-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/66575
* decl.c (match_procedure_interface): Exit loop if procedure
interface refers to itself.

* gfortran.dg: pr65575.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237994 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Mon, 4 Jul 2016 19:14:54 +0000 (19:14 +0000)] 
2016-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
    Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/35849
* simplify.c (gfc_simplify_ishftc): Check that absolute value of
SHIFT is less than or equal to SIZE.

* gfortran.dg: pr35849.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237993 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/71739
jakub [Mon, 4 Jul 2016 17:31:38 +0000 (17:31 +0000)] 
PR c++/71739
* tree.c (attribute_value_equal): Use get_attribute_name instead of
directly using TREE_PURPOSE.

* g++.dg/cpp0x/pr71739.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237991 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[AArch64] Renaming ARMv8.1 to ARMv8.1-A in comments and documentations
jiwang [Mon, 4 Jul 2016 16:27:46 +0000 (16:27 +0000)] 
[AArch64] Renaming ARMv8.1 to ARMv8.1-A in comments and documentations

* config/aarch64/aarch64.h: Rename "ARMv8.1" to "ARMv8.1-A".
* config/aarch64/aarch64_neon.h: Likewise.
* config/aarch64/arm_neon.h: Likewise.
* config/aarch64/atomics.md: Likewise.
* config/aarch64/aarch64-simd-builtins.def: Likewise.
* doc/invoke.texi: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237988 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[testsuite] asan/clone-test-1.c: Handle clone() failure
clyon [Mon, 4 Jul 2016 16:19:03 +0000 (16:19 +0000)] 
[testsuite] asan/clone-test-1.c: Handle clone() failure

2016-07-04  Christophe Lyon  <christophe.lyon@linaro.org>

* c-c++-common/asan/clone-test-1.c (main): Handle clone() failure.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237987 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd tests for inserting aliased objects into std::vector
redi [Mon, 4 Jul 2016 14:52:54 +0000 (14:52 +0000)] 
Add tests for inserting aliased objects into std::vector

2016-07-04  François Dumont  <fdumont@gcc.gnu.org>

* testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc:
New test.
* testsuite/23_containers/vector/modifiers/insert/self_insert.cc: New
test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237986 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix std::vector's use of temporary objects
redi [Mon, 4 Jul 2016 14:52:46 +0000 (14:52 +0000)] 
Fix std::vector's use of temporary objects

* include/bits/stl_vector.h (emplace(const_iterator, _Args&&...)):
Define inline. Forward to _M_emplace_aux.
(insert(const_iterator, value_type&&)): Forward to _M_insert_rval.
(_M_insert_rval, _M_emplace_aux): Declare new functions.
(_Temporary_value): New RAII type using allocator to construct/destroy.
(_S_insert_aux_assign): Remove.
(_M_insert_aux): Make non-variadic.
* include/bits/vector.tcc (insert(const_iterator, const value_type&)):
Use _Temporary_value.
(emplace(const_iterator, _Args&&...)): Remove definition.
(_M_insert_rval, _M_emplace_aux): Define.
(_M_insert_aux): Make non-variadic, stop using _S_insert_aux_assign.
(_M_fill_insert): Use _Temporary_value.
* testsuite/23_containers/vector/allocator/construction.cc: New test.
* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
Adjust expected results for emplacing an lvalue with reallocation.
* testsuite/23_containers/vector/check_construct_destroy.cc: Adjust
expected results to account for construction/destruction of temporary
using allocator.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237985 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoS/390: Add support for z13 instructions lochi and locghi.
krebbel [Mon, 4 Jul 2016 14:25:22 +0000 (14:25 +0000)] 
S/390: Add support for z13 instructions lochi and locghi.

The attached patch adds patterns to make use of the z13 LOCHI and
LOCGHI instructions.

gcc/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* config/s390/s390.md: Add "z13" cpu_facility.
("*mov<mode>cc"): Add support for z13 instructions lochi and locghi.
* config/s390/predicates.md ("loc_operand"): New predicate for "load on
condition" type instructions.

gcc/testsuite/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* gcc.target/s390/vector/vec-scalar-cmp-1.c: Expect lochi instead
of locr.
* gcc.target/s390/loc-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237984 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMinor cleanup to allocate_dynamic_stack_space
krebbel [Mon, 4 Jul 2016 14:21:06 +0000 (14:21 +0000)] 
Minor cleanup to allocate_dynamic_stack_space

gcc/ChangeLog:

2016-07-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>
    Jeff Law  <law@redhat.com>

* explow.c (allocate_dynamic_stack_space): Simplify knowing that
MUST_ALIGN was always true and extra_align ist always BITS_PER_UNIT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237983 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
kyukhin [Mon, 4 Jul 2016 14:06:27 +0000 (14:06 +0000)] 
gcc/
* config/i386/i386.c (ix86_expand_vec_perm): Add handle one-operand
permutation for TARGET_AVX512F.
(ix86_expand_vec_one_operand_perm_avx512): New function.
(expand_vec_perm_1): Invoke introduced function.
* tree-vect-loop.c (vect_transform_loop): Clear-up safelen value since
it may be not valid after vectorization.

gcc/testsuite/
* gcc/testsuite/gcc.target/i386/avx512f-vect-perm-1.c: New test.
* gcc/testsuite/gcc.target/i386/avx512f-vect-perm-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237982 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoUpdate documentation.
charlet [Mon, 4 Jul 2016 12:57:30 +0000 (12:57 +0000)] 
Update documentation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237979 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR libstdc++/71313
ville [Mon, 4 Jul 2016 12:52:49 +0000 (12:52 +0000)] 
PR libstdc++/71313
* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
Call remove_all for children of a directory.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237978 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoCleanups.
charlet [Mon, 4 Jul 2016 12:47:30 +0000 (12:47 +0000)] 
Cleanups.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237977 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Ed Schonberg <schonberg@adacore.com>
charlet [Mon, 4 Jul 2016 12:32:22 +0000 (12:32 +0000)] 
2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb (Analyze_Attribute_Old_Result): The attributes can
appear in the postcondition of a subprogram renaming declaration,
when the renamed entity is an attribute reference that is a
function (such as 'Value).
* sem_attr.adb (Eval_Attribute): It doesn't
need to be static, just known at compile time, so use
Compile_Time_Known_Value instead of Is_Static_Expression.
This is an efficiency improvement over the previous bug fix.
* sem_ch13.adb (Analyze_One_Aspect): Use Original_Node to detect
illegal aspects on subprogram renaming declarations that may
have been rewritten as bodies.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* sem_intr.adb (Errint): Do not emit error message in
Relaxed_RM_Semantics mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237976 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Bob Duff <duff@adacore.com>
charlet [Mon, 4 Jul 2016 12:30:44 +0000 (12:30 +0000)] 
2016-07-04  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Eval_Attribute): The code was assuming
that X'Enum_Rep, where X denotes a constant, can be constant
folded. Fix it so it makes that assumption only when X denotes
a STATIC constant.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237975 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMinor reformatting.
charlet [Mon, 4 Jul 2016 10:48:59 +0000 (10:48 +0000)] 
Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237974 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Ed Schonberg <schonberg@adacore.com>
charlet [Mon, 4 Jul 2016 10:48:48 +0000 (10:48 +0000)] 
2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Compatible_Types_In_Predicate): New function
to handle cases where a formal of a predicate function and the
corresponding actual have different views of the same type.

2016-07-04  Philippe Gil  <gil@adacore.com>

* g-debpoo.adb (Free_Blocks) free blocks also until
Logically_Deallocated less than Maximum_Logically_Freed_Memory
(Dump) add dump of number of traceback & validity elements
already allocated.

2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_ch12.adb (Instantiate_Package_Body): Add
a guard to ignore Itypes which fail when installing primitives.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237973 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Bob Duff <duff@adacore.com>
charlet [Mon, 4 Jul 2016 10:46:47 +0000 (10:46 +0000)] 
2016-07-04  Bob Duff  <duff@adacore.com>

* sem_eval.adb (Decompose_Expr): Set 'out' parameters
Kind and Cons to valid values, to avoid use of uninit vars.
(Extract_Length): Reorder the check to make it clearer that
we're depending on BOTH Ent1 and Ent2 to be Present.
* sem_aggr.adb (Resolve_Aggregate): Remove dead code.
(Check_Misspelled_Component): Remove exit statement, because
it's covered by the 'while' condition.
* checks.adb (Apply_Selected_Range_Checks): Remove useless
condition "or else not Checks_On".
(Selected_Range_Checks):
Initialize Known_LB and Known_HB to False, because they are
tested unconditionally; avoid use of uninit vars.
* frontend.adb (Frontend): Removed useless condition
"Operating_Mode = Check_Semantics and then", and added an Assert
to clarify why it was useless.
* prep.adb (Preprocess): Remove redundant condition. Add an
assertion.
* sem_ch10.adb (Analyze_Proper_Body): Moved redundant condition
"Original_Operating_Mode = Generate_Code" to an Assert.
(Process_Spec_Clauses, Process_Body_Clauses): Change parameters
from 'in out' to 'out', and don't initialize actuals.
* sem_ch12.adb (Is_In_Main_Unit): Removed useless condition
"Unum = Main_Unit or else".
(Save_Global_Descendant): Moved
redundant condition "D = Union_Id (No_List)" to an Assert.
* sem_ch4.adb (Check_Misspelled_Selector): Remove exit
statement, because it's covered by the 'while' condition.
(Analyze_Case_Expression): Initialize Wrong_Alt to Empty,
because it looks like it is used uninitialized otherwise.
* sem_ch6.adb (Check_Return_Subtype_Indication): Moved redundant
condition "not R_Type_Is_Anon_Access" to an Assert.
* sem_elim.adb (Line_Num_Match): Moved redundant condition
"Sloc_Trace (Idx) = '['" to an Assert.
* sem_util.adb (Compile_Time_Constraint_Error): Change "J" to
"J - 1". This code is trying to replace "?" with "<", but not if
the "?" is quoted, as in "'?", so we want to check the PREVIOUS
character for '''.
* snames.adb-tmpl (Is_Pragma_Name): Remove useless condition
"or else N = Name_Relative_Deadline". It's useless because
Name_Relative_Deadline is in the range First_Pragma_Name
.. Last_Pragma_Name.
* treepr.adb (Visit_Node): Moved redundant condition "D =
Union_Id (No_List)" to an Assert.
* sem_ch3.adb (Derive_Subprogram, Derive_Subprograms): Change
parameters from 'in out' to 'out'.
* errout.adb (Error_Msg_Internal): Replace redundant test with Assert.
* inline.adb (Add_Inlined_Body): Code cleanup.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237972 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Mon, 4 Jul 2016 10:44:24 +0000 (10:44 +0000)] 
2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* g-sercom-mingw.adb, sem_ch6.adb: Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237971 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Olivier Hainque <hainque@adacore.com>
charlet [Mon, 4 Jul 2016 10:43:01 +0000 (10:43 +0000)] 
2016-07-04  Olivier Hainque  <hainque@adacore.com>

* g-sercom-mingw.adb (Set): Fix port configuration for the
non-blocking + null-timeout case, request of immediate return.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Is_Non_Overriding_Operation): Add guard to test
of generic parent type when operation is a parameterless function
that may dispatch on result.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237970 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Mon, 4 Jul 2016 10:41:23 +0000 (10:41 +0000)] 
2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* freeze.adb, ghost.adb, sem_ch13.adb: Minor reformatting.

2016-07-04  Pascal Obry  <obry@adacore.com>

* g-forstr.ads: More documentation for the Formatted_String
support.

2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_ch7.adb (Install_Parent_Private_Declarations): When
instantiating a child unit, do not install private declaration of
a non-generic ancestor of the generic that is also an ancestor
of the current unit: its private part will be installed when
private part of ancestor itself is analyzed.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Instantiate_Object): In SPARK mode add a guard
to verify that the actual is an object reference before checking
for volatility.
(Check_Generic_Child_Unit): Prevent cascaded errors when prefix
is illegal.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237969 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Gary Dismukes <dismukes@adacore.com>
charlet [Mon, 4 Jul 2016 10:38:22 +0000 (10:38 +0000)] 
2016-07-04  Gary Dismukes  <dismukes@adacore.com>

* sem_ch12.ads, freeze.adb: Minor reformatting and typo fixes.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (New_Stream_Subprogram): If the attribute
definition clause comes from an aspect specification, place the
generated subprogram renaming in the freeze actions of the type.

2016-07-04  Philippe Gil  <gil@adacore.com>

* g-debpoo.adb (Dump.Do_Report) - add space prefix to backtrace
address dump - avoid new line sent directly to stdout.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* gnat1drv.adb, sem_ch12.adb, sem_elab.adb, sem_prag.adb, sem_res.adb:
Relax elaboration checks in SPARK_Mode so that we rely on the
static elaboration model (if used). We'll have a more precise
check performed in flow analysis of gnat2why.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237968 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Ed Schonberg <schonberg@adacore.com>
charlet [Mon, 4 Jul 2016 10:29:02 +0000 (10:29 +0000)] 
2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* ghost.adb (Prune_Node): A freeze node for an ignored ghost
entity must be pruned as well.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237967 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Gary Dismukes <dismukes@adacore.com>
charlet [Mon, 4 Jul 2016 10:25:35 +0000 (10:25 +0000)] 
2016-07-04  Gary Dismukes  <dismukes@adacore.com>

* sem_type.adb, einfo.ads, freeze.adb, exp_ch6.adb: Minor reformatting
and typo fix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237966 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Mon, 4 Jul 2016 10:19:10 +0000 (10:19 +0000)] 
2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb, sem_type.adb, sem_ch12.adb, xref_lib.adb,
freeze.adb, sinput-l.adb, sinput-l.ads, sem_ch4.adb, sem_ch8.adb:
Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237965 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Justin Squirek <squirek@adacore.com>
charlet [Mon, 4 Jul 2016 10:17:30 +0000 (10:17 +0000)] 
2016-07-04  Justin Squirek  <squirek@adacore.com>

* sem_prag.adb (Analyze_Unmodified_Or_Unused and
Analyze_Unreferenced_Or_Unused): Change warning message to be
more clear about pragma duplicates.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sinput-l.adb (Create_Instantiation_Source): Set component
Inlined_Call for inherited pragma case.
* sinput.adb, sinput.ads (Instantiation): Return component
Inlined_Call for inherited pragma case.

2016-07-04  Bob Duff  <duff@adacore.com>

* sem_type.adb (Remove_Conversions): Protect
the call to Left_Opnd by checking for Nkind in N_Unary_Op --
unary operators do not have a left operand.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Object_Declaration): A declaration of a
constant in a protected operation may be a homonym of a private
component of the enclosing protected type. This declaration hides
the component renaming constructed within the protected operation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237964 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Bob Duff <duff@adacore.com>
charlet [Mon, 4 Jul 2016 10:09:04 +0000 (10:09 +0000)] 
2016-07-04  Bob Duff  <duff@adacore.com>

* xref_lib.adb (Parse_X_Filename, Parse_Identifier_Info): Ignore
unknown files. Check that File_Nr is in the range of files we
know about. The previous code was checking the lower bound,
but not the upper bound.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* tracebak.c: Minor reformatting.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sem_ch12.adb, sem_ch12.ads Update calls to
Create_Instantiation_Source to use default argument.
(Adjust_Inherited_Pragma_Sloc): New function to adjust sloc
of inherited pragma.
(Set_Copied_Sloc_For_Inherited_Pragma):
New function that wraps call to Create_Instantiation_Source for
copying an inherited pragma.
(Set_Copied_Sloc_For_Inlined_Body): Update call to
Create_Instantiation_Source with new arguments.
* sem_prag.adb (Build_Pragma_Check_Equivalent): In the case
of inherited pragmas, use the generic machinery to get chained
locations for the pragma and its sub-expressions.
* sinput-c.adb: Adapt to new type Source_File_Record.
* sinput-l.adb, sinput-l.ads (Create_Instantiation_Source):
Add parameter Inherited_Pragma and make parameter Inlined_Body
optional.
* sinput.adb, sinput.ads (Comes_From_Inherited_Pragma): New
function to return when a location comes from an inherited pragma.
(Inherited_Pragma): New function to detect when a location comes
from an inherited pragma.
(Source_File_Record): New component Inherited_Pragma.

2016-07-04  Yannick Moy  <moy@adacore.com>

* sem_elab.adb: Register existence of quickfix for error message.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Resolve_One_Call): In the context of a predicate
function the formal and the actual in a call may have different
views of the same type, because of the delayed analysis of
predicates aspects. Extend the patch that handles this potential
discrepancy to handle private and full views as well.
* sem_ch8.adb (Find_Selected_Component): Refine predicate that
produces additional error when an illegal selected component
looks like a prefixed call whose first formal is untagged.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237963 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMinor reformatting.
charlet [Mon, 4 Jul 2016 10:06:17 +0000 (10:06 +0000)] 
Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237962 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Justin Squirek <squirek@adacore.com>
charlet [Mon, 4 Jul 2016 10:05:53 +0000 (10:05 +0000)] 
2016-07-04  Justin Squirek  <squirek@adacore.com>

* einfo.adb (Has_Pragma_Unused): Create this function as a setter
for a new flag294 (Set_Has_Pragma_Unused): Create this procedure
as a getter for flag294 (Write_Entity_Flags): Register the new
flag with an alias
* einfo.ads Add comment documenting Has_Pragma_Unused (flag294)
and subsequent getter and setter declarations.
* lib-xref.adb (Generate_Reference): Recognize Has_Pragma_Unused
flag to print appropriate warning messages.
* par-prag.adb (Prag): Classify Pragma_Unused into "All Other
Pragmas."
* snames.ads-tmpl Add a new name to the name constants and a
new pramga to Pragma_Id for pramga Unused.
* sem_prag.adb (Analyze_Pragma): Create case for Pragma_Unused
and move the block for Pragma_Unmodified and Pragma_Unreferenced
out and into local subprograms.
(Analyze_Unmodified, Analyze_Unreferenced): From the old pragma blocks
that have been separated in to local subprograms add a parameter to
indicate the if they are being called in the context of Pragma_Unused
and handle it accordingly.
(Is_Non_Significant_Pragma_Reference): Add an entry for Pragma_Unused
and correct the position of Pragma_Unevaluated_Use_Of_Old.
* sem_util.adb (Note_Possible_Modification): Recognize
Has_Pragma_Unused flag to print appropriate warning messages.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237961 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Ed Schonberg <schonberg@adacore.com>
charlet [Mon, 4 Jul 2016 10:03:34 +0000 (10:03 +0000)] 
2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Check_Inherited_Conditions): Perform two passes over
the primitive operations of the type: one over source overridings
to build the primitives mapping, and one over inherited operations
to check for the need to create wrappers, and to check legality
of inherited condition in SPARK.
* sem_prag.ads (Update_Primitive_Mapping): Make public, for use
in freeze actions.
* sem_prag.adb (Build_Pragma_Check_Equivalent): Refine error
message in the case of an inherited condition in SPARK that
includes a call to some other overriding primitive.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237960 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-04 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Mon, 4 Jul 2016 10:00:57 +0000 (10:00 +0000)] 
2016-07-04  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_aggr.adb (Ctrl_Init_Expression): New routine.
(Gen_Assign): Code cleanup. Perform in-place side effect removal when
the expression denotes a controlled function call.
* exp_util.adb (Remove_Side_Effects): Do not remove side effects
on a function call which has this behavior suppressed.
* sem_aggr.adb Code cleanup.
* sinfo.adb (No_Side_Effect_Removal): New routine.
(Set_Side_Effect_Removal): New routine.
* sinfo.ads New attribute No_Side_Effect_Removal along with
occurences in nodes.
(No_Side_Effect_Removal): New routine along with pragma Inline.
(Set_Side_Effect_Removal): New routine along with pragma Inline.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* opt.ads, sem_prag.adb (Universal_Addressing_On_AAMP): Removed.
Remove support for pragma No_Run_Time. Update comments.

2016-07-04  Pascal Obry  <obry@adacore.com>

* g-forstr.ads: More documentation for the Formatted_String
support.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
'Address): If the address comes from an aspect specification
and not a source attribute definition clause, do not remove
side effects from the expression, because the expression must
be elaborated at the freeze point of the object and not at the
object declaration, because of the delayed analysis of aspect
specifications.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237959 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[AArch64] Fix PR target/63874
ramana [Mon, 4 Jul 2016 09:06:02 +0000 (09:06 +0000)] 
[AArch64] Fix PR target/63874

     In this PR we have a situation where we aren't really detecting
weak references vs weak definitions. If one has a weak definition that
binds locally there's no reason not to put out PC relative
relocations.

However if you have a genuine weak reference that is known not to bind
locally it makes very little sense to put out an entry into the
literal pool which doesn't always work with DSOs and shared objects.

Tested aarch64-none-linux-gnu bootstrap and regression test with no
regressions

2016-07-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/63874
* config/aarch64/aarch64.c (aarch64_classify_symbol): Fix
typo in comment.  Only force to memory if it is a weak
external reference.

2016-07-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/63874
* gcc.target/aarch64/pr63874.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237957 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[AArch64] ARMv8.2 command line and feature macros support
jiwang [Mon, 4 Jul 2016 08:17:57 +0000 (08:17 +0000)] 
[AArch64] ARMv8.2 command line and feature macros support

* config/aarch64/aarch64-arches.def: Add "armv8.2-a".
* config/aarch64/aarch64.h (AARCH64_FL_V8_2): New.
(AARCH64_FL_F16): New.
(AARCH64_FL_FOR_ARCH8_2): New.
(AARCH64_ISA_8_2): New.
(AARCH64_ISA_F16): New.
(TARGET_FP_F16INST): New.
(TARGET_SIMD_F16INST): New.
* config/aarch64/aarch64-option-extensions.def ("fp16"): New entry.
("fp"): Disabling "fp" also disables "fp16".
* config/aarch64/aarch64-c.c (arch64_update_cpp_builtins): Conditionally define
__ARM_FEATURE_FP16_SCALAR_ARITHMETIC and __ARM_FEATURE_FP16_VECTOR_ARITHMETIC.
* doc/invoke.texi (AArch64 Options): Document "armv8.2-a" and "fp16".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237956 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agofix interaction of -S and -x {c,c++}-header
jbeulich [Mon, 4 Jul 2016 07:41:32 +0000 (07:41 +0000)] 
fix interaction of -S and -x {c,c++}-header

Irrespective of the use of -o this so far resulted in "error: output
filename specified twice", since cc1_options already produces a -o
option when -S was specified.

gcc/
2016-07-04  Jan Beulich  <jbeulich@suse.com>

* gcc.c (default_compilers["@c-header"]): Conditionalize "-o".

gcc/cp/
2016-07-04  Jan Beulich  <jbeulich@suse.com>

* lang-specs.h ("@c++-header"): Conditionalize "-o".

gcc/testsuite/
2016-07-04  Jan Beulich  <jbeulich@suse.com>

* g++.dg/header.c: New.
* gcc.dg/header.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237955 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Mon, 4 Jul 2016 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237954 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd 2 tests for PR middle-end/71734
hjl [Sun, 3 Jul 2016 16:40:22 +0000 (16:40 +0000)] 
Add 2 tests for PR middle-end/71734

simd3.f90 and simd4.f90 fail only with -msse2.  But they are compiled
with -mavx on AVX machines.  Add 2 tests to compile simd3.f90 and
simd4.f90 with -msse2 on AVX machines.

PR middle-end/71734
* testsuite/libgomp.fortran/pr71734-1.f90: New test.
* testsuite/libgomp.fortran/pr71734-2.f90: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237950 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Sun, 3 Jul 2016 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237949 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-02 François Dumont <fdumont@gcc.gnu.org>
fdumont [Sat, 2 Jul 2016 14:55:20 +0000 (14:55 +0000)] 
2016-07-02  François Dumont  <fdumont@gcc.gnu.org>

* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adjust
dg-error line numbers.
* testsuite/23_containers/array/tuple_interface/
tuple_element_debug_neg.cc: Likewise.
* testsuite/25_algorithms/lexicographical_compare/debug/
irreflexive_neg.cc: Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237945 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c/71719
jakub [Sat, 2 Jul 2016 06:41:29 +0000 (06:41 +0000)] 
PR c/71719
* c-typeck.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.

* c-c++-common/Wunused-var-15.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237937 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Sat, 2 Jul 2016 00:16:25 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237936 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR fortran/71687
jakub [Fri, 1 Jul 2016 20:52:54 +0000 (20:52 +0000)] 
PR fortran/71687
* f95-lang.c (struct binding_level): Add reversed field.
(clear_binding_level): Adjust initializer.
(getdecls): If reversed is clear, set it and nreverse the names
chain before returning it.
(poplevel): Use getdecls.
* trans-decl.c (gfc_generate_function_code, gfc_process_block_locals):
Use nreverse to pushdecl decls in the declaration order.

* gfortran.dg/gomp/pr71687.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237926 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-07-01 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
wschmidt [Fri, 1 Jul 2016 20:38:51 +0000 (20:38 +0000)] 
2016-07-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.dg/const-float128-ped.c: Require __float128 effective
target and options.
* gcc.dg/const-float128.c: Likewise.
* gcc.dg/torture/float128-cmp-invalid.c: Require
__float128 and base_quadfloat_support effective targets, and
__float128 options.
* gcc.dg/torture/float128-div-underflow.c: Likewise.
* gcc.dg/torture/float128-extend-nan.c: Likewise.
* gcc.dg/torture/float128-nan.c: Likewise.
* gcc.dg/torture/fp-int-convert-float128-timode-2.c: Likewise.
* gcc.dg/torture/fp-int-convert-float128-timode-3.c: Likewise.
* gcc.dg/torture/fp-int-convert-float128-timode.c: Likewise.
* lib/target-supports.exp (check_effective_target___float128):
New.
(add_options_for___float128): New.
(check_effective_target_base_quadword_support): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237924 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoupdate changelog
meissner [Fri, 1 Jul 2016 18:26:46 +0000 (18:26 +0000)] 
update changelog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237921 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[gcc]
meissner [Fri, 1 Jul 2016 18:23:29 +0000 (18:23 +0000)] 
[gcc]
2016-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71720
* config/rs6000/vsx.md (vsx_splat_v4sf_internal): When splitting
the insns, use vsx_xxspltw_v4sf_direct which does not check for
little endian.

[gcc/testsuite]
2016-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71720
* gcc.target/powerpc/pr71720.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237920 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR fortran/71717
jakub [Fri, 1 Jul 2016 15:13:28 +0000 (15:13 +0000)] 
PR fortran/71717
* trans-openmp.c (gfc_omp_privatize_by_reference): Return false
for GFC_DECL_ASSOCIATE_VAR_P with POINTER_TYPE.

* testsuite/libgomp.fortran/associate3.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237916 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agocheck initializer to be zero in .bss-like sections
jbeulich [Fri, 1 Jul 2016 14:23:24 +0000 (14:23 +0000)] 
check initializer to be zero in .bss-like sections

Just like gas, which has recently learned to reject such initializers,
gcc shouldn't accept such either.

gcc/
2016-07-01  Jan Beulich  <jbeulich@suse.com>

* varasm.c (get_variable_section): Validate initializer in
named .bss-like sections.

gcc/testsuite/
2016-07-01  Jan Beulich  <jbeulich@suse.com>

* gcc.dg/bss.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237913 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/ChangeLog:
kelvin [Fri, 1 Jul 2016 13:52:55 +0000 (13:52 +0000)] 
gcc/ChangeLog:

2016-07-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
Exchange the order of the second and third operands in the vpermr
instruction tmeplate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237912 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
bergner [Fri, 1 Jul 2016 13:51:35 +0000 (13:51 +0000)] 
gcc/
PR target/71698
* config/rs6000/rs6000.c (rs6000_secondary_reload_simple_move): Disallow
TDmode values.

gcc/testsuite/
PR target/71698
* gcc.target/powerpc/pr71698.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237911 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/testsuite/
gjl [Fri, 1 Jul 2016 12:09:53 +0000 (12:09 +0000)] 
gcc/testsuite/
PR target/71151
* gcc.target/avr/pr71151-common.h (foo): Use macro SECTION_NAME
instead of ".foo" for its section name.
* gcc.target/avr/pr71151-2.c (SECTION_NAME): Define appropriately
depending on MCU's flash size.
* gcc.target/avr/pr71151-3.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-4.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-5.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-6.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-7.c (SECTION_NAME): Dito.
* gcc.target/avr/pr71151-8.c (SECTION_NAME): Dito.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237910 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agostrcpy arg optimised out
amodra [Fri, 1 Jul 2016 11:15:17 +0000 (11:15 +0000)] 
strcpy arg optimised out

For functions that return an argument unchanged, like strcat,
find_call_crossed_cheap_reg attempts to find an assignment between
a pseudo reg and the arg reg before the call, so that uses of the
pseudo after the call can instead use the return value.  The exit
condition on the loop looking at previous insns was wrong.  Uses of
the arg reg don't matter.  What matters is the insn setting the arg
reg as any assignment involving the arg reg prior to that insn is
likely a completely unrelated use of the hard reg.

PR rtl-optimization/71709
* ira-lives.c (find_call_crossed_cheap_reg): Exit loop on arg reg
being set, not referenced.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237909 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoix86: fix PR/65105 testcase 2
jbeulich [Fri, 1 Jul 2016 09:42:59 +0000 (09:42 +0000)] 
ix86: fix PR/65105 testcase 2

I cannot see how without allowing the compiler to use SSE2 instructions
(as is done by all other tests for this PR scanning for particular
instructions) this test could ever have succeeded anywhere.

gcc/testsuite/
2016-07-01  Jan Beulich  <jbeulich@suse.com>

* gcc.target/i386/pr65105-2.c: Add -msse2.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237908 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoPR tree-optimization/70729
kyukhin [Fri, 1 Jul 2016 09:42:01 +0000 (09:42 +0000)] 
PR tree-optimization/70729

gcc/
* tree-vectorizer.c (adjust_simduid_builtins): Nullify safelen field
of loop since it can be not valid after transformation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237907 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM] Delete thumb_reload_in_h
ktkachov [Fri, 1 Jul 2016 09:22:51 +0000 (09:22 +0000)] 
[ARM] Delete thumb_reload_in_h

* config/arm/arm.c (thumb_reload_in_hi): Delete.
* config/arm/arm-protos.h (thumb_reload_in_hi): Delete prototype.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237906 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/arm/arm.c (arm_function_ok_for_sibcall): Add another check
ebotcazou [Fri, 1 Jul 2016 07:40:17 +0000 (07:40 +0000)] 
* config/arm/arm.c (arm_function_ok_for_sibcall): Add another check
for NULL decl.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237903 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Fri, 1 Jul 2016 00:16:17 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237902 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-06-30 Michael Meissner <meissner@linux.vnet.ibm.com>
meissner [Thu, 30 Jun 2016 21:54:47 +0000 (21:54 +0000)] 
2016-06-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71677
* config/rs6000/constraints.md (wY constraint): New constraint to
match the requirements for the LXSD and STXSD instructions.
* config/rs6000/predicates.md (offsettable_mem_14bit_operand): New
predicate to match the requirements for the LXSD and STXSD
instructions.
* config/rs6000/rs6000.md (mov<mode>_hardfloat32, FMOVE64 case):
Use constaint wY for LXSD/STXSD instructions instead of 'o' or 'Y'
to make sure that the bottom 2 bits of offset are 0, the address
form is offsettable, and no updating is done in the address mode.
(mov<mode>_hardfloat64, FMOVE64 case): Likewise.
(movdi_internal32): Likewise
(movdi_internal64): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237898 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR tree-optimization/71707
jakub [Thu, 30 Jun 2016 18:45:18 +0000 (18:45 +0000)] 
PR tree-optimization/71707
* tree-ssa-strlen.c (get_stridx_plus_constant): Handle already present
strinfo even for ADDR_EXPR ptr.

* gcc.dg/strlenopt-29.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237889 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR fortran/71704
jakub [Thu, 30 Jun 2016 17:45:21 +0000 (17:45 +0000)] 
PR fortran/71704
* parse.c (matchs, matcho): Move right before decode_omp_directive.
If spec_only, only gfc_match the keyword and if successful, goto
do_spec_only.
(matchds, matchdo): Define.
(decode_omp_directive): Add spec_only local var and set it.
Use matchds or matchdo macros instead of matchs or matcho
for declare target, declare simd, declare reduction and threadprivate
directives.  Return ST_GET_FCN_CHARACTERISTICS if a non-declarative
directive could be matched.
(next_statement): For ST_GET_FCN_CHARACTERISTICS restore
gfc_current_locus from old_locus even if there is no label.

* gfortran.dg/gomp/pr71704.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237888 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR fortran/71705
jakub [Thu, 30 Jun 2016 17:39:52 +0000 (17:39 +0000)] 
PR fortran/71705
* trans-openmp.c (gfc_trans_omp_clauses): Set TREE_ADDRESSABLE on
decls in to/from clauses.

* gfortran.dg/gomp/pr71705.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237887 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/ChangeLog:
kelvin [Thu, 30 Jun 2016 15:59:44 +0000 (15:59 +0000)] 
gcc/ChangeLog:

2016-06-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/altivec.md (darn_32): Change the condition to
TARGET_P9_MISC instead of TARGET_MODULO.
(darn_raw): Replace TARGET_MODULO with TARGET_P9_MISC in the
condition expression.
(darn): Replace TARGET_MODULO with TARGET_P9_MISC in the
condition expression.
* config/rs6000/dfp.md (UNSPEC_DTSTSFI): New unspec constant.
(DFP_TEST): New code iterator.
(dfptstsfi_<code>_mode>): New define_expand.
(*dfp_sgnfcnc_<mode>): New define_insn.
* config/rs6000/rs6000-builtin.def (BU_P9_MISC_0): Move this macro
definition next to BU_P9_MISC_1 definition and change the MASK
value to RS6000_BTM_P9_MISC.
(BU_P9_MISC_1): Change the MASK value to RS6000_BTM_P9_MISC.
(BU_P9_64BIT_MISC_0): Likewise.
(BU_P9_DFP_MISC_0): New macro definition.
(BU_P9_DFP_MISC_1): New macro definition.
(BU_P9_DFP_MISC_2): New macro definition.
(BU_P9_DFP_OVERLOAD_1): New macro definition.
(BU_P9_DFP_OVERLOAD_2): New macro definition.
(BU_P9_DFP_OVERLOAD_3): New macro definition.
(TSTSFI_LT_DD): New BU_P9_DFP_MISC_2.
(TSTSFI_LT_TD): Likewise.
(TSTSFI_EQ_DD): Likewise.
(TSTSFI_EQ_TD): Likewise.
(TSTSFI_GT_DD): Likewise.
(TSTSFI_GT_TD): Likewise.
(TSTSFI_OV_DD): Likewise.
(TSTSFI_OV_TD): Likewise.
(TSTSFI_LT): New BU_P9_DFP_OVERLOAD_2.
(TSTSFI_LT_DD): Likewise.
(TSTSFI_LT_TD): Likewise.
(TSTSFI_EQ): Likewise.
(TSTSFI_EQ_DD): Likewise.
(TSTSFI_EQ_TD): Likewise.
(TSTSFI_GT): Likewise.
(TSTSFI_GT_DD): Likewise.
(TSTSFI_GT_TD): Likewise.
(TSTSFI_OV): Likewise.
(TSTSFI_OV_DD): Likewise.
(TSTSFI_OV_TD): Likewise.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
overloaded test significance functions.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Add
OPTION_MASK_P9_MISC into the representation of this mask.
(POWERPC_MASKS): Add OPTION_MASK_P9_MISC into the representation
of this mask.
* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Set the
RS6000_BTM_P9_MISC flag in the return value if TARGET_P9_MISC is
non-zero.
(rs6000_expand_binop_builtin): Enforce that argument 0 of the exp
argument is a 6-bit unsigned literal value if the icode argument
represents a DFP test significance built-in call.
(rs6000_invalid_builtin): Add support for the RS6000_BTM_P9_MISC
flag used independently and in combination with the
RS6000_BTM_64BIT flag.
(rs6000_opt_masks): Add entry for power9-misc command-line option.
(rs6000_builtin_mask_names): Add entry for power9-misc
command-line option.
* config/rs6000/rs6000.h: Redefine TARGET_P9_MISC as 0 if
HAVE_AS_POWER9 is not a defined macro.  Define MASK_P9_MISC and
RS6000_BTM_P9_MISC macros.
* config/rs6000/rs6000.opt: Add support for the -mpower9-misc
option and change the description of the -mpower9-vector option to
enable only vector instructions, removing its erroneously claimed
support for scalar instructions.
* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
the ISA 3.0 digital floating point test significance built-in
functions.

gcc/testsuite/ChangeLog:

2016-06-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/dfp/dfp.exp: New dejagnu test script.
* gcc.target/powerpc/dfp/dtstsfi-0.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-1.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-10.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-11.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-12.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-13.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-14.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-15.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-16.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-17.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-18.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-19.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-2.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-20.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-21.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-22.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-23.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-24.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-25.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-26.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-27.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-28.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-29.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-3.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-30.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-31.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-32.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-33.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-34.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-35.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-36.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-37.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-38.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-39.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-4.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-40.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-41.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-42.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-43.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-44.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-45.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-46.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-47.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-48.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-49.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-5.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-50.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-51.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-52.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-53.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-54.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-55.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-56.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-57.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-58.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-59.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-6.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-60.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-61.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-62.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-63.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-64.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-65.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-66.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-67.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-68.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-69.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-7.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-70.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-71.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-72.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-73.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-74.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-75.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-76.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-77.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-78.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-79.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-8.c: New test.
* gcc.target/powerpc/dfp/dtstsfi-9.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237885 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoThis patch sets the branch cost to the same most optimal setting for all Cortex
wilco [Thu, 30 Jun 2016 15:46:14 +0000 (15:46 +0000)] 
This patch sets the branch cost to the same most optimal setting for all Cortex
cores, reducing codesize and improving performance due to using more CSEL
instructions.  Set the autoprefetcher model in Cortex-A72 to weak like the
others.  Enable AES fusion in Cortex-A35.  As a result generated code is now
more similar as well as more optimal across Cortex cores.

    gcc/
* config/aarch64/aarch64.c (cortexa35_tunings):
Enable AES fusion.  Use cortexa57_branch_cost.
(cortexa53_tunings): Use cortexa57_branch_cost.
(cortexa72_tunings): Use cortexa57_branch_cost.
Use AUTOPREFETCHER_WEAK.
(cortexa73_tunings): Use cortexa57_branch_cost.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237884 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[AArch64][2/2] (Re)Implement vcopy<q>_lane<q> intrinsics
ktkachov [Thu, 30 Jun 2016 15:19:45 +0000 (15:19 +0000)] 
[AArch64][2/2] (Re)Implement vcopy<q>_lane<q> intrinsics

2016-06-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
            James Greenhalgh  <james.greenhalgh@arm.com>

* config/aarch64/arm_neon.h (vcopyq_lane_f32, vcopyq_lane_f64,
vcopyq_lane_p8, vcopyq_lane_p16, vcopyq_lane_s8, vcopyq_lane_s16,
vcopyq_lane_s32, vcopyq_lane_s64, vcopyq_lane_u8, vcopyq_lane_u16,
vcopyq_lane_u32, vcopyq_lane_u64): Reimplement in C.
(vcopy_lane_f32, vcopy_lane_f64, vcopy_lane_p8, vcopy_lane_p16,
vcopy_lane_s8, vcopy_lane_s16, vcopy_lane_s32, vcopy_lane_s64,
vcopy_lane_u8, vcopy_lane_u16, vcopy_lane_u32, vcopy_lane_u64,
vcopy_laneq_f32, vcopy_laneq_f64, vcopy_laneq_p8, vcopy_laneq_p16,
vcopy_laneq_s8, vcopy_laneq_s16, vcopy_laneq_s32, vcopy_laneq_s64,
vcopy_laneq_u8, vcopy_laneq_u16, vcopy_laneq_u32, vcopy_laneq_u64,
vcopyq_laneq_f32, vcopyq_laneq_f64, vcopyq_laneq_p8, vcopyq_laneq_p16,
vcopyq_laneq_s8, vcopyq_laneq_s16, vcopyq_laneq_s32, vcopyq_laneq_s64,
vcopyq_laneq_u8, vcopyq_laneq_u16, vcopyq_laneq_u32, vcopyq_laneq_u64):
New intrinsics.

* gcc.target/aarch64/vect_copy_lane_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237883 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[AArch64][1/2] Add support INS (element) instruction to copy lanes between vectors
ktkachov [Thu, 30 Jun 2016 15:15:26 +0000 (15:15 +0000)] 
[AArch64][1/2] Add support INS (element) instruction to copy lanes between vectors

2016-06-30  James Greenhalgh  <james.greenhalgh@arm.com>
            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
New define_insn.
(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.

* gcc.target/aarch64/vget_set_lane_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237882 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix bogus option suggestions for RejectNegative options (PR driver/71651)
dmalcolm [Thu, 30 Jun 2016 14:28:50 +0000 (14:28 +0000)] 
Fix bogus option suggestions for RejectNegative options (PR driver/71651)

gcc/ChangeLog:
PR driver/71651
* gcc.c (driver::build_option_suggestions): Pass "option" to
add_misspelling_candidates.
* opts-common.c (add_misspelling_candidates): Add "option" param;
use it to avoid adding negated forms for options marked with
RejectNegative.
* opts.h (add_misspelling_candidates): Add "option" param.

gcc/testsuite/ChangeLog:
PR driver/71651
* gcc.dg/spellcheck-options-12.c: New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237880 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-06-30 Thomas Preud'homme <thomas.preudhomme@arm.com>
thopre01 [Thu, 30 Jun 2016 14:17:47 +0000 (14:17 +0000)] 
2016-06-30  Thomas Preud'homme  <thomas.preudhomme@arm.com>

libstdc++-v3/
    * testsuite/29_atomics/atomic/65913.cc: Require atomic-builtins rather
    than specific target.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237879 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR middle-end/71693
jakub [Thu, 30 Jun 2016 08:52:43 +0000 (08:52 +0000)] 
PR middle-end/71693
* fold-const.c (fold_binary_loc) <case RROTATE_EXPR>: Cast
TREE_OPERAND (arg0, 0) and TREE_OPERAND (arg0, 1) to type
first when permuting bitwise operation with rotate.  Cast
TREE_OPERAND (arg0, 0) to type when cancelling two rotations.

* gcc.c-torture/compile/pr71693.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237875 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Thu, 30 Jun 2016 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237869 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoOffer suggestions for misspelled --param names.
dmalcolm [Thu, 30 Jun 2016 00:05:39 +0000 (00:05 +0000)] 
Offer suggestions for misspelled --param names.

gcc/ChangeLog:
* opts.c (handle_param): Use find_param_fuzzy to offer suggestions
for misspelled param names.
* params.c: Include spellcheck.h.
(find_param_fuzzy): New function.
* params.h (find_param_fuzzy): New prototype.
* spellcheck.c (struct edit_distance_traits<const char *>): Move
to...
* spellcheck.h (struct edit_distance_traits<const char *>):
...here.

gcc/testsuite/ChangeLog:
* gcc.dg/spellcheck-params.c: New testcase.
* gcc.dg/spellcheck-params-2.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237865 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[gcc]
meissner [Wed, 29 Jun 2016 23:54:12 +0000 (23:54 +0000)] 
[gcc]
2016-06-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/predicates.md (const_0_to_7_operand): New
predicate, recognize 0..7.
* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
support for doing extracts from V16QImode, V8HImode, V4SImode
under ISA 3.0.
* config/rs6000/vsx.md (VSX_EXTRACT_I): Mode iterator for ISA 3.0
vector extract support.
(VSX_EXTRACT_PREDICATE): Mode attribute to validate element number
for ISA 3.0 vector extract.
(VSX_EX): Constraints to use for ISA 3.0 vector extract.
(vsx_extract_<mode>, VSX_EXTRACT_I): Add support for doing
extracts of a constant element number from small integer vectors
on 64-bit ISA 3.0 systems.
(vsx_extract_<mode>_di): Likewise.
* config/rs6000/rs6000.h (TARGET_VEXTRACTUB): New target macro to
say when we can do ISA 3.0 vector extracts.
* config/rs6000/rs6000.md (stfiwx): Allow DImode in Altivec
registers, using the stxsiwx instruction.

[gcc/testsuite]
2016-06-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/p9-extract-1.c: New file to test ISA 3.0
vector extract instructions.
* gcc.target/powerpc/p9-extract-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237864 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-06-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Wed, 29 Jun 2016 19:04:58 +0000 (19:04 +0000)] 
2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/71686
* gfortran.dg/unexpected_eof_2.f90: New test.
* gfortran.dg/unexpected_eof_3.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237861 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-06-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Wed, 29 Jun 2016 18:48:37 +0000 (18:48 +0000)] 
2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/71686
* scanner.c (gfc_next_char_literal): Only decrement nextc if it
is not NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237860 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd qdf24xx base tuning support.
wilson [Wed, 29 Jun 2016 18:01:55 +0000 (18:01 +0000)] 
Add qdf24xx base tuning support.

gcc/
* config/aarch64/aarch64-cores.def (qdf24xx): Use qdf24xx tuning.
* config/aarch64/aarch64.c (qdf24xx_addrcost_table,
qdf24xx_regmove_cost, qdf24xx_tunings): New.
* config/arm/aarch64-cost-tables.h (qdf24xx_extra_costs): New.
* config/arm/arm-cores.def (qdf24xx): Use qdf24xx tuning.
* config/arm/arm.c (arm_qdf24xx_tune): New.

gcc/testsuite/
* gcc.dg/asr_div1.c: Add aarch64 specific dg-options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237857 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago gcc/fortran/
cesar [Wed, 29 Jun 2016 16:04:42 +0000 (16:04 +0000)] 
gcc/fortran/
* openmp.c (match_oacc_clause_gang): Rename to ...
(match_oacc_clause_gwv): this.  Add support for OpenACC worker and
vector clauses.
(gfc_match_omp_clauses): Use match_oacc_clause_gwv for
OMP_CLAUSE_{GANG,WORKER,VECTOR}.  Propagate any MATCH_ERRORs for
invalid OMP_CLAUSE_{ASYNC,WAIT,GANG,WORKER,VECTOR} clauses.
(gfc_match_oacc_wait): Propagate MATCH_ERROR for invalid
oacc_expr_lists.  Adjust the first and needs_space arguments to
gfc_match_omp_clauses.

gcc/testsuite/
* gfortran.dg/goacc/asyncwait-2.f95: Updated expected diagnostics.
* gfortran.dg/goacc/asyncwait-3.f95: Likewise.
* gfortran.dg/goacc/asyncwait-4.f95: Add test coverage.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237854 138bc75d-0d04-0410-961f-82ee72b054a4