]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years ago2018-12-26 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Wed, 26 Dec 2018 21:08:53 +0000 (21:08 +0000)] 
2018-12-26  Steven G. Kargl  <kargl@gcc.gnu.org>

        PR fortran/85357
        * gfortran.df/pr85357.f90: New test.

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

6 years ago2018-12-26 Harald Anlauf <anlauf@gmx.de>
kargl [Wed, 26 Dec 2018 20:37:28 +0000 (20:37 +0000)] 
2018-12-26  Harald Anlauf  <anlauf@gmx.de>

PR fortran/85407
* module.c (read_module): Convert assert to fatal error to give
user a sensible error message.

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

6 years agoDaily bump.
gccadmin [Wed, 26 Dec 2018 00:16:25 +0000 (00:16 +0000)] 
Daily bump.

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

6 years agoDaily bump.
gccadmin [Tue, 25 Dec 2018 00:16:35 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-12-24 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Mon, 24 Dec 2018 18:26:25 +0000 (18:26 +0000)] 
2018-12-24  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/45513
PR fortran/81509
* check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior.
* check.c (boz_args_check): New function.  Check I and J not both BOZ.
(gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft,
 gfc_check_and, gfc_check_merge_bits): Use it.
* check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind
type of other agrument.  Remove silly GNU extension.
(gfc_check_ieor, gfc_check_ior): Delete now unused functions.
* intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long
line.
* intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior.
Delete prototype for bool gfc_check_ieor and gfc_check_ior
* intrinsic.texi: Update documentation for boz-literal-constant.

2018-12-24  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/45513
PR fortran/81509
* gfortran.dg/graphite/id-26.f03: Fix non-conforming use of IAND.
* gfortran.dg/pr81509_1.f90: New test.
* gfortran.dg/pr81509_2.f90: New test.

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

6 years ago2018-12-24 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Mon, 24 Dec 2018 18:03:49 +0000 (18:03 +0000)] 
2018-12-24  Steven G. Kargl  <kargl@gcc.gnu.org>

* gfortran.dg/ieee/ieee_9.f90:  XFAIL on arm*-*-gnueabi[hf].

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

6 years ago * gimple-fold.c (get_range_strlen_tree): Factored out of
law [Mon, 24 Dec 2018 15:32:11 +0000 (15:32 +0000)] 
* gimple-fold.c (get_range_strlen_tree): Factored out of
get_range_strlen.  Minor comment updates/additions.  Assert
argument is not a simple SSA_NAME.
(get_range_strlen): Call get_range_strlen_tree as appropriate.
Minor comment updates/additions.

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

6 years ago * ipa-devirt.c (dump_targets): Cap number of targets printed.
hubicka [Mon, 24 Dec 2018 11:26:15 +0000 (11:26 +0000)] 
* ipa-devirt.c (dump_targets): Cap number of targets printed.
(dump_possible_polymorphic_call_targets): Add verbose parameter.
(ipa_devirt): Use it.
* ipa-utils.h (dump_possible_polymorphic_call_targets): Add verbose
parametrs.

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

6 years agoFix double-application of patch.
hubicka [Mon, 24 Dec 2018 11:23:57 +0000 (11:23 +0000)] 
Fix double-application of patch.

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

6 years ago * tree.c (fld_simplified_type): Temporarily disable array
hubicka [Mon, 24 Dec 2018 11:21:25 +0000 (11:21 +0000)] 
* tree.c (fld_simplified_type): Temporarily disable array
simplification.

* gcc.c-torture/pr88140.c: New testcase.

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

6 years ago * lto-symtab.c (lto_symtab_merge_decls_2): Do not report ODR violations
hubicka [Mon, 24 Dec 2018 11:12:42 +0000 (11:12 +0000)] 
* lto-symtab.c (lto_symtab_merge_decls_2): Do not report ODR violations
for method whose basetype was already reported.

* ipa-devirt.c (odr_type_violation_reported_p): New.
* ipa-utils.h (odr_type_violation_reported_p): Declare.

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

6 years agoFix PR67974 for Darwin by adding an asm shim for AVX.
iains [Mon, 24 Dec 2018 09:02:03 +0000 (09:02 +0000)] 
Fix PR67974 for Darwin by adding an asm shim for AVX.

The PR is about a set of tests that were not executed because of
missing asm support.

However, the assembler can handle the insns now, so the tests are
attempted (but with a missing asm shim they fail).

This adds the shim.

In principle (bugs notwithstanding) Darwin’s x86_64 ABI is supposed
to follow the sysv psABI so we can have essentially a copy of the
Linux one.

2018-12-24  Iain Sandoe  <iain@sandoe.co.uk>

PR testsuite/67974
* gcc.target/x86_64/abi/avx/asm-support-darwin.s: New.

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

6 years agopowerpc-darwin, skip ident tests.
iains [Mon, 24 Dec 2018 08:55:01 +0000 (08:55 +0000)] 
powerpc-darwin, skip ident tests.

The c-c++-common tests fail (or XPASS depending on which) on
powerpc Darwin because it doesn't currently emit .ident marker.

Since there's no support for .ident in the assembler, we can't
enable the output and therefore these tests should be skipped.

2018-12-24  Iain Sandoe  <iain@sandoe.co.uk>

* c-c++-common/ident-0a.c: Skip for powerpc-darwin.
* c-c++-common/ident-0b.c: Likewise.
* c-c++-common/ident-1a.c: Likewise.
* c-c++-common/ident-1b.c: Likewise.
* c-c++-common/ident-2a.c: Likewise.
* c-c++-common/ident-2b.c: Likewise.

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

6 years agodarwin, configuration, check properly for dwarf2 debug line support
iains [Mon, 24 Dec 2018 08:43:20 +0000 (08:43 +0000)] 
darwin, configuration, check properly for dwarf2 debug line support

This corrects a long-standing misconfiguration for Darwin.
The assembler supports the “.file” and “.loc” directives, but
the GCC configury was not detecting this because it was
using objdump, which does not exist on most Darwin installations.

We added support for “otool” to GCC and now we can use that to
make the check that’s done with objdump on ELF targets.

2018-12-24  Iain Sandoe  <iain@sandoe.co.uk>

* configure.ac (dwarf2_debug_line): Check for the debug_line
section using otool when there’s no objdump available.
* configure: Regenerate.

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

6 years ago * ipa-utils.c (ipa_merge_profiles): Fix updating of fnsummary;
hubicka [Mon, 24 Dec 2018 01:37:44 +0000 (01:37 +0000)] 
* ipa-utils.c (ipa_merge_profiles): Fix updating of fnsummary;
also handle rescaling of mismatched profiles.
* ipa-fnsummary.c (analyze_function): Handle speculative edges.

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

6 years agoDaily bump.
gccadmin [Mon, 24 Dec 2018 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-12-23 François Dumont <fdumont@gcc.gnu.org>
fdumont [Sun, 23 Dec 2018 18:11:38 +0000 (18:11 +0000)] 
2018-12-23  François Dumont  <fdumont@gcc.gnu.org>

* libstdc++-v3/testsuite/util/testsuite_allocator.h
(CustomPointerAlloc<>::allocate(size_t, pointer)): Replace by...
(CustomPointerAlloc<>::allocate(size_t, const_void_pointer)): ...this.

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

6 years ago2018-12-23 François Dumont <fdumont@gcc.gnu.org>
fdumont [Sun, 23 Dec 2018 18:05:23 +0000 (18:05 +0000)] 
2018-12-23  François Dumont  <fdumont@gcc.gnu.org>

Respect pointer_traits on node deallocation in _ReuseOrAllocNode
parenthesis operator.

* include/bits/hashtable_policy.h
(_Hashtable_alloc<>::_M_deallocate_node_ptr(__node_type*)): New.
(_Hashtable_alloc<>::_M_deallocate_node(__node_type*)): Use latter.
(_ReuseOrAllocNode<>::operator<_Arg>()(_Arg&&)): Likewise.

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

6 years ago2018-12-23 Paul Thomas <pault@gcc.gnu.org>
pault [Sun, 23 Dec 2018 17:35:13 +0000 (17:35 +0000)] 
2018-12-23  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/77703
* resolve.c (get_temp_from_expr): Use the string length of
constant character expressions.

2018-12-23  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/77703
* gfortran.dg/ptr_func_assign_5.f08 : New test.

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

6 years ago * builtins.h (c_strlen_data): Add new fields and comments.
law [Sun, 23 Dec 2018 16:00:45 +0000 (16:00 +0000)] 
* builtins.h (c_strlen_data): Add new fields and comments.
* builtins.c (unterminated_array): Change field reference from
"len" to "minlen" in c_strlen_data instance.
* gimple-fold.c (get_range_strlen): Likewise.
* gimple-ssa-sprintf.c (get_string_length): Likewise.

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

6 years ago * builtins.c (unterminated_array): Rename "data" to "lendata". Fix
law [Sun, 23 Dec 2018 15:49:43 +0000 (15:49 +0000)] 
* builtins.c (unterminated_array): Rename "data" to "lendata".  Fix
a few comments.
(expand_builtin_strnlen, expand_builtin_stpcpy_1): Likewise.
(fold_builtin_strlen): Likewise.
* gimple-fold.c (get_range_strlen): Likewise.  Also rename a couple
instances of "type" to "optype" and "arg" to "fld".

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

6 years ago2018-12-23 Martin Sebor <msebor@redhat.com>
law [Sun, 23 Dec 2018 15:37:28 +0000 (15:37 +0000)] 
2018-12-23  Martin Sebor  <msebor@redhat.com>
    Jeff Law  <law@redhat.com>

* builtins.c (unterminated_array): Use empty brace initialization
for c_strlen_data.
(c_strlen, expand_builtin_strnlen): Likewise.
(expand_builtin_stpcpy_1, fold_builtin_strlen): Likewise.
* gimple-fold.c (get_range_strlen): Likewise.
(gimple_fold_builtin_stpcpy): Likewise.
* gimple-ssa-sprintf.c (get_string_length): Likewise.

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

6 years ago[RS6000] PR88346, Inconsistent list of CPUs supported after r266502
amodra [Sun, 23 Dec 2018 13:28:20 +0000 (13:28 +0000)] 
[RS6000] PR88346, Inconsistent list of CPUs supported after r266502

This patch removes the %e error for AIX, since it seems there has been
no attempt to keep cpu support up to date for AIX, and adds missing
entries to ASM_CPU_SPEC in rs6000.h.  The rs64a->rs64 name change
happened a long time ago as a fix for PR20813 (git commit c92b4c3f5b).

PR 88346
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Correct %e message.  Handle
-mcpu=rs64, not -mcpu=rs64a.  Handle -mcpu=powerpc64 and -mcpu=titan.
* config/rs6000/driver-rs6000.c (asm_names): Similarly.
* config/rs6000/aix71.h (ASM_CPU_SPEC): Delete %e message.  Handle
-mcpu=rs64, not -mcpu=rs64a.
* config/rs6000/aix72.h (ASM_CPU_SPEC): Likewise.

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

6 years agoFix Ada bootstrap for Darwin9 and earlier.
iains [Sun, 23 Dec 2018 12:51:52 +0000 (12:51 +0000)] 
Fix Ada bootstrap for Darwin9 and earlier.

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

gcc/ada/

* adaint.c [__APPLE__] (__gnat_lwp_self): Ensure that the system
interface used is available on the target.

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

6 years agoLTO-wrapper, don't pre-link early debug objects.
iains [Sun, 23 Dec 2018 12:43:47 +0000 (12:43 +0000)] 
LTO-wrapper, don't pre-link early debug objects.

Pass them to the final link, the pre-link wasn't effective.
Make the temp filenames easier to follow.
Also save them in the CWD when save-temps is given.

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

* lto-wrapper.c (tool_cleanup): Don’t report ficticious temp files.
(debug_objcopy): Improve temp filenames.  Append the early
debug objects to the outfiles.  Remove the phase prelinking the
early debug. Emit the early debug filenames for ld.

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

6 years agoFix ident tests by Enabling ident output for X86 Darwin.
iains [Sun, 23 Dec 2018 11:04:14 +0000 (11:04 +0000)] 
Fix ident tests by Enabling ident output for X86 Darwin.

The c-c++-common tests fail (or XPASS depending on which) on Darwin
because it doesn't currently emit .ident marker.  For X86 Darwin, this
is a trivial oversight; the assembler supports the directive.  We can
therefore use the default target hook there.

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

        * config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New.

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

6 years agouse simple-object instead of nm to determine if files contain LTO.
iains [Sun, 23 Dec 2018 10:43:59 +0000 (10:43 +0000)] 
use simple-object instead of nm to determine if files contain LTO.

This replaces the use of nm to search for the LTO common symbol marker
and uses simple object to see if there's a section starting with
".gnu.lto_." or ".gnu.offload_lto_"

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

* collect2.c (maybe_run_lto_and_relink): Don’t say we have a temp file
unless we actually did some LTO.
(has_lto_section, is_lto_object_file): New.
(maybe_lto_object_file): Remove.
(scan_prog_file): Use is_lto_object_file() instead of scanning the
output of nm.

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

6 years agoHandle -save-temps in collect2
iains [Sun, 23 Dec 2018 10:35:28 +0000 (10:35 +0000)] 
Handle -save-temps in collect2

Handle the option, make the saved filenames and paths easier to handle.
Don't print '[Leaving...]' for files we never created and don't exist - or unless
verbose is true.

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

* collect2.c (main): Parse the output file early so we can make nicer
temp names.  Respond to “-save-temps” in the GCC OPTIONS.
(maybe_unlink): Don’t print “[Leaving…”] for files we never created
and don’t exist.

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

6 years agoEnsure collect2 responds to intended commmand line options.
iains [Sun, 23 Dec 2018 10:28:51 +0000 (10:28 +0000)] 
Ensure collect2 responds to intended commmand line options.

To ensure compatibility with the flags consumed by ld, some of the flags
needed by collect2 come from the command line and some are passed
in the COLLECT_GCC_OPTIONS.

Here we combine initial parses of both and then set the LTO mode accordingly.

2018-12-23  Iain Sandoe  <iain@sandoe.co.uk>

* collect2.c (main): Combine flags from both the command line and
COLLECT_GCC_OPTIONS to determine the set in force

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

6 years ago2018-12-22 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sun, 23 Dec 2018 05:18:27 +0000 (05:18 +0000)] 
2018-12-22  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88328
* io.c (resolve_tag_format): Add error for zero-sized array.
(gfc_resolve_dt): Manipulate gfc_current_locus to get sensible error
message locus.

2018-12-22  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88328
* gfortran.dg/pr88328.f90: New test.

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

6 years agoDaily bump.
gccadmin [Sun, 23 Dec 2018 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago Remove support for demangling GCC 2.x era mangling schemes.
jason [Sun, 23 Dec 2018 00:06:34 +0000 (00:06 +0000)] 
Remove support for demangling GCC 2.x era mangling schemes.

libiberty/
* cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname,
internal_cplus_demangle, and all subroutines.
(libiberty_demanglers): Remove entries for ancient GNU (pre-3.0),
Lucid, ARM, HP, and EDG demangling styles.
(cplus_demangle): Remove 'work' variable.  Don't call
internal_cplus_demangle.
include/
* demangle.h: Remove support for ancient GNU (pre-3.0), Lucid,
ARM, HP, and EDG demangling styles.

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

6 years ago * ipa-utils.c (ipa_merge_profiles): Recompute summaries.
hubicka [Sat, 22 Dec 2018 21:13:41 +0000 (21:13 +0000)] 
* ipa-utils.c (ipa_merge_profiles): Recompute summaries.

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

6 years ago * tree.c: (obj_type_ref_class): Move to...
hubicka [Sat, 22 Dec 2018 20:06:52 +0000 (20:06 +0000)] 
* tree.c: (obj_type_ref_class): Move to...
* ipa-devirt.c (obj_type_ref_class): Move to here; lookup main
odr type.
(get_odr_type): Compensate for type simplification.

* g++.dg/ipa/devirt-30.C: Add dg-do.
* g++.dg/lto/devirt-1_0.C: New testcase.
* g++.dg/lto/devirt-2_0.C: New testcase.
* g++.dg/lto/devirt-3_0.C: New testcase.
* g++.dg/lto/devirt-4_0.C: New testcase.
* g++.dg/lto/devirt-5_0.C: New testcase.
* g++.dg/lto/devirt-6_0.C: New testcase.
* g++.dg/lto/devirt-13_0.C: New testcase.
* g++.dg/lto/devirt-14_0.C: New testcase.
* g++.dg/lto/devirt-19_0.C: New testcase.
* g++.dg/lto/devirt-22_0.C: New testcase.
* g++.dg/lto/devirt-23_0.C: New testcase.
* g++.dg/lto/devirt-30_0.C: New testcase.
* g++.dg/lto/devirt-34_0.C: New testcase.

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

6 years ago[Patch, PowerPC/Darwin] Fix library export of long double symbols.
iains [Sat, 22 Dec 2018 20:06:47 +0000 (20:06 +0000)] 
[Patch, PowerPC/Darwin] Fix library export of long double symbols.

During 8.x, the rs6000 target-specific mangling was reorganised which uncovered
a long-standing bug in Darwin’s mangling for ‘IBM’ long double.  Now the symbols
are correctly mangled, and we end up with a bunch of test link fails.

This patch adds the necessary subset of the Linux long double exports to Darwin’s
export table.

2018-12-22  Iain Sandoe  <iain@sandoe.co.uk>

* /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.

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

6 years ago2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org>
kargl [Sat, 22 Dec 2018 19:37:06 +0000 (19:37 +0000)] 
2018-12-22  Steven G . Kargl  <kargl@gcc.gnu.org>

PR fortran/85798
* decl.c (gfc_match_data): If a component of a derived type entity
appears in data statement, check that does not have the allocatable
attribute.

2018-12-22  Steven G . Kargl  <kargl@gcc.gnu.org>

PR fortran/85798
* gfortran.dg/pr85798.f90: New test.

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

6 years ago2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Sat, 22 Dec 2018 17:26:12 +0000 (17:26 +0000)] 
2018-12-21  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88169
* module.c (mio_namelist): Remove an error condition/message that
is contrary to the Fortran standard.

2018-12-21  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88169
* gfortran.dg/pr88169_1.f90: new test.
* gfortran.dg/pr88169_2.f90: Ditto.
* gfortran.dg/pr88169_3.f90: Ditto.

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

6 years ago2018-12-22 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sat, 22 Dec 2018 14:21:01 +0000 (14:21 +0000)] 
2018-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

    Backport from trunk
    PR fortran/85544
    * gfortran.dg/power_7.f90: New test.

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

6 years ago2018-12-22 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sat, 22 Dec 2018 14:14:44 +0000 (14:14 +0000)] 
2018-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/85544
* frontend-passes.c (optimize_power): Remove.
(optimize_op): Remove call to optimize_power.
* trans-expr.c (gfc_conv_power_op): Handle cases of 1**integer,
(2|4|8|16) ** integer and (-1) ** integer.

2018-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/85544
* gfortran.dg/power_7.f90: New test.

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

6 years agoDaily bump.
gccadmin [Sat, 22 Dec 2018 00:16:32 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Fri, 21 Dec 2018 21:09:17 +0000 (21:09 +0000)] 
2018-12-21  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/69121
* ieee/ieee_arithmetic.F90: Provide missing interfaces for IEEE_SCALB.

2018-12-21  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/69121
* gfortran.dg/ieee/ieee_9.f90: New test.

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

6 years ago PR c++/86524
jakub [Fri, 21 Dec 2018 19:58:36 +0000 (19:58 +0000)] 
PR c++/86524
PR c++/88446
* cp-tree.h (cp_fold_maybe_rvalue, cp_fold_rvalue): Declare.
(fold_non_dependent_expr): Add manifestly_const_eval argument.
* constexpr.c (cxx_eval_builtin_function_call): Evaluate
__builtin_constant_p if ctx->manifestly_const_eval even in constexpr
functions.  Don't reuse dummy{1,2} vars between different arguments.
Use cp_fold_rvalue instead of cp_fully_fold.  Fix comment typo.
(fold_non_dependent_expr): Add manifestly_const_eval argument, pass
it through to cxx_eval_outermost_constant_expr and
maybe_constant_value.
* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): No longer
static.
* semantics.c (finish_static_assert): Call fold_non_dependent_expr
with true as manifestly_const_eval.

* g++.dg/cpp1y/constexpr-86524.C: New test.
* g++.dg/cpp2a/is-constant-evaluated4.C: New test.
* g++.dg/cpp2a/is-constant-evaluated5.C: New test.
* g++.dg/cpp2a/is-constant-evaluated6.C: New test.

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

6 years agocorrect double semi-colons
pault [Fri, 21 Dec 2018 19:25:02 +0000 (19:25 +0000)] 
correct double semi-colons

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

6 years ago PR middle-end/85594
jakub [Fri, 21 Dec 2018 19:17:13 +0000 (19:17 +0000)] 
PR middle-end/85594
PR middle-end/88553
* omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
if needed.
(expand_omp_for_generic): Don't clobber t temporary for ordered loops.

* gcc.dg/gomp/pr85594.c: New test.
* gcc.dg/gomp/pr88553.c: New test.

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

6 years ago PR ipa/88561
hubicka [Fri, 21 Dec 2018 19:13:06 +0000 (19:13 +0000)] 
PR ipa/88561
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Handle
arguments of thunks correctly.
(ipa_polymorphic_call_context::get_dynamic_context): Be ready for
NULL instance pinter.
* lto-cgraph.c (lto_output_node): Always stream thunk info.

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

6 years ago2018-12-21 Paul Thomas <pault@gcc.gnu.org>
pault [Fri, 21 Dec 2018 19:09:42 +0000 (19:09 +0000)] 
2018-12-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87881
* expr.c (find_inquiry_ref): Loop through the inquiry refs in
case there are two of them.
(simplify_ref_chain): Return true after a successful call to
find_inquiry_ref.

2018-12-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87881
* gfortran.dg/inquiry_part_ref_4.f90: New test.

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

6 years agoS/390: Add support for double<->long vector converts
krebbel [Fri, 21 Dec 2018 18:57:00 +0000 (18:57 +0000)] 
S/390: Add support for double<->long vector converts

gcc/ChangeLog:

2018-12-21  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/vector.md ("floatv2div2df2", "floatunsv2div2df2")
("fix_truncv2dfv2di2", "fixuns_truncv2dfv2di2"): New pattern
definitions.

gcc/testsuite/ChangeLog:

2018-12-21  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/vector/fp-signedint-convert-1.c: New test.
* gcc.target/s390/vector/fp-unsignedint-convert-1.c: New test.

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

6 years ago * gcc.target/i386/pr88418.c (dg-options): Add -mno-avx.
uros [Fri, 21 Dec 2018 18:13:22 +0000 (18:13 +0000)] 
    * gcc.target/i386/pr88418.c (dg-options): Add -mno-avx.

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

6 years agoUpdate maintainer email address
thopre01 [Fri, 21 Dec 2018 17:53:03 +0000 (17:53 +0000)] 
Update maintainer email address

2018-12-21  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    * MAINTAINERS (Write After Approval): Update my maintainer address.

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

6 years ago * MAINTAINERS (Write After Approval): Add myself.
gergo [Fri, 21 Dec 2018 17:23:16 +0000 (17:23 +0000)] 
* MAINTAINERS (Write After Approval): Add myself.

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

6 years ago PR rtl-optimization/87727
ebotcazou [Fri, 21 Dec 2018 16:09:23 +0000 (16:09 +0000)] 
PR rtl-optimization/87727
* combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine
again moves from leaf hard registers.

* final.c (final_scan_insn_1) <NOTE_INSN_INLINE_ENTRY>: Minor tweak.

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

6 years ago PR target/88522
jakub [Fri, 21 Dec 2018 16:01:53 +0000 (16:01 +0000)] 
PR target/88522
* config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask,
*avx512pf_gatherpf<mode>df_mask, *avx512pf_scatterpf<mode>sf_mask,
*avx512pf_scatterpf<mode>df_mask): Use %X5 instead of %5 for
-masm=intel.
(gatherq_mode): Remove mode iterator.
(*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2): Use X instead
of <xtg_mode>.
(*avx512f_gatherdi<mode>): Use X instead of <gatherq_mode>.
(*avx512f_gatherdi<mode>_2, *avx512f_scattersi<mode>,
*avx512f_scatterdi<mode>): Use %X5 for -masm=intel.

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

6 years ago PR rtl-optimization/88563
jakub [Fri, 21 Dec 2018 15:54:55 +0000 (15:54 +0000)] 
PR rtl-optimization/88563
* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Swap innermode
and mode arguments to convert_modes.  Likewise swap mode and word_mode
arguments.  Handle both arguments with VOIDmode before convert_modes
of one of them.  Formatting fixes.

* gcc.dg/pr88563.c: New test.

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

6 years ago PR target/88556
uros [Fri, 21 Dec 2018 13:30:58 +0000 (13:30 +0000)] 
PR target/88556
* internal-fn.def (COSH): New.
(SINH): Ditto.
(TANH): Ditto.
* optabs.def (cosh_optab): New.
(sinh_optab): Ditto.
(tanh_optab): Ditto.
* config/i386/i386-protos.h (ix86_emit_i387_sinh): New prototype.
(ix86_emit_i387_cosh): Ditto.
(ix86_emit_i387_tanh): Ditto.
* config/i386/i386.c (ix86_emit_i387_sinh): New function.
(ix86_emit_i387_cosh): Ditto.
(ix86_emit_i387_tanh): Ditto.
* config/i386/i386.md (sinhxf2): New expander.
(sinh<mode>2): Ditto.
(coshxf2): Ditto.
(cosh<mode>2): Ditto.
(tanhxf2): Ditto.
(tanh<mode>2): Ditto.

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

6 years ago PR c++/87125
jakub [Fri, 21 Dec 2018 12:11:57 +0000 (12:11 +0000)] 
PR c++/87125
* g++.dg/cpp0x/pr87125.C: New test.

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

6 years ago[ARM] Fix size-optimization-ieee testcase failure
thopre01 [Fri, 21 Dec 2018 11:49:04 +0000 (11:49 +0000)] 
[ARM] Fix size-optimization-ieee testcase failure

On some version of dejagnu, options in RUNTESTFLAGS are appended to the
command-line and thus any -mfloat-abi=softfp or -mfloat-abi=hard in
there overwrite the -mfloat-abi=soft in the dg-options for
size-optimization-ieee-* tests. Test is still run though because
arm_soft_ok returns true if -mfloat-abi=soft is accepted, even if the
file is not compiled for softfloat due to a later -mfloat-abi on the
command line.

This patch adds a dg-skip-if to those tests to ensure they are not run
in softfp or hard mode.

2018-12-21  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/testsuite/
    * gcc.target/arm/size-optimization-ieee-1.c: Skip if passing
    -mfloat-abi=softfp or -mfloat-abi=hard.
    * gcc.target/arm/size-optimization-ieee-2.c: Likewise.
    * gcc.target/arm/size-optimization-ieee-3.c: Likewise.

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

6 years ago PR target/88547
jakub [Fri, 21 Dec 2018 10:37:11 +0000 (10:37 +0000)] 
PR target/88547
* config/i386/i386.c (ix86_expand_int_sse_cmp): Optimize
x > y ? 0 : -1 into min (x, y) == x ? -1 : 0.

* gcc.target/i386/pr88547-1.c: Expect only 2 knotb and 2 knotw
insns instead of 4, check for vpminud, vpminuq and no vpsubd or
vpsubq.
* gcc.target/i386/sse2-pr88547-1.c: New test.
* gcc.target/i386/sse2-pr88547-2.c: New test.
* gcc.target/i386/sse4_1-pr88547-1.c: New test.
* gcc.target/i386/sse4_1-pr88547-2.c: New test.
* gcc.target/i386/avx2-pr88547-1.c: New test.
* gcc.target/i386/avx2-pr88547-2.c: New test.
* gcc.target/i386/avx512f-pr88547-2.c: New test.
* gcc.target/i386/avx512vl-pr88547-1.c: New test.
* gcc.target/i386/avx512vl-pr88547-2.c: New test.
* gcc.target/i386/avx512vl-pr88547-3.c: New test.
* gcc.target/i386/avx512f_cond_move.c (y): Change from unsigned int
array to int array.

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

6 years agox86: VAESDEC{,LAST} allow memory inputs
jbeulich [Fri, 21 Dec 2018 09:31:30 +0000 (09:31 +0000)] 
x86: VAESDEC{,LAST} allow memory inputs

They are no different from their VAESENC{,LAST} counterparts in this
regard.

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

6 years agosupport --with-multilib-list=@name for ARM
aoliva [Fri, 21 Dec 2018 05:40:53 +0000 (05:40 +0000)] 
support --with-multilib-list=@name for ARM

Introduce @name as a means to specify alternate multilib profiles as
arguments to --with-multilib-list.

So far this is only implemented for ARM.

for  gcc/ChangeLog

* config.gcc (tmake_file): Add name to tmake_file for
        each @name in --with-multilib-list on arm-*-* targets.
* doc/install.texi (with-multilib-list): Document it.

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

6 years ago PR c++/88196 - ICE with class non-type template parameter.
mpolacek [Fri, 21 Dec 2018 03:34:06 +0000 (03:34 +0000)] 
PR c++/88196 - ICE with class non-type template parameter.
* pt.c (convert_nontype_argument): If the expr is a PTRMEM_CST, also
check if the type we're converting it to is TYPE_PTRMEM_P.

* g++.dg/cpp0x/ptrmem-cst-arg1.C: Tweak dg-error.
* g++.dg/cpp2a/nontype-class10.C: New test.
* g++.dg/template/pr54858.C: Tweak dg-error.

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

6 years ago * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
jakub [Fri, 21 Dec 2018 01:03:33 +0000 (01:03 +0000)] 
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
DR_TARGET_ALIGNMENT on dr_info rather than dr.  Spelling fixes.

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

6 years agoDaily bump.
gccadmin [Fri, 21 Dec 2018 00:16:33 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-12-20 Joern Rennecke <joern.rennecke@riscy-ip.com>
amylaar [Thu, 20 Dec 2018 23:00:00 +0000 (23:00 +0000)] 
2018-12-20  Joern Rennecke  <joern.rennecke@riscy-ip.com>

        * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Don't do
        versioning for data accesses with misaligned step.

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

6 years agoC/C++: Add -Waddress-of-packed-member
hjl [Thu, 20 Dec 2018 21:41:48 +0000 (21:41 +0000)] 
C/C++: Add -Waddress-of-packed-member

When address of packed member of struct or union is taken, it may result
in an unaligned pointer value.  This patch adds -Waddress-of-packed-member
to check alignment at pointer assignment and warn unaligned address as
well as unaligned pointer:

$ cat x.i
struct pair_t
{
  char c;
  int i;
} __attribute__ ((packed));

extern struct pair_t p;
int *addr = &p.i;
$ gcc -O2 -S x.i
x.i:8:13: warning: taking address of packed member of ‘struct pair_t’ may result in an unaligned pointer value [-Waddress-of-packed-member]
8 | int *addr = &p.i;
  |             ^

$ cat c.i
struct B { int i; };
struct C { struct B b; } __attribute__ ((packed));

long* g8 (struct C *p) { return p; }
$ gcc -O2 -S c.i -Wno-incompatible-pointer-types
c.i: In function ‘g8’:
c.i:4:18: warning: converting a packed ‘struct C *’ pointer (alignment 1) to ‘long int *’ (alignment 8) may may result in an unaligned pointer value [-Waddress-of-packed-member]
4 | long* g8 (struct C *p) { return p; }
  |                  ^
c.i:2:8: note: defined here
2 | struct C { struct B b; } __attribute__ ((packed));
  |        ^
$

This warning is enabled by default.  Since read_encoded_value_with_base
in unwind-pe.h has

  union unaligned
    {
      void *ptr;
      unsigned u2 __attribute__ ((mode (HI)));
      unsigned u4 __attribute__ ((mode (SI)));
      unsigned u8 __attribute__ ((mode (DI)));
      signed s2 __attribute__ ((mode (HI)));
      signed s4 __attribute__ ((mode (SI)));
      signed s8 __attribute__ ((mode (DI)));
    } __attribute__((__packed__));
  _Unwind_Internal_Ptr result;

and GCC warns:

gcc/libgcc/unwind-pe.h:210:37: warning: taking address of packed member of 'union unaligned' may result in an unaligned pointer value [-Waddress-of-packed-member]
    result = (_Unwind_Internal_Ptr) u->ptr;
                                    ^
we need to add GCC pragma to ignore -Waddress-of-packed-member.

gcc/

PR c/51628
* doc/invoke.texi: Document -Wno-address-of-packed-member.

gcc/c-family/

PR c/51628
* c-common.h (warn_for_address_or_pointer_of_packed_member): New.
* c-warn.c (check_alignment_of_packed_member): New function.
(check_address_of_packed_member): Likewise.
(check_and_warn_address_of_packed_member): Likewise.
(warn_for_address_or_pointer_of_packed_member): Likewise.
* c.opt: Add -Wno-address-of-packed-member.

gcc/c/

PR c/51628
* c-typeck.c (convert_for_assignment): Call
warn_for_address_or_pointer_of_packed_member.

gcc/cp/

PR c/51628
* call.c (convert_for_arg_passing): Call
warn_for_address_or_pointer_of_packed_member.
* typeck.c (convert_for_assignment): Likewise.

gcc/testsuite/

PR c/51628
* c-c++-common/pr51628-1.c: New test.
* c-c++-common/pr51628-2.c: Likewise.
* c-c++-common/pr51628-3.c: Likewise.
* c-c++-common/pr51628-4.c: Likewise.
* c-c++-common/pr51628-5.c: Likewise.
* c-c++-common/pr51628-6.c: Likewise.
* c-c++-common/pr51628-7.c: Likewise.
* c-c++-common/pr51628-8.c: Likewise.
* c-c++-common/pr51628-9.c: Likewise.
* c-c++-common/pr51628-10.c: Likewise.
* c-c++-common/pr51628-11.c: Likewise.
* c-c++-common/pr51628-12.c: Likewise.
* c-c++-common/pr51628-13.c: Likewise.
* c-c++-common/pr51628-14.c: Likewise.
* c-c++-common/pr51628-15.c: Likewise.
* c-c++-common/pr51628-26.c: Likewise.
* c-c++-common/pr51628-27.c: Likewise.
* c-c++-common/pr51628-28.c: Likewise.
* c-c++-common/pr51628-29.c: Likewise.
* c-c++-common/pr51628-30.c: Likewise.
* c-c++-common/pr51628-31.c: Likewise.
* c-c++-common/pr51628-32.c: Likewise.
* gcc.dg/pr51628-17.c: Likewise.
* gcc.dg/pr51628-18.c: Likewise.
* gcc.dg/pr51628-19.c: Likewise.
* gcc.dg/pr51628-20.c: Likewise.
* gcc.dg/pr51628-21.c: Likewise.
* gcc.dg/pr51628-22.c: Likewise.
* gcc.dg/pr51628-23.c: Likewise.
* gcc.dg/pr51628-24.c: Likewise.
* gcc.dg/pr51628-25.c: Likewise.
* c-c++-common/asan/misalign-1.c: Add
-Wno-address-of-packed-member.
* c-c++-common/asan/misalign-2.c: Likewise.
* c-c++-common/ubsan/align-2.c: Likewise.
* c-c++-common/ubsan/align-4.c: Likewise.
* c-c++-common/ubsan/align-6.c: Likewise.
* c-c++-common/ubsan/align-7.c: Likewise.
* c-c++-common/ubsan/align-8.c: Likewise.
* c-c++-common/ubsan/align-10.c: Likewise.
* g++.dg/ubsan/align-2.C: Likewise.
* gcc.target/i386/avx512bw-vmovdqu16-2.c: Likewise.
* gcc.target/i386/avx512f-vmovdqu32-2.c: Likewise.
* gcc.target/i386/avx512f-vmovdqu64-2.c: Likewise.
* gcc.target/i386/avx512vl-vmovdqu16-2.c: Likewise.
* gcc.target/i386/avx512vl-vmovdqu32-2.c: Likewise.
* gcc.target/i386/avx512vl-vmovdqu64-2.c: Likewise.

libgcc/

* unwind-pe.h (read_encoded_value_with_base): Add GCC pragma
to ignore -Waddress-of-packed-member.

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

6 years ago2018-12-20 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Thu, 20 Dec 2018 19:39:30 +0000 (19:39 +0000)] 
2018-12-20  Steven G. Kargl  <kargl@gcc.gnu.org>

* libgfortran/ieee/ieee_arithmetic.F90: Re-organize file to
eliminate #ifdef ... #endif.  No functional change.

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

6 years agoFix filesystem::path tests that fail on Windows
redi [Thu, 20 Dec 2018 18:12:11 +0000 (18:12 +0000)] 
Fix filesystem::path tests that fail on Windows

* testsuite/27_io/filesystem/operations/proximate.cc: Fix test for
MinGW.
* testsuite/27_io/filesystem/path/append/source.cc: Likewise.
* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.

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

6 years ago2018-12-20 Vladimir Makarov <vmakarov@redhat.com>
vmakarov [Thu, 20 Dec 2018 18:07:51 +0000 (18:07 +0000)] 
2018-12-20  Vladimir Makarov  <vmakarov@redhat.com>

PR target/88457
* ira-color.c (fast_allocation): Choose the best cost hard reg.

2018-12-20  Vladimir Makarov  <vmakarov@redhat.com>

PR target/88457
* ira-color.c (fast_allocation): Choose the best cost hard reg.

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

6 years ago PR c++/88180
jakub [Thu, 20 Dec 2018 17:34:19 +0000 (17:34 +0000)] 
PR c++/88180
* parser.c (cp_parser_class_specifier_1): If
cp_parser_check_type_definition fails, skip default arguments, NSDMIs,
etc. like for erroneous template args.

* g++.dg/parse/pr88180.C: New test.
* g++.dg/pr85039-1.C: Don't expect diagnostics inside of the type
definition's NSDMIs.

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

6 years ago * cp-tree.h (cp_fully_fold_init): Declare.
jakub [Thu, 20 Dec 2018 17:31:05 +0000 (17:31 +0000)] 
* cp-tree.h (cp_fully_fold_init): Declare.
* cp-gimplify.c (cp_fully_fold_init): New function.
* typeck2.c (split_nonconstant_init, store_init_value): Use it
instead of cp_fully_fold.

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

6 years ago[AArch64][SVE] Add ABS support
rsandifo [Thu, 20 Dec 2018 16:34:31 +0000 (16:34 +0000)] 
[AArch64][SVE] Add ABS support

For some reason we missed ABS out of the list of supported integer
operations when adding the SVE port initially.

2018-12-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/iterators.md (SVE_INT_UNARY, fp_int_op): Add abs.
(SVE_FP_UNARY): Sort.

gcc/testsuite/
* gcc.target/aarch64/pr64946.c: Force nosve.
* gcc.target/aarch64/ssadv16qi.c: Likewise.
* gcc.target/aarch64/usadv16qi.c: Likewise.
* gcc.target/aarch64/vect-abs-compile.c: Likewise.
* gcc.target/aarch64/sve/abs_1.c: New test.

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

6 years ago[AArch64][SVE] Fix IFN_COND_FMLA movprfx alternative
rsandifo [Thu, 20 Dec 2018 16:32:46 +0000 (16:32 +0000)] 
[AArch64][SVE] Fix IFN_COND_FMLA movprfx alternative

This patch fixes a cut-&-pasto in the (match_dup 4) version of
"cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>".  (It's a shame
that there's so much cut-&-paste in these patterns, but it's hard
to avoid without more infrastructure.)

2018-12-20  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_4): Use
sve_fmla_op rather than sve_fmad_op for the movprfx alternative.

gcc/testsuite/
* gcc.target/aarch64/sve/fmla_2.c: New test.
* gcc.target/aarch64/sve/fmla_2_run.c: Likewise

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

6 years agoPR tree-optimization/84053 - missing -Warray-bounds accessing a local array across...
msebor [Thu, 20 Dec 2018 16:25:13 +0000 (16:25 +0000)] 
PR tree-optimization/84053 - missing -Warray-bounds accessing a local array across inlined function boundaries

gcc/testsuite/ChangeLog:
* gcc.dg/Warray-bounds-36.c: New test.

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

6 years ago-Wtautological-compare: fix comparison of macro expansions
dmalcolm [Thu, 20 Dec 2018 14:18:48 +0000 (14:18 +0000)] 
-Wtautological-compare: fix comparison of macro expansions

gcc/c-family/ChangeLog:
PR c++/87504
* c-warn.c (get_outermost_macro_expansion): New function.
(spelled_the_same_p): Use it to unwind the macro expansions, and
compare the outermost macro in each nested expansion, rather than
the innermost.

gcc/testsuite/ChangeLog:
PR c++/87504
* c-c++-common/Wtautological-compare-8.c: New test.

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

6 years ago[PR 88214] Assert that ptr is a pointer
jamborm [Thu, 20 Dec 2018 14:14:22 +0000 (14:14 +0000)] 
[PR 88214] Assert that ptr is a pointer

2018-12-20  Martin Jambor  <mjambor@suse.cz>

PR ipa/88214
* tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Assert that
ptr is a pointer.

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

6 years agoAdd missing test from previous commit
redi [Thu, 20 Dec 2018 12:32:17 +0000 (12:32 +0000)] 
Add missing test from previous commit

* testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test
(missed from previous commit).

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

6 years ago2018-12-20 Richard Biener <rguenther@suse.de>
rguenth [Thu, 20 Dec 2018 11:39:59 +0000 (11:39 +0000)] 
2018-12-20  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84362
* tree-ssa-loop-im.c: Include alias.h, builtins.h and tree-dfa.h.
(struct im_mem_ref): add ref_canonical flag.
(struct mem_ref_hasher): Use ao_ref as compare_type.
(mem_ref_hasher::equal): Adjust and add variant comparing ao_ref
parts.
(mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical
member.
(gather_mem_refs_stmt): Set up ao_ref early and do the lookup
using it.  If we have non-equal refs canonicalize the one
in the hashtable used for insertion.
(tree_ssa_lim_initialize): Adjust.

* g++.dg/vect/pr84362.cc: New testcase.

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

6 years agofix typo.
luoxhu [Thu, 20 Dec 2018 08:44:42 +0000 (08:44 +0000)] 
fix typo.

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

6 years ago PR target/88547
jakub [Thu, 20 Dec 2018 07:58:02 +0000 (07:58 +0000)] 
PR target/88547
* config/i386/i386.c (ix86_expand_sse_movcc): For maskcmp, try to
emit vpmovm2? instruction perhaps after knot?.  Reorganize code
so that it doesn't have to test !maskcmp in almost every conditional.

* gcc.target/i386/pr88547-1.c: New test.

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

6 years ago[RS6000] Fix non-linux powerpc breakage
amodra [Thu, 20 Dec 2018 01:08:14 +0000 (01:08 +0000)] 
[RS6000] Fix non-linux powerpc breakage

svn r266496, git commit ab6b1bb456f broke non-linux powerpc builds
due to GNU_USER_DYNAMIC_LINKER being undefined.

* config/rs6000/sysv4.h (GNU_USER_DYNAMIC_LINKER): Define.

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

6 years agoDaily bump.
gccadmin [Thu, 20 Dec 2018 00:16:44 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-12-19 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Wed, 19 Dec 2018 22:31:25 +0000 (22:31 +0000)] 
2018-12-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/87992
* resolve.c (resolve_fl_variable): Avoid a NULL pointer.

2018-12-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/87992
* gfortran.dg/pr87992.f90: New test.

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

6 years ago2018-12-19 Andreas Tobler <andreast@gcc.gnu.org>
andreast [Wed, 19 Dec 2018 21:41:03 +0000 (21:41 +0000)] 
2018-12-19  Andreas Tobler  <andreast@gcc.gnu.org>

* config.gcc: Enable TARGET_DEFAULT_ASYNC_UNWIND_TABLES on
aarch64*-*-freebsd*

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

6 years ago * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Rename from
uros [Wed, 19 Dec 2018 20:44:59 +0000 (20:44 +0000)] 
* config/i386/i386.md (SWI1248_AVX512BWDQ_64): Rename from
SWI1248_AVX512BWDQ2_64.  Unconditionally enable HImode.
(*cmp<mode>_ccz_1): Emit kortest instead of ktest insn.
Use SWI1248_AVX512BWDQ_64 mode iterator and enable only for
TARGET_AVX512F.

testsuite/ChangeLog:

* gcc.target/i386/avx512dq-pr82855.c: Update scan-assembler pattern.

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

6 years agoFix grammar in libstdc++ ABI history documentation
redi [Wed, 19 Dec 2018 20:16:57 +0000 (20:16 +0000)] 
Fix grammar in libstdc++ ABI history documentation

* doc/xml/manual/abi.xml: Add missing word.

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

6 years ago[ARM] Optimize executable size when using softfloat fmul/dmul
thopre01 [Wed, 19 Dec 2018 17:34:18 +0000 (17:34 +0000)] 
[ARM] Optimize executable size when using softfloat fmul/dmul

Softfloat single precision and double precision floating-point
multiplication routines in libgcc share some code with the
floating-point division of their corresponding precision. As the code
is structured now, this leads to *all* division code being pulled in an
executable in softfloat mode even if only multiplication is
performed.

This patch create some new LIB1ASMFUNCS macros to also build files with
just the multiplication and shared code as weak symbols. By putting
these earlier in the static library, they can then be picked up when
only multiplication is used and they are overriden by the global
definition in the existing file containing both multiplication and
division code when division is needed.

The patch also removes changes made to the FUNC_START and ARM_FUNC_START
macros in r218124 since the intent was to put multiplication and
division code into their own section in a later patch to achieve the
same size optimization. That approach relied on specific section layout
to ensure multiplication and division were not too far from the shared
bit of code in order to the branches to be within range. Due to lack of
guarantee regarding section layout, in particular with all the
possibility of linker scripts, this approach was chosen instead. This
patch keeps the two testcases that were posted by Tony Wang on the mailing
list to implement this approach and adds a new one.

2018-12-19  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    libgcc/
    * /config/arm/lib1funcs.S (FUNC_START): Remove unused sp_section
    parameter and corresponding code.
    (ARM_FUNC_START): Likewise in both definitions.
    Also update footer comment about condition that need to match with
    gcc/config/arm/elf.h to also include libgcc/config/arm/t-arm.
    * config/arm/ieee754-df.S (muldf3): Also build it if L_arm_muldf3 is
    defined.  Weakly define it in this case.
    * config/arm/ieee754-sf.S (mulsf3): Likewise with L_arm_mulsf3.
    * config/arm/t-elf (LIB1ASMFUNCS): Build _arm_muldf3.o and
    _arm_mulsf3.o before muldiv versions if targeting Thumb-1 only. Add
    comment to keep condition in sync with the one in
    libgcc/config/arm/lib1funcs.S and gcc/config/arm/elf.h.

    gcc/
    * config/arm/elf.h: Update comment about condition that need to
    match with libgcc/config/arm/lib1funcs.S to also include
    libgcc/config/arm/t-arm.
    * doc/sourcebuild.texi (output-exists, output-exists-not): Rename
    subsubsection these directives are in to "Check for output files".
    Move scan-symbol to that section and add to it new scan-symbol-not
    directive.

2018-12-19  Tony Wang  <tony.wang@arm.com>
    Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/testsuite/
    * lib/lto.exp (lto-execute): Define output_file and testname_with_flags
    to same value as execname.
    (scan-symbol): Move and rename to ...
    * lib/gcc-dg.exp (scan-symbol-common): This.  Adapt into a
    helper function returning true or false if a symbol is present.
    (scan-symbol): New procedure.
    (scan-symbol-not): Likewise.
    * gcc.target/arm/size-optimization-ieee-1.c: New testcase.
    * gcc.target/arm/size-optimization-ieee-2.c: Likewise.
    * gcc.target/arm/size-optimization-ieee-3.c: Likewise.

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

6 years ago[nvptx] Add PTX_CTA_SIZE
vries [Wed, 19 Dec 2018 17:16:10 +0000 (17:16 +0000)] 
[nvptx] Add PTX_CTA_SIZE

2018-12-19  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (PTX_CTA_SIZE): Define.

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

6 years agoc++, asm: Do not handle any asm-qualifiers in top-level asm
segher [Wed, 19 Dec 2018 16:22:47 +0000 (16:22 +0000)] 
c++, asm: Do not handle any asm-qualifiers in top-level asm

Previously, "volatile" was allowed.  Changing this simplifies the code,
makes things more regular, and makes the C and C++ frontends handle
this the same way.

cp/
* parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers
on top-level asm.

testsuite/
* g++.dg/asm-qual-3.C: New testcase.
* gcc.dg/asm-qual-3.c: New testcase.

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

6 years agoc/c++, asm: Use nicer error for const and restrict
segher [Wed, 19 Dec 2018 16:16:05 +0000 (16:16 +0000)] 
c/c++, asm: Use nicer error for const and restrict

Not all qualifiers are asm qualifiers.  We can talk about that in a
nicer way than just giving a generic parser error.

This also adds two testcases for C++, that previously were for C only.

c/
* c-parser.c (c_parser_asm_statement) <RID_CONST, RID_RESTRICT>: Give
a more specific error message (instead of just falling through).

cp/
* parser.c (cp_parser_asm_definition) <RID_CONST, RID_RESTRICT>: Give
a more specific error message (instead of just falling through).

testsuite/
* g++.dg/asm-qual-1.C: New testcase.
* g++.dg/asm-qual-2.C: New testcase.
* gcc.dg/asm-qual-1.c: Update.

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

6 years agoc/c++, asm: Use nicer error for duplicate asm qualifiers
segher [Wed, 19 Dec 2018 16:12:17 +0000 (16:12 +0000)] 
c/c++, asm: Use nicer error for duplicate asm qualifiers

Also as suggested by Jason.

c/
* c-parser.c (c_parser_asm_statement): Keep track of the location each
asm qualifier is first seen; use that to give nicer "duplicate asm
qualifier" messages.  Delete 'quals" variable, instead pass the
"is_volatile_ flag to build_asm_stmt directly.
* c-tree.h (build_asm_stmt): Make the first arg bool instead of tree.
* c-typeck.c (build_asm_stmt): Ditto; adjust.

cp/
* parser.c (cp_parser_asm_definition): Rewrite the loop to work without
"done" boolean variable.
* parser.c (cp_parser_asm_definition): Keep track of the location each
asm qualifier is first seen; use that to give nicer "duplicate asm
qualifier" messages.

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

6 years agoc/c++, asm: Write the asm-qualifier loop without "done" boolean
segher [Wed, 19 Dec 2018 15:55:28 +0000 (15:55 +0000)] 
c/c++, asm: Write the asm-qualifier loop without "done" boolean

As suggested by Jason.

c/
* c-parser.c (c_parser_asm_statement): Rewrite the loop to work without
"done" boolean variable.

cp/
* parser.c (cp_parser_asm_definition): Rewrite the loop to work without
"done" boolean variable.

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

6 years agoC++: better locations for bogus initializations (PR c++/88375)
dmalcolm [Wed, 19 Dec 2018 15:22:27 +0000 (15:22 +0000)] 
C++: better locations for bogus initializations (PR c++/88375)

PR c++/88375 reports that errors relating to invalid conversions in
initializations are reported at unhelpfully vague locations, as in
e.g.:

enum struct a : int {
  one, two
};

struct foo {
  int e1, e2;
  a e3;
} arr[] = {
  { 1, 2, a::one },
  { 3, a::two },
  { 4, 5, a::two }
};

for which g++ trunk emits the vague:

pr88375.cc:12:1: error: cannot convert 'a' to 'int' in initialization
   12 | };
      | ^

with the error at the final closing brace.

This patch uses location information for the initializers, converting the
above to:

pr88375.cc:10:11: error: cannot convert 'a' to 'int' in initialization
   10 |   { 3, a::two },
      |        ~~~^~~
      |           |
      |           a

highlighting which subexpression is problematic, and its type.

Ideally we'd also issue a note showing the field decl being initialized,
but that turned out to be more invasive.

gcc/cp/ChangeLog:
PR c++/88375
* typeck.c (convert_for_assignment): Capture location of rhs
before stripping, and if available.  Use the location when
complaining about bad conversions, labelling it with the
rhstype if the location was present.
* typeck2.c (digest_init_r): Capture location of init before
stripping.

gcc/testsuite/ChangeLog:
PR c++/88375
* g++.dg/init/pr88375-2.C: New test.
* g++.dg/init/pr88375.C: New test.

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

6 years ago[openacc] Make oacc_fn_attrib_level external
vries [Wed, 19 Dec 2018 15:20:06 +0000 (15:20 +0000)] 
[openacc] Make oacc_fn_attrib_level external

Expose oacc_fn_attrib_level to be used in backends.

2018-12-19  Tom de Vries  <tdevries@suse.de>

* omp-offload.c (oacc_fn_attrib_level): Remove static.
* omp-offload.h (oacc_fn_attrib_level): Declare.

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

6 years ago[openacc] Add oacc_get_default_dim
vries [Wed, 19 Dec 2018 15:19:56 +0000 (15:19 +0000)] 
[openacc] Add oacc_get_default_dim

Expose oacc_default_dims to backends.

2018-12-19  Tom de Vries  <tdevries@suse.de>

* omp-offload.c (oacc_get_default_dim): New function.
* omp-offload.h (oacc_get_default_dim): Declare.

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

6 years agoC++: improvements to binary operator diagnostics (PR c++/87504)
dmalcolm [Wed, 19 Dec 2018 15:15:42 +0000 (15:15 +0000)] 
C++: improvements to binary operator diagnostics (PR c++/87504)

The C frontend is able (where expression locations are available) to print
problems with binary operators in 3-location form, labelling the types of
the expressions:

  arg_0 op arg_1
  ~~~~~ ^~ ~~~~~
    |        |
    |        arg1 type
    arg0 type

The C++ frontend currently just shows the combined location:

  arg_0 op arg_1
  ~~~~~~^~~~~~~~

and fails to highlight where the subexpressions are, or their types.

This patch introduces a op_location_t struct for handling the above
operator-location vs combined-location split, and a new
class binary_op_rich_location for displaying the above, so that the
C++ frontend is able to use the more detailed 3-location form for
type mismatches in binary operators, and for -Wtautological-compare
(where types are not displayed).  Both forms can be seen in this
example:

bad-binary-ops.C:69:20: error: no match for 'operator&&' (operand types are
  's' and 't')
   69 |   return ns_4::foo && ns_4::inner::bar;
      |          ~~~~~~~~~ ^~ ~~~~~~~~~~~~~~~~
      |                |                   |
      |                s                   t
bad-binary-ops.C:69:20: note: candidate: 'operator&&(bool, bool)' <built-in>
   69 |   return ns_4::foo && ns_4::inner::bar;
      |          ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~

The patch also allows for some uses of macros in
-Wtautological-compare, where both sides of the comparison have
been spelled the same way, e.g.:

Wtautological-compare-ranges.c:23:11: warning: self-comparison always
   evaluates to true [-Wtautological-compare]
   23 |   if (FOO == FOO);
      |           ^~

gcc/c-family/ChangeLog:
PR c++/87504
* c-common.h (warn_tautological_cmp): Convert 1st param from
location_t to const op_location_t &.
* c-warn.c (find_array_ref_with_const_idx_r): Call fold_for_warn
when testing for INTEGER_CST.
(warn_tautological_bitwise_comparison): Convert 1st param from
location_t to const op_location_t &; use it to build a
binary_op_rich_location, and use this.
(spelled_the_same_p): New function.
(warn_tautological_cmp): Convert 1st param from location_t to
const op_location_t &.  Warn for macro expansions if
spelled_the_same_p.  Use binary_op_rich_location.

gcc/c/ChangeLog:
PR c++/87504
* c-typeck.c (class maybe_range_label_for_tree_type_mismatch):
Move from here to gcc-rich-location.h and gcc-rich-location.c.
(build_binary_op): Use struct op_location_t and
class binary_op_rich_location.

gcc/cp/ChangeLog:
PR c++/87504
* call.c (op_error): Convert 1st param from location_t to
const op_location_t &.  Use binary_op_rich_location for binary
ops.
(build_conditional_expr_1): Convert 1st param from location_t to
const op_location_t &.
(build_conditional_expr): Likewise.
(build_new_op_1): Likewise.
(build_new_op): Likewise.
* cp-tree.h (build_conditional_expr): Likewise.
(build_new_op): Likewise.
(build_x_binary_op): Likewise.
(cp_build_binary_op): Likewise.
* parser.c (cp_parser_primary_expression): Build a location
for id-expression nodes.
(cp_parser_binary_expression): Use an op_location_t when
calling build_x_binary_op.
(cp_parser_operator): Build a location for user-defined literals.
* typeck.c (build_x_binary_op): Convert 1st param from location_t
to const op_location_t &.
(cp_build_binary_op): Likewise.  Use binary_op_rich_location.

gcc/ChangeLog:
PR c++/87504
* gcc-rich-location.c
(maybe_range_label_for_tree_type_mismatch::get_text): Move here from
c/c-typeck.c.
(binary_op_rich_location::binary_op_rich_location): New ctor.
(binary_op_rich_location::use_operator_loc_p): New function.
* gcc-rich-location.h
(class maybe_range_label_for_tree_type_mismatch)): Move here from
c/c-typeck.c.
(struct op_location_t): New forward decl.
(class binary_op_rich_location): New class.
* tree.h (struct op_location_t): New struct.

gcc/testsuite/ChangeLog:
* c-c++-common/Wtautological-compare-ranges.c: New test.
* g++.dg/cpp0x/pr51420.C: Add -fdiagnostics-show-caret and update
expected output.
* g++.dg/diagnostic/bad-binary-ops.C: Update expected output from
1-location form to 3-location form, with labelling of ranges with
types.  Add examples of id-expression nodes with namespaces.
* g++.dg/diagnostic/param-type-mismatch-2.C: Likewise.

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

6 years agoC++: more location wrapper nodes (PR c++/43064, PR c++/43486)
dmalcolm [Wed, 19 Dec 2018 15:08:21 +0000 (15:08 +0000)] 
C++: more location wrapper nodes (PR c++/43064, PR c++/43486)

This is v6 of the patch, as posted to:
  https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01331.html

The C++ frontend gained various location wrapper nodes in r256448 (GCC 8).
That patch:
  https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00799.html
added wrapper nodes around all nodes with !CAN_HAVE_LOCATION_P for:

* arguments at callsites, and for

* typeid, alignof, sizeof, and offsetof.

This is a followup to that patch, adding many more location wrappers
to the C++ frontend.  It adds location wrappers for nodes with
!CAN_HAVE_LOCATION_P to:

* all literal nodes (in cp_parser_primary_expression)

* all id-expression nodes (in finish_id_expression), except within a
  decltype.

* all mem-initializer nodes within a mem-initializer-list
  (in cp_parser_mem_initializer)

However, the patch also adds some suppressions: regions in the parser
for which wrapper nodes will not be created:

* within a template-parameter-list or template-argument-list (in
  cp_parser_template_parameter_list and cp_parser_template_argument_list
  respectively), to avoid encoding the spelling location of the nodes
  in types.  For example, "array<10>" and "array<10>" are the same type,
  despite the fact that the two different "10" tokens are spelled in
  different locations in the source.

* within a gnu-style attribute (none of are handlers are set up to cope
  with location wrappers yet)

* within various OpenMP clauses

The patch enables various improvements to locations for bad
initializations, for -Wchar-subscripts, and enables various other
improvements in the followup patch.

For example, given the followup buggy mem-initializer:

class X {
  X() : bad(42),
        good(42)
  { }
  void* bad;
  int good;
};

previously, our diagnostic was on the final close parenthesis of the
mem-initializer-list, leaving it unclear where the problem is:

t.cc: In constructor 'X::X()':
t.cc:3:16: error: invalid conversion from 'int' to 'void*' [-fpermissive]
    3 |         good(42)
      |                ^
      |                |
      |                int

whereas with the patch we highlight which expression is bogus:

t.cc: In constructor 'X::X()':
t.cc:2:13: error: invalid conversion from 'int' to 'void*' [-fpermissive]
    2 |   X() : bad(42),
      |             ^~
      |             |
      |             int

Similarly, the diagnostic for this bogus initialization:

i.cc:1:44: error: initializer-string for array of chars is too long [-fpermissive]
    1 | char test[3][4] = { "ok", "too long", "ok" };
      |                                            ^

is improved by the patch so that it indicates which string is too long:

i.cc:1:27: error: initializer-string for array of chars is too long [-fpermissive]
    1 | char test[3][4] = { "ok", "too long", "ok" };
      |                           ^~~~~~~~~~

gcc/c-family/ChangeLog:
PR c++/43064
PR c++/43486
* c-common.c (unsafe_conversion_p): Fold any location wrapper.
(verify_tree): Handle location wrappers.
(c_common_truthvalue_conversion): Strip any location wrapper.
Handle CONST_DECL.
(fold_offsetof): Strip any location wrapper.
(complete_array_type): Likewise for initial_value.
(convert_vector_to_array_for_subscript): Call fold_for_warn on the
index before checking for INTEGER_CST.
* c-pretty-print.c (c_pretty_printer::primary_expression): Don't
print parentheses around location wrappers.
* c-warn.c (warn_logical_operator): Call fold_for_warn on op_right
before checking for INTEGER_CST.
(warn_tautological_bitwise_comparison): Call
tree_strip_any_location_wrapper on lhs, rhs, and bitop's operand
before checking for INTEGER_CST.
(readonly_error): Strip any location wrapper.
(warn_array_subscript_with_type_char): Strip location wrappers
before checking for INTEGER_CST.  Use the location of the index if
available.

gcc/ChangeLog:
PR c++/43064
PR c++/43486
* convert.c: Include "selftest.h".
(preserve_any_location_wrapper): New function.
(convert_to_pointer_maybe_fold): Update to handle location
wrappers.
(convert_to_real_maybe_fold): Likewise.
(convert_to_integer_1): Strip expr when using TREE_OVERFLOW.
Handle location wrappers when checking for INTEGER_CST.
(convert_to_integer_maybe_fold): Update to handle location
wrappers.
(convert_to_complex_maybe_fold): Likewise.
(selftest::test_convert_to_integer_maybe_fold): New functions.
(selftest::convert_c_tests): New function.
* convert.h (preserve_any_location_wrapper): New decl.
* fold-const.c (size_binop_loc): Strip location wrappers when
using TREE_OVERFLOW.
(operand_equal_p): Strip any location wrappers.
(integer_valued_real_p): Strip any location wrapper.
* selftest-run-tests.c (selftest::run_tests): Call
selftest::convert_c_tests.
* selftest.h (selftest::convert_c_tests): New decl.
* tree.c (build_complex): Assert that REAL and IMAG are constants.
(integer_zerop): Look through location wrappers.
(integer_onep): Likewise.
(integer_each_onep): Likewise.
(integer_all_onesp): Likewise.
(integer_minus_onep): Likewise.
(integer_pow2p): Likewise.
(integer_nonzerop): Likewise.
(integer_truep): Likewise.
(fixed_zerop): Likewise.
(real_zerop): Likewise.
(real_onep): Likewise.
(real_minus_onep): Likewise.
(tree_int_cst_equal): Likewise.
(simple_cst_equal): Treat location wrappers with non-equal source
locations as being unequal.
(uniform_integer_cst_p): Look through location wrappers.
(maybe_wrap_with_location): Don't create wrappers if any
auto_suppress_location_wrappers are active.
(suppress_location_wrappers): New variable.
(selftest::test_predicates): New test.
(selftest::tree_c_tests): Call it.
* tree.h (CONSTANT_CLASS_OR_WRAPPER_P): New macro.
(suppress_location_wrappers): New decl.
(class auto_suppress_location_wrappers): New class.

gcc/cp/ChangeLog:
PR c++/43064
PR c++/43486
* call.c (build_conditional_expr_1): Strip location wrappers when
checking for CONST_DECL.
(conversion_null_warnings): Use location of "expr" if available.
* class.c (fixed_type_or_null): Handle location wrappers.
* constexpr.c (potential_constant_expression_1): Likewise.
* cvt.c (ignore_overflows): Strip location wrappers when
checking for INTEGER_CST, and re-wrap the result if present.
(ocp_convert): Call fold_for_warn before checking for INTEGER_CST.
* decl.c (reshape_init_r): Strip any location wrapper.
(undeduced_auto_decl): Likewise.
* expr.c (mark_discarded_use): Likewise for expr.
* init.c (build_aggr_init): Likewise before checking init for
DECL_P.
(warn_placement_new_too_small): Call fold_for_warn on adj before
checking for CONSTANT_CLASS_P, and on nelts.  Strip any location
wrapper from op0 and on oper before checking for VAR_P.
* parser.c (cp_parser_primary_expression): Call
maybe_add_location_wrapper on numeric and string literals.
(cp_parser_postfix_expression): Strip any location wrapper when
checking for DECL_IS_BUILTIN_CONSTANT_P.
(cp_parser_unary_expression): Ensure that folding of NEGATE_EXPR
around a constant happens in the presence of location wrappers and
returns a wrapped result.
(cp_parser_has_attribute_expression): Strip any location wrapper
from "oper".
(cp_parser_binary_expression): Strip any location wrapper when
checking for DECL_P on the lhs.
(cp_parser_decltype): Strip any location wrapper from result of
cp_parser_decltype_expr.
(cp_parser_mem_initializer): Add location wrappers to the
parenthesized expression list.
(cp_parser_template_parameter_list): Don't create wrapper nodes
within a template-parameter-list.
(cp_parser_template_argument_list): Don't create wrapper nodes
within a template-argument-list.
(cp_parser_parameter_declaration): Strip location wrappers from
default arguments.
(cp_parser_gnu_attribute_list): Don't create wrapper nodes.
(cp_parser_std_attribute_spec_seq): Likewise.
(cp_parser_omp_all_clauses): Don't create wrapper nodes within
OpenMP clauses.
(cp_parser_omp_for_loop): Likewise.
(cp_parser_omp_declare_reduction_exprs): Likewise.
* pt.c (convert_nontype_argument_function): Strip location
wrappers from fn_no_ptr before checking for FUNCTION_DECL.
(tsubst_default_argument): Move note about which callsite led to
instantiation to after the check_default_argument call.
(do_auto_deduction): Likewise from init before checking for
DECL_P.
* semantics.c (force_paren_expr): Likewise from expr before
checking for DECL_P.
(finish_parenthesized_expr): Likewise from expr before
checking for STRING_CST.
(perform_koenig_lookup): Likewise from fn.
(finish_call_expr): Likewise.
(finish_id_expression): Rename to...
(finish_id_expression_1): ...this, calling
maybe_add_location_wrapper on the result.
(capture_decltype): Use lookup_name_real rather than value_member
when looking up decl within the capture-list.
* tree.c (cp_stabilize_reference): Strip any location wrapper.
(builtin_valid_in_constant_expr_p): Likewise.
(strip_typedefs_expr): Strip any location wrapper before checking
for decls or constants.
(is_overloaded_fn): Likewise.
(maybe_get_fns): Likewise.
(selftest::test_lvalue_kind): Verify lvalue_p.
* typeck.c (cxx_sizeof_expr): Strip any location wrapper.
(cxx_alignof_expr): Likewise.
(is_bitfield_expr_with_lowered_type): Handle location wrappers.
(cp_build_array_ref): Call maybe_constant_value on "idx".
(cp_build_binary_op): Strip location wrapper from first_arg before
checking for PARM_DECL.  Likewise for op1 before checking for
INTEGER_CST in two places.  Likewise for orig_op0 and orig_op1
when checking for STRING_CST.
(cp_build_addr_expr_1): Likewise for arg when checking for
FUNCTION_DECL.
(cp_build_modify_expr): Likewise for newrhs when checking for
STRING_CST.
(convert_for_assignment): Don't strip location wrappers when
stripping NON_LVALUE_EXPR.
(maybe_warn_about_returning_address_of_local): Strip location
wrapper from whats_returned before checking for DECL_P.
(can_do_nrvo_p): Strip location wrapper from retval.
(treat_lvalue_as_rvalue_p): Likewise.
(check_return_expr): Likewise.
* typeck2.c (cxx_incomplete_type_diagnostic): Strip location
wrapper from value before checking for VAR_P or PARM_DECL.
(digest_init_r): Strip location wrapper from init.  When
copying "init", also copy the wrapped node.

gcc/objc/ChangeLog:
PR c++/43064
PR c++/43486
* objc-act.c (objc_maybe_build_component_ref): Strip any location
wrapper before checking for UOBJC_SUPER_decl and self_decl.
(objc_finish_message_expr): Strip any location wrapper.
(gen_declaration): Strip location wrappers from "w".

gcc/testsuite/ChangeLog:
PR c++/43064
PR c++/43486
* c-c++-common/pr51712.c (valid2): Mark xfail as passing on C++.
* g++.dg/cpp0x/constexpr-47969.C: Update column of expected error.
* g++.dg/cpp0x/constexpr-ex2.C: Likewise.
* g++.dg/cpp0x/scoped_enum2.C: Likewise.
* g++.dg/cpp1z/decomp48.C: Update expected location of warning
for named local variables to use that of the local variable.
* g++.dg/ext/vla1.C: Update column.
* g++.dg/init/array43.C: Update expected column to be that of the
initializer.
* g++.dg/init/initializer-string-too-long.C: New test.
* g++.dg/init/new44.C: Add "-ftrack-macro-expansion=0".
* g++.dg/init/pr43064-1.C: New test.
* g++.dg/init/pr43064-2.C: New test.
* g++.dg/init/pr43064-3.C: New test.
* g++.dg/other/fold1.C: Update column of expected error.
* g++.dg/parse/crash36.C: Likewise.
* g++.dg/plugin/diagnostic-test-expressions-1.C: Add negative
integer and float expressions.
* g++.dg/template/defarg6.C: Move expected error to the default
argument; add expected message about where instantiated.
* g++.dg/wrappers/Wparentheses.C: New test.
* g++.old-deja/g++.bugs/900402_02.C: Update column of expected
error.

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

6 years ago[rs6000] Fix x86 SSSE3 compatibility implementations and testcases
pc [Wed, 19 Dec 2018 15:06:00 +0000 (15:06 +0000)] 
[rs6000] Fix x86 SSSE3 compatibility implementations and testcases

This patch is the analog to r266868-r266870, but for SSSE3.
The SSSE3 tests had been inadvertently made to PASS without actually running
the test code. Actually running the code turned up some previously undetected
issues.

This patch fixes some issues in the implementations, fixes up the tests
to use a union for the test data, which avoids strict aliasing issues,
and enables the tests to actually run (by removing a dependency on
__BUILTIN_CPU_SUPPORTS).

Also, there's a fairly insignificant change in the testcases that walk
through the data as pairs of vectors from:
  [0] and [1]
  [2] and [3]
  ...
  [n-4] and [n-3]
  [n-2] and [n-1]

to:
  [0] and [1]
  [1] and [2]
  ...
  [n-3] and [n-2]
  [n-2] and [n-1]

Since the testcases compute the correct answers based on the input, no
other changes were necessary to effect the change.

2018-12-19  Paul A. Clarke  <pc@us.ibm.com>

[gcc]

* config/rs6000/tmmintrin.h (_mm_hadds_epi16): Vector lanes swapped.
(_mm_hsub_epi32): Likewise.
(_mm_shuffle_epi8): Fix reversed interpretation of parameters.
(_mm_shuffle_pi8): Likewise.
(_mm_addubs_pi16): Likewise.

[gcc/testsuite]

* gcc.target/powerpc/ssse3-check.h: Enable tests to run.
* gcc.target/powerpc/ssse3-pabsb.c: Code fixes for strict aliasing
issues.
* gcc.target/powerpc/ssse3-pabsd.c: Likewise.
* gcc.target/powerpc/ssse3-palignr.c: Likewise.
* gcc.target/powerpc/ssse3-phaddd.c: Likewise.
* gcc.target/powerpc/ssse3-phaddsw.c: Likewise.
* gcc.target/powerpc/ssse3-phaddw.c: Likewise.
* gcc.target/powerpc/ssse3-phsubd.c: Likewise.
* gcc.target/powerpc/ssse3-phsubw.c: Likewise.
* gcc.target/powerpc/ssse3-pmulhrsw.c: Likewise.
* gcc.target/powerpc/ssse3-pshufb.c: Likewise.
* gcc.target/powerpc/ssse3-psignb.c: Likewise.
* gcc.target/powerpc/ssse3-psignd.c: Likewise.
* gcc.target/powerpc/ssse3-psignw.c: Likewise.
* gcc.target/powerpc/ssse3-vals.h: Provide input data as a union.

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

6 years ago[ARM] Do softfloat when -mfpu set, -mfloat-abi=softfp
thopre01 [Wed, 19 Dec 2018 15:01:41 +0000 (15:01 +0000)] 
[ARM] Do softfloat when -mfpu set, -mfloat-abi=softfp

FP instructions are only enabled for TARGET_32BIT and TARGET_HARD_FLOAT
but GCC only gives an error when TARGET_HARD_FLOAT is true and -mfpu is
not set. Among other things, it makes some of the cmse tests (eg.
gcc.target/arm/cmse/baseline/softfp.c) fail when targeting
-march=armv8-m.base -mcmse -mfpu=<something> -mfloat-abi=softfp. This
commit adds an extra check for TARGET_32BIT to TARGET_HARD_FLOAT such
that it is false on TARGET_THUMB1 targets even when a FPU is specified.

2018-12-19  thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/
    * config/arm/arm.h (TARGET_HARD_FLOAT): Restrict to TARGET_32BIT
    targets.
    * config/arm/arm.c (output_return_instruction): Only check
    TARGET_HARD_FLOAT to decide whether FP instructions are available.

    gcc/testsuite/
    * gcc.target/arm/cmse/baseline/softfp.c: Force an FPU.

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

6 years ago[nvptx] Commit passing pr85381-*.c test-cases
vries [Wed, 19 Dec 2018 14:20:54 +0000 (14:20 +0000)] 
[nvptx] Commit passing pr85381-*.c test-cases

Add pr85381*.c test-cases that are already passing without the fix for PR85381.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-19  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-c-c++-common/pr85381-2.c: New test.
* testsuite/libgomp.oacc-c-c++-common/pr85381-3.c: New test.
* testsuite/libgomp.oacc-c-c++-common/pr85381-4.c: New test.

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

6 years ago[nvptx, libgomp] Move rtl-dump test-cases to libgomp
vries [Wed, 19 Dec 2018 14:20:44 +0000 (14:20 +0000)] 
[nvptx, libgomp] Move rtl-dump test-cases to libgomp

The goacc.exp test-cases nvptx-merged-loop.c and nvptx-sese-1.c are failing
during linking due to missing libgomp.spec.

Move them to the libgomp testsuite.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-19  Tom de Vries  <tdevries@suse.de>

* gcc.dg/goacc/nvptx-merged-loop.c: Move to
libgomp/testsuite/libgomp.oacc-c-c++-common.
* gcc.dg/goacc/nvptx-sese-1.c: Same.

* testsuite/lib/libgomp.exp: Add load_lib of scanoffloadrtl.exp.
* testsuite/libgomp.oacc-c-c++-common/nvptx-merged-loop.c: Move from
gcc/testsuite/gcc.dg/goacc.
* testsuite/libgomp.oacc-c-c++-common/nvptx-sese-1.c: Same.

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

6 years ago[testsuite] Add scan-offload-rtl-dump
vries [Wed, 19 Dec 2018 14:20:33 +0000 (14:20 +0000)] 
[testsuite] Add scan-offload-rtl-dump

Add scan-offload-rtl-dump, similar to scan-offload-tree-dump.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-19  Tom de Vries  <tom@codesourcery.com>

* lib/scanoffloadrtl.exp: New file.
* gcc.dg-selftests/dg-final.exp (dg_final_directive_check_num_args): Add
offload-rtl.

* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
dump files): Add offload-rtl.

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