]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
5 years ago2018-07-19 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Thu, 19 Jul 2018 09:44:11 +0000 (09:44 +0000)] 
2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.old-deja/g++.mike/p784.C: Add -fpermissive.

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

5 years ago * wide-int.h (widest2_int): New.
aldyh [Thu, 19 Jul 2018 09:12:32 +0000 (09:12 +0000)] 
* wide-int.h (widest2_int): New.
* gimple-fold.c (arith_overflowed_p): Use it.
* tree.h (widest2_int_cst): New.
* tree-vrp.c (wide_int_binop_overflow): Rename from
vrp_int_const_binop.
Rewrite to work on trees.
(extract_range_from_multiplicative_op_1): Abstract code to...
(wide_int_range_min_max): ...here.
(wide_int_range_cross_product): ...and here.
(extract_range_from_binary_expr_1): Abstract overflow code to...
(wide_int_range_cross_product_wrapping): ...here.
* tree-vrp.h (wide_int_range_cross_product): New.
(wide_int_range_cross_product_wrapping): New.

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

5 years ago2018-07-19 Eli Zaretskii <eliz@gnu.org>
rguenth [Thu, 19 Jul 2018 08:47:34 +0000 (08:47 +0000)] 
2018-07-19  Eli Zaretskii  <eliz@gnu.org>

* simple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect
to ENOSYS.

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

5 years ago * config/i386/x86-tune-costs.h (skylake_memcpy,
jkoval [Thu, 19 Jul 2018 06:49:10 +0000 (06:49 +0000)] 
* config/i386/x86-tune-costs.h (skylake_memcpy,
skylake_memset): Replace rep_prefix with unrolling for size 512.

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

5 years agoDaily bump.
gccadmin [Thu, 19 Jul 2018 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

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

5 years agogcc/ChangeLog:
kugan [Wed, 18 Jul 2018 22:11:24 +0000 (22:11 +0000)] 
gcc/ChangeLog:

2018-07-18  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86544
* tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle comparision with EQ_EXPR
in last stmt.

gcc/testsuite/ChangeLog:

2018-07-18  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86544
* g++.dg/tree-ssa/pr86544.C: New test.

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

5 years agogcc/ChangeLog:
kelvin [Wed, 18 Jul 2018 21:31:04 +0000 (21:31 +0000)] 
gcc/ChangeLog:

2018-07-18  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename
this subsection to "PowerPC AltiVec/VSX Built-in Functions".
(PowerPC AltiVec/VSX Built-in Functions): New name for subsection
previously known as "PowerPC AltiVec Built-in Functions".  Move
some material to new subsubsections "PowerPC AltiVec Built-in
Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on
ISA 2.07".
(PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection.
(PowerPC Altivec Built-in Functions on ISA 2.06): Likewise.
(PowerPC Altivec Built-in Functions on ISA 2.07): Likewise.
(PowerPC Altivec Built-in Functions on ISA 3.0): Likewise.

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

5 years ago PR c++/86550
jakub [Wed, 18 Jul 2018 21:01:54 +0000 (21:01 +0000)] 
PR c++/86550
* parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.

* g++.dg/cpp0x/lambda/lambda-86550.C: New test.

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

5 years agolibcpp:
edlinger [Wed, 18 Jul 2018 19:36:01 +0000 (19:36 +0000)] 
libcpp:
2018-07-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR 69558
        * macro.c (enter_macro_context): Change the location info for builtin
        macros and _Pragma from location of the closing parenthesis to location
        of the macro expansion point.

testsuite:
2018-07-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR 69558
        * c-c++-common/cpp/diagnostic-pragma-2.c: New test.
        * c-c++-common/pr69558.c: Remove xfail.
        * gcc.dg/cpp/builtin-macro-1.c: Adjust test expectations.
        * gcc.dg/pr61817-1.c: Likewise.
        * gcc.dg/pr61817-2.c: Likewise.
        * g++.dg/plugin/pragma_plugin.c: Warn at expansion_point_location.

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

5 years ago2018-07-18 Janus Weil <janus@gcc.gnu.org>
janus [Wed, 18 Jul 2018 18:31:59 +0000 (18:31 +0000)] 
2018-07-18  Janus Weil  <janus@gcc.gnu.org>
    Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/85599
* dump-parse-tree.c (show_attr): Add handling of implicit_pure.
* frontend-passes.c (do_warn_function_elimination): Do not warn for
pure functions.
* gfortran.h: Add prototypes for gfc_pure_function and
gfc_implicit_pure_function.
* gfortran.texi: Add chapter on evaluation of logical expressions.
* invoke.texi: Mention that -Wfunction-elimination is implied
by -Wextra.
* lang.opt: Make -Wextra imply -Wfunction-elimination.
* resolve.c (pure_function): Rename to gfc_pure_function.
(gfc_implicit_pure_function): New function.
(check_pure_function): Use it here.
(impure_function_callback): New function.
(resolve_operator): Call it via gfc_expr_walker.

2018-07-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/85599
* gfortran.dg/function_optimize_5.f90: Add option
'-faggressive-function-elimination' and update dg-warning clauses.
* gfortran.dg/short_circuiting.f90: New test.

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

5 years ago PR c++/86190 - bogus -Wsign-conversion warning
mpolacek [Wed, 18 Jul 2018 13:13:11 +0000 (13:13 +0000)] 
PR c++/86190 - bogus -Wsign-conversion warning
* typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
sentinel.

* g++.dg/warn/Wsign-conversion-3.C: New test.
* g++.dg/warn/Wsign-conversion-4.C: New test.

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

5 years ago2018-07-18 Richard Biener <rguenther@suse.de>
rguenth [Wed, 18 Jul 2018 12:57:15 +0000 (12:57 +0000)] 
2018-07-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86557
* tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle
EXACT_DIV_EXPR.

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

5 years ago2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 18 Jul 2018 10:30:42 +0000 (10:30 +0000)] 
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* Fix typos in ChangeLog entries.

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

5 years ago/cp
paolo [Wed, 18 Jul 2018 10:27:12 +0000 (10:27 +0000)] 
/cp
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* class.c (note_name_declared_in_class): Prefer permerror + inform
to a pair of permerrors; use DECL_SOURCE_LOCATION.

/testsuite
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/ext/uow-3.C: Adjust.
* g++.dg/ext/uow-4.C: Likewise.
* g++.dg/lookup/name-clash11.C: Likewise.
* g++.dg/lookup/name-clash7.C: Likewise.
* g++.dg/lookup/redecl1.C: Likewise.
* g++.dg/warn/changes-meaning.C: Likewise.
* g++.old-deja/g++.jason/scoping8.C: Likewise.
* g++.old-deja/g++.law/nest1.C: Likewise.

/cp
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* decl.c (check_no_redeclaration_friend_default_args): New.
(duplicate_decls): Use the latter; also check that a friend
declaration specifying default arguments is a definition.

/testsuite
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* g++.dg/other/friend8.C: New.
* g++.dg/other/friend9.C: Likewise.
* g++.dg/other/friend10.C: Likewise.
* g++.dg/other/friend11.C: Likewise.
* g++.dg/other/friend12.C: Likewise.
* g++.dg/parse/defarg4.C: Compile with -fpermissive -w.
* g++.dg/parse/defarg8.C: Likewise.

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

5 years agoS/390: Add CFI for mcount call sequences
krebbel [Wed, 18 Jul 2018 06:58:39 +0000 (06:58 +0000)] 
S/390: Add CFI for mcount call sequences

2018-07-18  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/s390.c (s390_function_profiler): Generate CFI.

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

5 years ago2018-07-18 Richard Biener <rguenther@suse.de>
rguenth [Wed, 18 Jul 2018 06:54:23 +0000 (06:54 +0000)] 
2018-07-18  Richard Biener  <rguenther@suse.de>

PR debug/86523
cp/
* decl2.c (c_parse_final_cleanups): Call write_out_vars before
start_static_storage_duration_function sets current_function_decl.

* g++.dg/lto/pr86523-3_0.C: New testcase.

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

5 years ago * config/arm/arm.c (get_label_padding): Update for recent
law [Wed, 18 Jul 2018 04:55:03 +0000 (04:55 +0000)] 
* config/arm/arm.c (get_label_padding): Update for recent
changes to label_to_alignment.

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

5 years agoDaily bump.
gccadmin [Wed, 18 Jul 2018 00:16:31 +0000 (00:16 +0000)] 
Daily bump.

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

5 years ago PR tree-optimization/86010
law [Tue, 17 Jul 2018 23:54:10 +0000 (23:54 +0000)] 
PR tree-optimization/86010
* tree-ssa-dse.c (compute_trims): Fix typo/thinko.

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

5 years ago * config/mips/mips.c (vr4130_align_insns): Update for recent
law [Tue, 17 Jul 2018 20:52:20 +0000 (20:52 +0000)] 
* config/mips/mips.c (vr4130_align_insns): Update for recent
changes to label_to_alignment.

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

5 years ago * config/frv/frv.c (frv_label_align): Update for recent changes
law [Tue, 17 Jul 2018 20:30:49 +0000 (20:30 +0000)] 
   * config/frv/frv.c (frv_label_align): Update for recent changes
        to label_to_alignment.

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

5 years ago * config/nios2/nios2.c (nios2_label_align): Update for recent
law [Tue, 17 Jul 2018 20:23:25 +0000 (20:23 +0000)] 
* config/nios2/nios2.c (nios2_label_align): Update for recent
changes which dropped ALIGN_LABELS_LOG.

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

5 years agoFix invalid cc_status after [const_][us]mulsi3_highpart
schwab [Tue, 17 Jul 2018 18:42:42 +0000 (18:42 +0000)] 
Fix invalid cc_status after [const_][us]mulsi3_highpart

* config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart)
(smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT.

testsuite/:
* gcc.target/m68k/mulsi_highpart.c: New test.

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

5 years ago compiler: don't set btype_ too early for alias type
ian [Tue, 17 Jul 2018 18:27:22 +0000 (18:27 +0000)] 
compiler: don't set btype_ too early for alias type

    CL 123362 introduced a bug in creating alias type's backend
    representation. A type's btype_ should not be set before
    named types are converted if it is a placeholder. For alias
    type, it is set too early. This may result in unresolved
    placeholders. This CL fixes it.

    Reviewed-on: https://go-review.googlesource.com/123975

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

5 years ago * lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN,
jakub [Tue, 17 Jul 2018 18:10:57 +0000 (18:10 +0000)] 
* lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN,
CPP_DL_WARNING or CPP_DL_ERROR for note that diagnostics for C++ style
comments is reported only once per file and guard those calls on the
preceding cpp_error returning true.

* gcc.dg/cpp/pr61854-c90.c (foo): Expect a note, rather than error.
* gcc.dg/cpp/pr61854-c94.c (foo): Likewise.
* gcc.dg/cpp/pr61854-4.c (foo): Likewise.
* gcc.dg/cpp/pr61854-8.c: New test.

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

5 years ago * gcc.target/powerpc/pr85456.c: Require longdouble128.
dje [Tue, 17 Jul 2018 17:35:24 +0000 (17:35 +0000)] 
    * gcc.target/powerpc/pr85456.c: Require longdouble128.

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

5 years ago compiler: connect the concrete type and the placeholder for circular types
ian [Tue, 17 Jul 2018 17:21:10 +0000 (17:21 +0000)] 
compiler: connect the concrete type and the placeholder for circular types

    Previously, when creating the backend representation of a
    circular type, we resolve the placeholder to a
    circular_pointer_type. The backend doesn't know what the
    concrete type is.

    This CL changes it to resolve the placeholder to the concrete
    type instead, so the backend may have better knowledge of the
    concrete type.

    Reviewed-on: https://go-review.googlesource.com/123738

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

5 years ago2018-07-17 Fritz Reese <fritzoreese@gmail.com>
foreese [Tue, 17 Jul 2018 16:02:03 +0000 (16:02 +0000)] 
2018-07-17  Fritz Reese  <fritzoreese@gmail.com>

    gcc/testsuite/ChangeLog:

PR fortran/83184
* gfortran.dg/dec_structure_23.f90: Oops, "un-fix" error messages.

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

5 years ago[testsuite]
willschm [Tue, 17 Jul 2018 15:51:12 +0000 (15:51 +0000)] 
[testsuite]

2018-07-06  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-unpack-char.c: New.
* gcc.target/powerpc/fold-vec-unpack-float.c: New.
* gcc.target/powerpc/fold-vec-unpack-int.c: New.
* gcc.target/powerpc/fold-vec-unpack-pixel.c: New.
* gcc.target/powerpc/fold-vec-unpack-short.c: New.

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

5 years ago* gcc.target/powerpc/pr57150.c: Require longdouble128.
dje [Tue, 17 Jul 2018 15:41:47 +0000 (15:41 +0000)] 
* gcc.target/powerpc/pr57150.c: Require longdouble128.
* gcc.target/powerpc/pr79916.c: Require dfp.

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

5 years ago PR c++/86480 - nested variadic lambda and constexpr if.
jason [Tue, 17 Jul 2018 15:39:46 +0000 (15:39 +0000)] 
PR c++/86480 - nested variadic lambda and constexpr if.

* pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
IF_STMT_EXTRA_ARGS.
* tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
cp_unevaluated_operand.
[ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.

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

5 years agoPR libstdc++/86450 use -Wabi=2 and simplify -Werror use
redi [Tue, 17 Jul 2018 13:18:47 +0000 (13:18 +0000)] 
PR libstdc++/86450 use -Wabi=2 and simplify -Werror use

Use -Wabi=2 to fix warnings about -Wabi having no effect on its own.
This requires suppressing two warnings in src/c++11/debug.cc which do
not affect the library ABI.

Previously libstdc++ defaulted to --enable-werror but the -Werror flag
was not actually added unless --enable-maintainer-mode was used. This is
not documented and not the expected behaviour. This removes any special
treatment for maintainer-mode, makes -Werror depend directly on
--enable-werror, and changes the default to --enable-werror=no.

PR libstdc++/86450
* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
(GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
* configure: Regenerate.
* configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
* doc/Makefile.in: Regenerate.
* fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
from -Wabi=2 that don't affect exported symbols.
* src/c++98/Makefile.in: Regenerate.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

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

5 years agoRemove unused explicit instantiation of __bind_simple
redi [Tue, 17 Jul 2018 13:16:51 +0000 (13:16 +0000)] 
Remove unused explicit instantiation of __bind_simple

The explicit instantiation of std::call_once used to require an
instantiation of __bind_simple, but call_once was changed by r241031 to
not use __bind_simple. The instantiation of __bind_simple (and the
definitions it uses) are not needed. They should have been removed
instead of doing the changes in r241111 that kept them compiling.

The use of std::call_once by _Async_state_common::_M_join can be
simplified to use a pointer instead of reference wrapper. The call_once
symbol isn't exported so the change isn't visible outside the library.

* src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
(_Async_state_common::_M_join): Simplify use of std::call_once and
corresponding explicit instantiation.
(_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
(__bind_simple): Remove definitions and explicit instantiation that
are not required by exported symbols.

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

5 years ago[ARC] Don't use deprecated align_labels_log variable.
claziss [Tue, 17 Jul 2018 12:27:10 +0000 (12:27 +0000)] 
[ARC] Don't use deprecated align_labels_log variable.

2018-07-17  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_label_align): Use alogn_labels instead of
deprecated align_labels_log.

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

5 years ago2018-07-17 Richard Biener <rguenther@suse.de>
rguenth [Tue, 17 Jul 2018 12:26:21 +0000 (12:26 +0000)] 
2018-07-17  Richard Biener  <rguenther@suse.de>

PR lto/86456
* dwarf2out.c (init_sections_and_labels): Always generate
a debug_line_str_section for early LTO debug.
(dwarf2out_finish): Reset debug_line_str_hash output early.
Bump counter for extra dwarf5 .debug_loc labels to not conflict
with fat LTO part.
(dwarf2out_early_finish): Output debug_line_str.

* g++.dg/debug/dwarf2/pr86456.C: New testcase.

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

5 years agoS/390: Do not use LA with index register on z196 or newer.
rdapp [Tue, 17 Jul 2018 12:08:06 +0000 (12:08 +0000)] 
S/390: Do not use LA with index register on z196 or newer.

gcc/ChangeLog:

2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/s390.c (preferred_la_operand_p): Do not use LA with
index register on z196 or later.

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

5 years agoS/390: Set default function alignment to 16.
rdapp [Tue, 17 Jul 2018 12:05:07 +0000 (12:05 +0000)] 
S/390: Set default function alignment to 16.

gcc/ChangeLog:

2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/s390.c (s390_default_align): Set default function
alignment to 16.
(s390_override_options_after_change): Call s390_default align.
(s390_option_override_internal): Call s390_default_align.
(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define.

gcc/testsuite/ChangeLog:

2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>

* gcc.target/s390/function-align1.c: New test.
* gcc.target/s390/function-align2.c: New test.
* gcc.target/s390/function-align3.c: New test.

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

5 years ago PR middle-end/86542
jakub [Tue, 17 Jul 2018 10:54:52 +0000 (10:54 +0000)] 
PR middle-end/86542
* omp-low.c (create_task_copyfn): Copy over also fields corresponding
to _looptemp_ clauses, other than the first two.

* testsuite/libgomp.c++/pr86542.C: New test.

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

5 years ago * gcc-interface/decl.c (choices_to_gnu): Rename parameters. Deal with
ebotcazou [Tue, 17 Jul 2018 10:02:36 +0000 (10:02 +0000)] 
* gcc-interface/decl.c (choices_to_gnu): Rename parameters.  Deal with
an operand of Character type.  Factor out range generation to the end.
Check that the bounds are literals and convert them to the type of the
operand before building the ranges.
* gcc-interface/utils.c (make_dummy_type): Minor tweak.
(make_packable_type): Propagate TYPE_DEBUG_TYPE.
(maybe_pad_type): Likewise.

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

5 years agoAdd -fomit-frame-pointer to gcc.target/i386/vartrack-1.c
ro [Tue, 17 Jul 2018 09:43:57 +0000 (09:43 +0000)] 
Add -fomit-frame-pointer to gcc.target/i386/vartrack-1.c

* gcc.target/i386/vartrack-1.c (dg-options): Add
-fomit-frame-pointer.

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

5 years agoBuild gcc/testsuite/g++.dg/lto/pr86523-[12]_0.C as PIC
ro [Tue, 17 Jul 2018 09:41:11 +0000 (09:41 +0000)] 
Build gcc/testsuite/g++.dg/lto/pr86523-[12]_0.C as PIC

* g++.dg/lto/pr86523-1_0.C: Require fpic, shared support.
(dg-lto-options): Add -fPIC.
* g++.dg/lto/pr86523-2_0.C: Likewise.

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

5 years agoDo not enable OPT_falign_* for -Os.
marxin [Tue, 17 Jul 2018 09:22:14 +0000 (09:22 +0000)] 
Do not enable OPT_falign_* for -Os.

2018-07-17  Martin Liska  <mliska@suse.cz>

* opts.c: Do not enable OPT_falign_* for -Os.

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

5 years agoDefine MAX_CODE_ALIGN globally.
marxin [Tue, 17 Jul 2018 09:21:41 +0000 (09:21 +0000)] 
Define MAX_CODE_ALIGN globally.

2018-07-17  Martin Liska  <mliska@suse.cz>

* align.h (MAX_CODE_ALIGN): New.
(MAX_CODE_ALIGN_VALUE): New.
* common/config/i386/i386-common.c (ix86_handle_option):
(MAX_CODE_ALIGN): Moved to align.h.
* final.c (MAX_CODE_ALIGN): Likewise.
* opts.c (parse_and_check_align_values):
(MAX_CODE_ALIGN): Likewise.
(MAX_CODE_ALIGN_VALUE): Likewise.

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

5 years agoFix coding style of ASM_OUTPUT_ALIGN.
marxin [Tue, 17 Jul 2018 09:19:57 +0000 (09:19 +0000)] 
Fix coding style of ASM_OUTPUT_ALIGN.

2018-07-17  Martin Liska  <mliska@suse.cz>

* config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing
        in order to fulfil coding style.
* config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise.
* config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
* config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
* config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise.
* config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise.
* config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise.
* config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise.
* config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise.
(ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.

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

5 years agoClean up of new format of -falign-FOO.
marxin [Tue, 17 Jul 2018 09:19:27 +0000 (09:19 +0000)] 
Clean up of new format of -falign-FOO.

2018-07-17  Martin Liska  <mliska@suse.cz>

* align.h: New file.
* config/alpha/alpha.c (alpha_align_insns_1): Use align_functions directly.
* config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type
align_flags of label_to_alignment.
* config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into align_flags
class.
* config/m68k/m68k.c: Do not use removed align_labels_value and
align_loops_value.
* config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class.
(LOOP_ALIGN): Likewise.
(LABEL_ALIGN): Likewise.
* config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
Remove not used macro.
(rs6000_loop_align): Change return type to align_flags.
(rs6000_loop_align_max_skip): Remove.
* config/rs6000/rs6000-protos.h (rs6000_loop_align):
Change return type to align_flags.
* config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
Remove not used macro.
(rs6000_loop_align):  Change return type to align_flags.
(rs6000_loop_align_max_skip): Remove.
* config/rx/rx.h (JUMP_ALIGN): Wrap integer values
* config/rx/rx-protos.h (rx_align_for_label): Make it
        static function.
* config/rx/rx.c (rx_align_for_label): Change return type
        to align_flags.
(rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP
        macro definitions.
into align_flags class.
(LABEL_ALIGN): Likewise.
(LOOP_ALIGN): Likewise.
* config/s390/s390.c (s390_label_align): Use align_flags
class member.
(s390_asm_output_function_label): Likewise.
* config/sh/sh.c (sh_override_options_after_change):
Use align_flags class directly without macros.
(find_barrier): Likewise.
(barrier_align): Likewise.
(sh_loop_align): Likewise.
* config/spu/spu.c (spu_option_override):
Use align_flags_tuple::get_value instead of removed macros.
(spu_sched_init): Likewise.
* config/spu/spu.h (GTY): Likewise.
* config/visium/visium.c (visium_option_override):
Set "8" as default secondary alignment.
* config/visium/visium.h (SUBALIGN_LOG): Define to 3
in order to guarantee secondary alignment of 8.
* coretypes.h: Include align.h header file.
* doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP,
TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP
        and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros.
* doc/tm.texi.in: Likewise.
* final.c (struct label_alignment): Remove not used structure.
(LABEL_ALIGN): Change type to align_flags.
(LOOP_ALIGN): Likewise.
(JUMP_ALIGN): Likewise.
(default_loop_align_max_skip): Remove.
(default_label_align_max_skip): Likewise.
(default_jump_align_max_skip): Likewise.
(default_label_align_after_barrier_max_skip):
(LABEL_TO_ALIGNMENT): Change to access label_align vector.
(LABEL_TO_MAX_SKIP): Remove.
(label_to_alignment): Return align_flags type instead of integer.
(label_to_max_skip): Remove.
(align_fuzz): Use align_flags type.
(compute_alignments): Use align_flags type and use align_flags::max
to combine multiple alignments.
(grow_label_align): Grow vec instead of C array.
(update_alignments): Assign just LABEL_TO_ALIGNMENT.
(shorten_branches):  Use align_flags type and use align_flags::max
to combine multiple alignments.
(final_scan_insn_1): Remove usage of secondary alignment that comes
from label alignment, but instead use proper secondary alignment
which is computed in grow_label_align.
* flags.h (struct align_flags_tuple): Move to align.h.
(struct align_flags): Likewise.
(state_align_loops): Rename to align_loops.
(state_align_jumps): Rename to align_jumps.
(state_align_labels): Rename to align_labels.
(state_align_functions): Rename to align_functions.
(align_loops_log): Remove.
(align_jumps_log): Remove.
(align_labels_log): Remove.
(align_functions_log): Remove.
(align_loops_max_skip): Remove.
(align_jumps_max_skip): Remove.
(align_labels_max_skip): Remove.
(align_functions_max_skip): Remove.
(align_loops_value): Remove.
(align_jumps_value): Remove.
(align_labels_value): Remove.
(align_functions_value): Remove.
* output.h (label_to_alignment): Change return type to align_flags.
(label_to_max_skip): Remove.
* target.def: Remove loop_align_max_skip, label_align_max_skip,
jump_align_max_skip macros.
* targhooks.h (default_loop_align_max_skip): Remove.
(default_label_align_max_skip): Likewise.
(default_jump_align_max_skip): Likewise.
(default_label_align_after_barrier_max_skip): Remove.
* toplev.c (read_log_maxskip): Use ::normalize function.
(parse_N_M): Remove not used argument and also call ::normalize.
(parse_alignment_opts): Do not pass unused arguments.
* varasm.c (assemble_start_function): Use directly align_functions
instead of removed macros.
* system.h: Do not poison removed macros.
2018-07-17  Martin Liska  <mliska@suse.cz>

* gcc.target/powerpc/loop_align.c: Update scanned pattern.

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

5 years ago[Ada] Spurious error on prefixed call in an instantiation
pmderodat [Tue, 17 Jul 2018 08:13:28 +0000 (08:13 +0000)] 
[Ada] Spurious error on prefixed call in an instantiation

This patch fixes a spurious error on a prefixed call in an instance, when the
generic parameters include an interface type and an abstract operation of that
type, and the actuals in the instance include an interface type and a
corresponding abstract operation of it, with a different name than the
corresponding generic subprogram parameter. The patch also fixes a similar
error involving class-wide operations and generic private types.

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch4.adb (Try_Object_Operation): Handle properly a prefixed call
in an instance, when the generic parameters include an interface type
and a abstract operation of that type, and the actuals in the instance
include an interface type and a corresponding abstract operation of it,
with a different name than the corresponding generic subprogram
parameter.

gcc/testsuite/

* gnat.dg/generic_call_cw.adb, gnat.dg/generic_call_iface.adb: New
testcase.

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

5 years ago[Ada] Preserve original CE reason in more cases
pmderodat [Tue, 17 Jul 2018 08:12:51 +0000 (08:12 +0000)] 
[Ada] Preserve original CE reason in more cases

2018-07-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* sem_eval.adb (Rewrite_In_Raise_CE): Keep the original reason in more
cases.

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

5 years ago[Ada] Add provision for floating-point in Apply_Division_Check
pmderodat [Tue, 17 Jul 2018 08:12:46 +0000 (08:12 +0000)] 
[Ada] Add provision for floating-point in Apply_Division_Check

2018-07-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* checks.adb (Apply_Division_Check): Add provision for floating-point
checks.

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

5 years ago[Ada] Fix expansion of aggregates components rewritten to raise statements
pmderodat [Tue, 17 Jul 2018 08:12:14 +0000 (08:12 +0000)] 
[Ada] Fix expansion of aggregates components rewritten to raise statements

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_aggr.adb (Component_OK_For_Backend): If an array component of the
enclosing record has a bound that is out of range (and that has been
rewritten as a raise statement) the aggregate is not OK for any back
end, and should be expanded into individual assignments.

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

5 years ago[Ada] Reuse Is_Rewrite_Substitution in Relocate_Node
pmderodat [Tue, 17 Jul 2018 08:12:08 +0000 (08:12 +0000)] 
[Ada] Reuse Is_Rewrite_Substitution in Relocate_Node

Semantics not affected; the reused routine is exactly the same as the replaced
condition.

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* atree.adb (Relocate_Node): Simplify with Is_Rewrite_Substitution.

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

5 years ago[Ada] Fix RM rule references
pmderodat [Tue, 17 Jul 2018 08:11:49 +0000 (08:11 +0000)] 
[Ada] Fix RM rule references

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_util.ads (Denotes_Same_Object): Likewise.
* sem_warn.adb (Warn_On_Overlapping_Actuals): Fix RM rule references.

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

5 years ago[Ada] Fix incompatibility Default_Scalar_Storage_Order/tagged types
pmderodat [Tue, 17 Jul 2018 08:11:43 +0000 (08:11 +0000)] 
[Ada] Fix incompatibility Default_Scalar_Storage_Order/tagged types

The pragma Default_Scalar_Storage_Order cannot reliably be used to set the
non-default scalar storage order for a program that declares tagged types, if
it also declares user-defined primitives.

This is fixed by making Make_Tags use the same base array type as Make_DT and
Make_Secondary_DT when accessing the array of user-defined primitives.

2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_disp.adb (Make_Tags): When the type has user-defined primitives,
build the access type that is later used by Build_Get_Prim_Op_Address
as pointing to a subtype of Ada.Tags.Address_Array.

gcc/testsuite/

* gnat.dg/sso10.adb, gnat.dg/sso10_pkg.ads: New testcase.

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

5 years ago[Ada] Use standard version of s-memory.adb for mingw32
pmderodat [Tue, 17 Jul 2018 08:11:37 +0000 (08:11 +0000)] 
[Ada] Use standard version of s-memory.adb for mingw32

This patch switches mingw32 targets to use the standard version of s-memory.adb
as Windows now has the capability of limiting the amount of memory used by
process.

2018-07-17  Patrick Bernardi  <bernardi@adacore.com>

gcc/ada/

* libgnat/s-memory__mingw.adb: Remove.
* Makefile.rtl: Remove s-memory.adb target pair from the Cygwin/Mingw32
section.

gcc/testsuite/

* gnat.dg/memorytest.adb: New testcase.

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

5 years ago[Ada] Faulty ignored Ghost code removal
pmderodat [Tue, 17 Jul 2018 08:11:32 +0000 (08:11 +0000)] 
[Ada] Faulty ignored Ghost code removal

This patch ensures that removal of ignored Ghost code is the absolute last
operation performed on the tree. Previously the removal was performed prior to
issuing delayed warnings, however the warning mechanism may see a heavily
modified tree and fail.

No small reproducer available.

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* frontend.adb (Frontend): The removal of ignored Ghost code must be
the last semantic operation performed on the tree.

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

5 years ago[Ada] Configuration state not observed for instance bodies
pmderodat [Tue, 17 Jul 2018 08:11:28 +0000 (08:11 +0000)] 
[Ada] Configuration state not observed for instance bodies

This patch ensures that the processing of instantiated and inlined bodies uses
the proper configuration context available at the point of the instantiation or
inlining.

Previously configuration pragmas which appear prior to the context items of a
unit would lose their effect when a body is instantiated or inlined.

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* frontend.adb (Frontend): Update the call to Register_Config_Switches.
* inline.ads: Add new component Config_Switches to record
Pending_Body_Info which captures the configuration state of the pending
body.  Remove components Version, Version_Pragma, SPARK_Mode, and
SPARK_Mode_Pragma from record Pending_Body_Info because they are
already captured in component Config_Switches.
* opt.adb (Register_Opt_Config_Switches): Rename to
Register_Config_Switches.
(Restore_Opt_Config_Switches): Rename to Restore_Config_Switches.
(Save_Opt_Config_Switches): Rename to Save_Config_Switches. This
routine is now a function, and returns the saved configuration state as
an aggregate to avoid missing an attribute.
(Set_Opt_Config_Switches): Rename to Set_Config_Switches.
* opt.ads (Register_Opt_Config_Switches): Rename to
Register_Config_Switches.
(Restore_Opt_Config_Switches): Rename to Restore_Config_Switches.
(Save_Opt_Config_Switches): Rename to Save_Config_Switches. This
routine is now a function.
(Set_Opt_Config_Switches): Rename to Set_Config_Switches.
* par.adb (Par): Update the calls to configuration switch-related
subprograms.
* sem.adb (Semantics): Update the calls to configuration switch-related
subprograms.
* sem_ch10.adb (Analyze_Package_Body_Stub): Update the calls to
configuration switch-related subprograms.
(Analyze_Protected_Body_Stub): Update the calls to configuration
switch-related subprograms.
(Analyze_Subprogram_Body_Stub): Update calls to configuration
switch-related subprograms.
* sem_ch12.adb (Add_Pending_Instantiation): Update the capture of
pending instantiation attributes.
(Inline_Instance_Body): Update the capture of pending instantiation
attributes.  It is no longer needed to explicitly manipulate the SPARK
mode.
(Instantiate_Package_Body): Update the restoration of the context
attributes.
(Instantiate_Subprogram_Body): Update the restoration of context
attributes.
(Load_Parent_Of_Generic): Update the capture of pending instantiation
attributes.
(Set_Instance_Env): Update the way relevant configuration attributes
are saved and restored.

gcc/testsuite/

* gnat.dg/config_pragma1.adb, gnat.dg/config_pragma1_pkg.ads: New testcase.

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

5 years ago[Ada] ICE on renaming of result of binary operation
pmderodat [Tue, 17 Jul 2018 08:11:22 +0000 (08:11 +0000)] 
[Ada] ICE on renaming of result of binary operation

2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
more rvalues in the expression of a renaming.

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

5 years ago[Ada] Type mismatch warning for imported C++ class
pmderodat [Tue, 17 Jul 2018 08:10:04 +0000 (08:10 +0000)] 
[Ada] Type mismatch warning for imported C++ class

2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Define for
METHOD_TYPE too.
(TYPE_RETURN_UNCONSTRAINED_P): Likewise.
(TYPE_CI_CO_LIST): Likewise.
* gcc-interface/gigi.h (is_cplusplus_method): Delete.
(fntype_same_flags_p): Adjust comment.
* gcc-interface/decl.c (Has_Thiscall_Convention): Delete.
(gnat_to_gnu_entity) <E_Subprogram_Type>: Do not set the "thiscall"
attribute directly.
(is_cplusplus_method): Make static and adjust head comment.
(gnat_to_gnu_param): Return a pointer for the "this" parameter of
C++ constructors.
(gnat_to_gnu_subprog_type): Turn imported C++ constructors into their
callable form.  Generate a METHOD_TYPE node for imported C++ methods.
Set param_list at the very end of the processing.
(substitute_in_type) <METHOD_TYPE>: New case.
* gcc-interface/misc.c (gnat_print_type) <METHOD_TYPE>: Likewise.
(gnat_type_hash_eq): Accept METHOD_TYPE.
* gcc-interface/trans.c (Identifier_to_gnu): Deal with METHOD_TYPE.
(Attribute_to_gnu): Likewise.
(Call_to_gnu): Likewise.
(process_freeze_entity): Likewise.
* gcc-interface/utils.c (create_subprog_decl): Adjust head comment.
(fntype_same_flags_p): Likewise.

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

5 years ago[Ada] Remove extra parentheses in Expand_Inlined_Call
pmderodat [Tue, 17 Jul 2018 08:09:59 +0000 (08:09 +0000)] 
[Ada] Remove extra parentheses in Expand_Inlined_Call

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* inline.adb (Expand_Inlined_Call): Remove extra parentheses.

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

5 years ago[Ada] Minor fix for imported C++ constructors
pmderodat [Tue, 17 Jul 2018 08:09:54 +0000 (08:09 +0000)] 
[Ada] Minor fix for imported C++ constructors

C++ constructors are imported as functions and then internally rewritten into
procedures taking the "this" pointer as first parameter.  Now this parameter is
not of an access type but of the type directly, so it must be In/Out and not
just In.

2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_disp.adb (Gen_Parameters_Profile): Make the _Init parameter an
In/Out parameter.
(Set_CPP_Constructors): Adjust comment accordingly.

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

5 years ago[Ada] Assertion_Policy for class-wide precondition
pmderodat [Tue, 17 Jul 2018 08:09:30 +0000 (08:09 +0000)] 
[Ada] Assertion_Policy for class-wide precondition

This patch fixes the compiler to that class-wide preconditions on primitive
operations of interfaces are not checked at run time when the Assertion_Policy
indicates that they should be ignored. This is required by the RM.

2018-07-17  Bob Duff  <duff@adacore.com>

gcc/ada/

* exp_disp.adb (Build_Class_Wide_Check): Return early if the
precondition is supposed to be ignored.

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

5 years ago[Ada] Missing check on illegal equality operation in subprogram
pmderodat [Tue, 17 Jul 2018 08:09:14 +0000 (08:09 +0000)] 
[Ada] Missing check on illegal equality operation in subprogram

In Ada2012 it is illegal to declare an equality operation on an untagged
type when the operation is primitive and the type is already frozem (see
RM 4.5.2 (9.8)). previously the test to detect this illegality only examined
declarations within a package. This patch covers the case where type and
operation are both declared within a subprogram body.

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch6.adb (Check_Untagged_Equality): Extend check to operations
declared in the same scope as the operand type, when that scope is a
procedure.

gcc/testsuite/

* gnat.dg/equal3.adb: New testcase.

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

5 years ago[Ada] Unnesting: don't use Get_Actual_Subtype for record subtypes
pmderodat [Tue, 17 Jul 2018 08:08:04 +0000 (08:08 +0000)] 
[Ada] Unnesting: don't use Get_Actual_Subtype for record subtypes

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb (Unnest_Subprograms): Do nothing if the expander is not
active.  Don't use Get_Actual_Subtype for record subtypes.  Ignore
rewritten identifiers and uplevel references to bounds of types that
come from the original type reference.

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

5 years ago[Ada] Minor reformatting
pmderodat [Tue, 17 Jul 2018 08:07:59 +0000 (08:07 +0000)] 
[Ada] Minor reformatting

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch13.adb, exp_ch7.adb, exp_unst.adb, freeze.adb,
libgnat/s-os_lib.adb, sem_ch3.adb, sem_ch3.ads, sem_ch5.adb,
sem_eval.adb, sem_res.adb, sem_util.adb: Minor reformatting.

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

5 years ago[Ada] Crash processing abstract state aspect of a package
pmderodat [Tue, 17 Jul 2018 08:07:52 +0000 (08:07 +0000)] 
[Ada] Crash processing abstract state aspect of a package

The compiler may crash processing an aspect Part_Of used in a
package spec which has also an Initial_Condition aspect. After
this patch the following test compiles fine.

package P
with
  SPARK_Mode => On,
  Abstract_State => (Count_State),
  Initial_Condition => (Get_Count = 0)              -- Test
is
   type Count_Type is range 0 .. 16;

   function Get_Count return Count_Type;

   procedure Dummy;

private
   C: Count_Type := 0 with Part_Of => Count_State;  -- Test

   function Get_Count return Count_Type is (C);
end P;

package body P
with
  SPARK_Mode => On,
  Refined_State => (Count_State => C)
is
  procedure Dummy is null;
end P;

Command: gcc -c p.adb

2018-07-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch13.adb (Expand_N_Freeze_Entity): Handle subtype declared for an
iterator.
* freeze.adb (Freeze_Expression): Handle freeze of an entity defined
outside of a subprogram body. This case was previously handled during
preanalysis; the frozen entities were remembered and left pending until
we continued freezeing entities outside of the subprogram. Now, when
climbing the parents chain to locate the correct placement for the
freezeing node, we check if the entity can be frozen and only when no
enclosing node is marked as Must_Not_Freeze the entity is frozen.
* sem_ch3.ads (Preanalyze_Default_Expression): Declaration moved to the
package body.
* sem_ch3.adb (Preanalyze_Default_Expression): Code adjusted to invoke
the new subprogram Preanalyze_With_Freezing_And_Resolve.
* sem_ch6.adb (Preanalyze_Formal_Expression): New subprogram.
(Analyze_Expression_Function, Process_Formals): Invoke
Preanalyze_Formal_Expression instead of Preanalyze_Spec_Expression
since the analysis of the formals may freeze entities.
(Analyze_Subprogram_Body_Helper): Skip building the body of the
class-wide clone for eliminated subprograms.
* sem_res.ads, sem_res.adb (Preanalyze_And_Resolve): New subprogram.
Its code is basically the previous version of this routine but extended
with an additional parameter which is used to specify if during
preanalysis we are allowed to freeze entities.  If the new parameter is
True then the subtree root node is marked as Must_Not_Freeze and no
entities are frozen during preanalysis.
(Preanalyze_And_Resolve): Invokes the internal version of
Preanalyze_And_Resolve without entity freezing.
(Preanalyze_With_Freezing_And_Resolve): Invokes the internal version of
Prenalyze_And_Resolve with freezing enabled.

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

5 years ago[Ada] Consistent spelling of "i.e." in docs and comments
pmderodat [Tue, 17 Jul 2018 08:07:47 +0000 (08:07 +0000)] 
[Ada] Consistent spelling of "i.e." in docs and comments

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* einfo.ads, libgnat/g-comlin.ads: Minor change "ie" to "i.e." in docs
and comments.

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

5 years ago[Ada] Argument_String_To_List creates empty items from whitespace
pmderodat [Tue, 17 Jul 2018 08:07:42 +0000 (08:07 +0000)] 
[Ada] Argument_String_To_List creates empty items from whitespace

This patch corrects an issue whereby leading whitespace in a non-quoted
argument list passed to Argument_String_To_List caused extraneous empty
arguments to be returned.

2018-07-17  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* libgnat/s-os_lib.adb (Argument_String_To_List): Fix trimming of
whitespace.

gcc/testsuite/

* gnat.dg/split_args.adb: New testcase.

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

5 years ago[Ada] Spurious error on Part_Of indicator
pmderodat [Tue, 17 Jul 2018 08:07:37 +0000 (08:07 +0000)] 
[Ada] Spurious error on Part_Of indicator

This patch modifies the verification of a missing Part_Of indicator to avoid
considering constants as visible state of a package instantiation because the
compiler cannot determine whether their values depend on variable input. This
diagnostic is left to GNATprove.

------------
-- Source --
------------

--  gnat.adc

pragma SPARK_Mode;

--  gen_pack.ads

generic
package Gen_Pack is
   Val : constant Integer := 123;
end Gen_Pack;

--  pack.ads

with Gen_Pack;

package Pack
  with Abstract_State => Pack_State
is
   procedure Force_Body;
private
   package Inst_1 is new Gen_Pack;                                   --  OK
   package Inst_2 is new Gen_Pack with Part_Of => Pack_State;        --  OK
end Pack;

--  pack.adb

package body Pack
  with Refined_State => (Pack_State => Inst_2.Val)
is
   procedure Force_Body is null;
end Pack;

-----------------
-- Compilation --
-----------------

$ gcc -c pack.adb

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_prag.adb (Has_Visible_State): Do not consider constants as
visible state because it is not possible to determine whether a
constant depends on variable input.
(Propagate_Part_Of): Add comment clarifying the behavior with respect
to constant.

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

5 years ago[Ada] Avoid confusing warning on exception propagation in GNATprove mode
pmderodat [Tue, 17 Jul 2018 08:07:31 +0000 (08:07 +0000)] 
[Ada] Avoid confusing warning on exception propagation in GNATprove mode

When compiling with the restriction No_Exception_Propagation, GNAT compiler
may issue a warning about exceptions not being propagated. This warning is
useless and confusing to users for GNATprove analysis, as GNATprove
precisely detects possible exceptions, so disable the warning in that mode.

2018-07-17  Yannick Moy  <moy@adacore.com>

gcc/ada/

* gnat1drv.adb (Gnat1drv): Do not issue warning about exception not
being propagated in GNATprove mode.

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

5 years ago[Ada] GNAT.Sockets: reorganize and make public components of Inet_Addr_Type
pmderodat [Tue, 17 Jul 2018 08:07:26 +0000 (08:07 +0000)] 
[Ada] GNAT.Sockets: reorganize and make public components of Inet_Addr_Type

2018-07-17  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

* libgnat/g-socket.adb, libgnat/g-socket.ads: Reorganize and make
public components of Inet_Addr_Type. Introduce public binary
operations.

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

5 years ago[Ada] Secondary stack leak in statements block located in a loop
pmderodat [Tue, 17 Jul 2018 08:07:00 +0000 (08:07 +0000)] 
[Ada] Secondary stack leak in statements block located in a loop

When a loop iterator has a block declaration containing statements that invoke
functions whose result is returned on the secondary stack (such as a
string-returning function), the compiler fails to generate code to release the
allocated memory when the loop terminates.

After this patch the following test works fine.

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
pragma Warnings (Off);
with System.Secondary_Stack;
pragma Warnings (On);

procedure Small is
   procedure Info is new System.Secondary_Stack.Ss_Info (Put_Line);

   US : Unbounded_String;
begin
   Info;
   for J in 1 .. 100_000 loop
      Leaky_Block : declare
      begin
         if (J mod 20000) = 0 then
            Info;
         end if;

         Ada.Text_IO.Put_Line (To_String (US));  --  Test

         if (J mod 20000) = 0 then
            Info;
         end if;
      end Leaky_Block;
   end loop;
   Info;
end;

Command:
  gnatmake small.adb; small | grep "Current allocated space :" | uniq
Output:
  Current allocated space :  0 bytes

2018-07-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch7.adb (Make_Transient_Block): When determining whether an
enclosing scope already handles the secondary stack, take into account
transient blocks nested in a block that do not manage the secondary
stack and are located within a loop.

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

5 years ago[Ada] Fix Enclosing_Subprogram for protected entries and task entries
pmderodat [Tue, 17 Jul 2018 08:06:55 +0000 (08:06 +0000)] 
[Ada] Fix Enclosing_Subprogram for protected entries and task entries

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_util.adb (Enclosing_Subprogram): Protected entries and task
entries must be treated separately: task entries are within the
enclosing subprogram of the task type, while protected entries are
transformed into the corresponding Protected_Body_Subprogram, which is
the enclosing_subprogram of any subprogram declared within the entry
body.

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

5 years ago[Ada] Add elaboration-related switches to GNAT UGN
pmderodat [Tue, 17 Jul 2018 08:06:50 +0000 (08:06 +0000)] 
[Ada] Add elaboration-related switches to GNAT UGN

This patch adds compiler switches -gnatH and -gnatJ to section "Alphabetical
list of all switches" of the GNAT User Guide for Native.

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add missing
sections on -gnatH and -gnatJ compiler switches.
* gnat_ugn.texi: Regenerate.

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

5 years ago PR middle-end/86539
jakub [Tue, 17 Jul 2018 08:06:25 +0000 (08:06 +0000)] 
PR middle-end/86539
* gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init
and cond temporaries don't have reference type if iterator has
pointer type.  For init use &for_pre_body instead of pre_p if
for_pre_body is non-empty.

* testsuite/libgomp.c++/pr86539.C: New test.

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

5 years ago[Ada] New ignored Ghost code removal mechanism
pmderodat [Tue, 17 Jul 2018 08:06:24 +0000 (08:06 +0000)] 
[Ada] New ignored Ghost code removal mechanism

This patch reimplements the mechanism which removes ignored Ghost code from the
tree.

The previous mechanism proved to be unreliable because it assumed that no new
scoping constructs would be created after some ignored Ghost code had already
notified its enclosing scoping constructs that they contain such code. The
assumption can be broken by having a call to an ignored Ghost procedure within
the extended return statement of a function. The procedure call would signal
the enclosing function that it contains ignored Ghost code, however the return
statement would introduce an extra block, effectively hiding the procedure call
from the ignored Ghost code elimination pass.

The new mechanism implemented in this patch forgoes directed tree pruning in
favor of storing the actual ignored Ghost code, and later directly eliminating
it from the tree.

For this approach to operate efficiently, only "top level" ignored Ghost
constructs are stored. The top level constructs are essentially nodes which can
appear within a declarative or statement list and be safely rewritten into null
statements. This ensures that only "root" ignored Ghost construct need to be
processed, as opposed to all ignored Ghost nodes within a subtree.

The approach has one drawback however. Due to the generation and analysis of
ignored Ghost code, a construct may be recorded multiple times (usually twice).
The mechanism simply deals with this artefact instead of employing expensive
solutions such as hash tables or a common flag shared by all nodes to eliminate
the duplicates.

------------
-- Source --
------------

--  main.adb

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
   procedure Ghost_Proc with Ghost;
   procedure Ghost_Proc is
   begin
      Put_Line ("ERROR: Ghost_Proc called");
   end Ghost_Proc;

   function Func return Integer is
   begin
      return Res : Integer := 123 do
         Ghost_Proc;
      end return;
   end Func;

   Val : Integer with Ghost;

begin
   Val := Func;
end Main;

----------------------------
-- Compilation and output --
----------------------------

$ gcc -c -gnatDG main.adb
$ grep -c "ghost" main.adb.dg
0

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* alloc.ads: Update the allocation metrics of the ignored Ghost nodes
table.
* atree.adb: Add a soft link for a procedure which is invoked whenever
an ignored Ghost node or entity is created.
(Change_Node): Preserve relevant attributes which come from the Flags
table.
(Mark_New_Ghost_Node): Record a newly created ignored Ghost node or
entity.
(Rewrite): Preserve relevant attributes which come from the Flags
table.
(Set_Ignored_Ghost_Recording_Proc): New routine.
* atree.ads: Define an access-to-suprogram type for a soft link which
records a newly created ignored Ghost node or entity.
(Set_Ignored_Ghost_Recording_Proc): New routine.
* ghost.adb: Remove with and use clause for Lib.  Remove table
Ignored_Ghost_Units.  Add new table Ignored_Ghost_Nodes.
(Add_Ignored_Ghost_Unit): Removed.
(Initialize): Initialize the table which stores ignored Ghost nodes.
Set the soft link which allows Atree.Mark_New_Ghost_Node to record an
ignored Ghost node.
(Is_Ignored_Ghost_Unit): Use the ultimate original node when checking
an eliminated ignored Ghost unit.
(Lock): Release and lock the table which stores ignored Ghost nodes.
(Mark_And_Set_Ghost_Assignment): Record rather than propagate ignored
Ghost nodes.
(Mark_And_Set_Ghost_Procedure_Call): Record rather than propagate
ignored Ghost nodes.
(Mark_Ghost_Clause): Record rather than propagate ignored Ghost nodes.
(Mark_Ghost_Declaration_Or_Body): Record rather than propagate ignored
Ghost nodes.
(Mark_Ghost_Pragma): Record rather than propagate ignored Ghost nodes.
(Propagate_Ignored_Ghost_Code): Removed.
(Record_Ignored_Ghost_Node): New routine.
(Remove_Ignored_Ghost_Code): Reimplemented.
(Remove_Ignored_Ghost_Node): New routine.
(Ultimate_Original_Node): New routine.
* ghost.ads (Check_Ghost_Completion): Removed.
* sem_ch8.adb (Analyze_Use_Package): Remove obsolete code. Mark a use
package clause as ignored Ghost if applicable.
* sem_util.adb (Is_Body_Or_Package_Declaration): Reimplemented.

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

5 years ago[Ada] Secondary stack leak in loop iterator
pmderodat [Tue, 17 Jul 2018 08:06:09 +0000 (08:06 +0000)] 
[Ada] Secondary stack leak in loop iterator

When the evaluation of the loop iterator invokes a function whose
result relies on the secondary stack the compiler does not generate
code to release the consumed memory as soon as the loop terminates.

After this patch the following test works fine.

with Text_IO; use Text_IO;
pragma Warnings (Off);
with System.Secondary_Stack;
pragma Warnings (On);
procedure Sec_Stack_Leak is
   function F (X : String) return Integer is
   begin
      return 10;
   end F;

   function G (X : Integer) return String is
   begin
      return (1 .. X => 'x');
   end G;

   procedure Info is new System.Secondary_Stack.Ss_Info (Put_Line);

   procedure Nest is
   begin
      for I in Integer range 1 .. 100 loop
         for J in Integer range 1 .. F (G (10_000)) loop
            null;
         end loop;
         Info;
      end loop;
      Info;
   end Nest;

begin
   Info;
   Nest;
   Info;
end Sec_Stack_Leak;

Commands:
  gnatmake -q sec_stack_leak.adb
  sec_stack_leak | grep "Current allocated space :" | uniq
Output:
  Current allocated space :  0 bytes

2018-07-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_ch5.adb (Has_Call_Using_Secondary_Stack): Moved to library level
to reuse it.
(Analyze_Loop_Statement): Wrap the loop in a block when the evaluation
of the loop iterator relies on the secondary stack.

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

5 years ago[Ada] Fix Next_Actual when used on calls "inlined for proof"
pmderodat [Tue, 17 Jul 2018 08:06:04 +0000 (08:06 +0000)] 
[Ada] Fix Next_Actual when used on calls "inlined for proof"

The GNATprove backend needs to apply antialiasing checks to subprogram
calls that have been rewritten into null statements while "inlining for
proof". This requires the First_Actual/Next_Actual to use the Original_Node
and not the N_Null_Statement that rewriting leaves as a parent.

Only effective in GNATprove mode, so no frontend test provided.

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_util.adb (Next_Actual): If the parent is a N_Null_Statement,
which happens for inlined calls, then fetch the next actual from the
original AST.

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

5 years ago[Ada] Einfo: update documentation for Scalar_Range
pmderodat [Tue, 17 Jul 2018 08:05:59 +0000 (08:05 +0000)] 
[Ada] Einfo: update documentation for Scalar_Range

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* einfo.ads: Update documentation for Scalar_Range.

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

5 years ago[Ada] Attach the special GNATprove HEAP entity to the Standard package
pmderodat [Tue, 17 Jul 2018 08:05:54 +0000 (08:05 +0000)] 
[Ada] Attach the special GNATprove HEAP entity to the Standard package

In GNATprove mode we use frontend cross-references to synthesize the
Global contract of subprograms with SPARK_Mode => Off and represent
a read/write via a pointer as a read/write of a special entity called
HEAP. This entity is now attached to the Standard package, so that we can
safely check the Ekind of its Scope, which now happens in Scope_Within.

This only affects GNATprove, so no frontend test provided.

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* lib-xref-spark_specific.adb (Create_Heap): Attach the HEAP entity to
the Standard package.

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

5 years ago[Ada] Minor refactoring: remove extra parentheses
pmderodat [Tue, 17 Jul 2018 08:05:34 +0000 (08:05 +0000)] 
[Ada] Minor refactoring: remove extra parentheses

2018-07-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* einfo.adb (Is_Wrapper_Package): Remove extra parentheses.

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

5 years ago[Ada] Fix unnesting issues involving tasks
pmderodat [Tue, 17 Jul 2018 08:05:29 +0000 (08:05 +0000)] 
[Ada] Fix unnesting issues involving tasks

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_util.adb (Enclosing_Subprogram): Handle properly entries, and
synchronized types that are completions of limited types or private
extensions.
(Scope_Within): Handle properly accept statements in task bodies.

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

5 years ago[Ada] Spurious error on unused Part_Of constituent
pmderodat [Tue, 17 Jul 2018 08:03:54 +0000 (08:03 +0000)] 
[Ada] Spurious error on unused Part_Of constituent

This patch updates the analysis of indicator Part_Of (or the lack thereof), to
ignore generic formal parameters for purposes of determining the visible state
space because they are not visible outside the generic and related instances.

------------
-- Source --
------------

--  gen_pack.ads

generic
   In_Formal     : in     Integer := 0;
   In_Out_Formal : in out Integer;

package Gen_Pack is
   Exported_In_Formal     : Integer renames In_Formal;
   Exported_In_Out_Formal : Integer renames In_Out_Formal;

end Gen_Pack;

--  pack.ads

with Gen_Pack;

package Pack
  with Abstract_State => State
is
   procedure Force_Body;

   Val : Integer;

private
   package OK_1 is
     new Gen_Pack (In_Out_Formal => Val)
   with Part_Of => State;                                            --  OK

   package OK_2 is
     new Gen_Pack (In_Formal => 1, In_Out_Formal => Val)
   with Part_Of => State;                                            --  OK

   package Error_1 is                                                --  Error
     new Gen_Pack (In_Out_Formal => Val);
   package Error_2 is                                                --  Error
     new Gen_Pack (In_Formal => 2, In_Out_Formal => Val);
end Pack;

--  pack.adb

package body Pack
  with Refined_State =>                                              --  Error
         (State => (OK_1.Exported_In_Formal,
                    OK_1.Exported_In_Out_Formal))
is
   procedure Force_Body is null;
end Pack;

--  gen_pack.ads

generic
   In_Formal     : in     Integer := 0;
   In_Out_Formal : in out Integer;

package Gen_Pack is
   Exported_In_Formal     : Integer renames In_Formal;
   Exported_In_Out_Formal : Integer renames In_Out_Formal;

end Gen_Pack;

--  pack.ads

with Gen_Pack;

package Pack
  with Abstract_State => State
is
   procedure Force_Body;

   Val : Integer;

private
   package OK_1 is
     new Gen_Pack (In_Out_Formal => Val)
   with Part_Of => State;                                            --  OK

   package OK_2 is
     new Gen_Pack (In_Formal => 1, In_Out_Formal => Val)
   with Part_Of => State;                                            --  OK

   package Error_1 is                                                --  Error
     new Gen_Pack (In_Out_Formal => Val);
   package Error_2 is                                                --  Error
     new Gen_Pack (In_Formal => 2, In_Out_Formal => Val);
end Pack;

--  pack.adb

package body Pack
  with Refined_State =>                                              --  Error
         (State => (OK_1.Exported_In_Formal,
                    OK_1.Exported_In_Out_Formal))
is
   procedure Force_Body is null;
end Pack;

----------------------------
-- Compilation and output --
----------------------------

$ gcc -c pack.adb
pack.adb:3:11: state "State" has unused Part_Of constituents
pack.adb:3:11: constant "Exported_In_Formal" defined at gen_pack.ads:6,
  instance at pack.ads:15
pack.adb:3:11: variable "Exported_In_Out_Formal" defined at gen_pack.ads:7,
  instance at pack.ads:15
pack.ads:19:12: indicator Part_Of is required in this context (SPARK RM
  7.2.6(2))
pack.ads:19:12: "Error_1" is declared in the private part of package "Pack"
pack.ads:21:12: indicator Part_Of is required in this context (SPARK RM
  7.2.6(2))
pack.ads:21:12: "Error_2" is declared in the private part of package "Pack"

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_prag.adb (Has_Visible_State): Do not consider generic formals
because they are not part of the visible state space. Add constants to
the list of acceptable visible states.
(Propagate_Part_Of): Do not consider generic formals when propagating
the Part_Of indicator.
* sem_util.adb (Entity_Of): Do not follow renaming chains which go
through a generic formal because they are not visible for SPARK
purposes.
* sem_util.ads (Entity_Of): Update the comment on usage.

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

5 years ago[Ada] Fix handling of inherited discriminant constraints
pmderodat [Tue, 17 Jul 2018 08:03:49 +0000 (08:03 +0000)] 
[Ada] Fix handling of inherited discriminant constraints

2018-07-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_util.adb (Gather_Components): A discriminant of an ancestor may
have been constrained by a later ancestor, so when looking for the
value of that hidden discriminant we must examine the stored constraint
of other ancestors than the immediate parent type.

gcc/testsuite/

* gnat.dg/discr54.adb, gnat.dg/discr54_pkg.ads: New testcase.

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

5 years ago[Ada] Crash on case expression in build-in-place function
pmderodat [Tue, 17 Jul 2018 08:03:44 +0000 (08:03 +0000)] 
[Ada] Crash on case expression in build-in-place function

This patch modifies the recursive tree replication routine New_Copy_Tree to
create new entities and remap old entities to the new ones for constructs in
N_Expression_With_Actions nodes when requested by a caller. This in turn allows
the build-in-place mechanism to avoid sharing entities between the 4 variants
of returns it generates.

2018-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch6.adb (Build_Heap_Or_Pool_Allocator): Ensure that scoping
constructs and entities within receive new entities when replicating a
tree.
(Expand_N_Extended_Return_Statement): Ensure that scoping constructs
and entities within receive new entities when replicating a tree.
* sem_util.adb (New_Copy_Tree): Add new formal Scopes_In_EWA_OK.
(Visit_Entity): Visit entities within scoping constructs inside
expression with actions nodes when requested by the caller. Add blocks,
labels, and procedures to the list of entities which need replication.
* sem_util.ads (New_Copy_Tree): Add new formal Scopes_In_EWA_OK. Update
the comment on usage.

gcc/testsuite/

* gnat.dg/bip_case_expr.adb, gnat.dg/bip_case_expr_pkg.ads: New testcase.

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

5 years ago[Ada] Remove references to gcov from the User Manual
pmderodat [Tue, 17 Jul 2018 08:03:39 +0000 (08:03 +0000)] 
[Ada] Remove references to gcov from the User Manual

2018-07-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* doc/gnat_ugn/about_this_guide.rst,
doc/gnat_ugn/gnat_and_program_execution.rst: Remove references to gcov.
* gnat_ugn.texi: Regenerate.

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

5 years agoDaily bump.
gccadmin [Tue, 17 Jul 2018 00:16:36 +0000 (00:16 +0000)] 
Daily bump.

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

5 years agogcc/testsuite/ChangeLog:
carll [Mon, 16 Jul 2018 23:35:25 +0000 (23:35 +0000)] 
gcc/testsuite/ChangeLog:

2018-07-16  Carl Love  <cel@us.ibm.com>

Forgot the PR number on the commit log.
PR target/86414

       2018-07-16  Carl Love  <cel@us.ibm.com>

  PR target/86414
* gcc.target/powerpc/divkc3-2.c: Add dg-require-effective-target
longdouble128.
* gcc.target/powerpc/divkc3-3.c: Ditto.
  * gcc.target/powerpc/mulkc3-2.c: Ditto.
* gcc.target/powerpc/mulkc3-3.c: Ditto.
* gcc.target/powerpc/fold-vec-mergehl-double.c: Update counts.
* gcc.target/powerpc/pr85456.c: Make check Linux and AIX specific.

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

5 years agors6000: New testcase fp-convert.c
segher [Mon, 16 Jul 2018 23:05:46 +0000 (23:05 +0000)] 
rs6000: New testcase fp-convert.c

This tests the generated code for all conversions between floating point
point types, binary and decimal.

gcc/testsuite/
* gcc.target/powerpc/convert-fp-128.c: New testcase.
* gcc.target/powerpc/convert-fp-64.c: New testcase.

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

5 years agors6000: New testsuite selectors
segher [Mon, 16 Jul 2018 23:04:24 +0000 (23:04 +0000)] 
rs6000: New testsuite selectors

This introduces four new selectors for use with Power testcases:
longdouble64, ppc_float128, ppc_float128_insns, powerpc_vsx.

gcc/testsuite/
* lib/target-supports.exp (check_effective_target_longdouble64,
check_effective_target_ppc_float128,
check_effective_target_ppc_float128_insns,
check_effective_target_powerpc_vsx): New.

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

5 years agors6000: Fix testsuite bug in check_ppc_float128_hw_available
segher [Mon, 16 Jul 2018 23:03:08 +0000 (23:03 +0000)] 
rs6000: Fix testsuite bug in check_ppc_float128_hw_available

The test program for ppc_float128_hw_available would always return
false, since there is a syntax error in that test program.

gcc/testsuite/
* lib/target-supports.exp (check_ppc_float128_hw_available): Fix
syntax error.

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

5 years agors6000: Improve truncifsf2
segher [Mon, 16 Jul 2018 23:02:11 +0000 (23:02 +0000)] 
rs6000: Improve truncifsf2

The current implementation leaves an unnecessary register move.  It is
easier to just expand things in the expander already.  This patch does
that.

* config/rs6000/rs6000.md (trunc<mode>sf2): Expand truncates of
double-double modes to SFmode directly directly.
(trunc<mode>sf2_fprs): Delete.

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

5 years agors6000: Use correct names for some trunc/extend libcalls
segher [Mon, 16 Jul 2018 23:01:12 +0000 (23:01 +0000)] 
rs6000: Use correct names for some trunc/extend libcalls

The libcalls for trunc and extend of a decimal float to a binary float,
and vice versa, do not have "2" in the name, although all other such
conversions do.

* config/rs6000/rs6000.c (init_float128_ibm): Use the correct names
for conversions between IFmode and the decimal floating point modes.
(init_float128_ieee): Use the correct names for conversions between
KFmode and the decimal floating point modes.

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

5 years agors6000: Use more correct names for some trunc/extend libcalls
segher [Mon, 16 Jul 2018 23:00:03 +0000 (23:00 +0000)] 
rs6000: Use more correct names for some trunc/extend libcalls

They had source and destination swapped in the name.

* config/rs6000/rs6000.c (init_float128_ibm): Use more correct names
for the conversions between TDmode and IFmode.
(init_float128_ieee): Use more correct names for the conversions
between TDmode and KFmode.

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

5 years ago PR tree-optimization/86526
jakub [Mon, 16 Jul 2018 21:25:22 +0000 (21:25 +0000)] 
PR tree-optimization/86526
* builtins.c (expand_builtin_memcmp): Formatting fixes.
(inline_expand_builtin_string_cmp): Likewise.
(inline_string_cmp): Likewise.  Use c_readstr instead of
builtin_memcpy_read_str.  Add unit_mode temporary.

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

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

5 years agogcc/testsuite/ChangeLog:
carll [Mon, 16 Jul 2018 21:00:53 +0000 (21:00 +0000)] 
gcc/testsuite/ChangeLog:

2018-07-16  Carl Love  <cel@us.ibm.com>

  * gcc.target/powerpc/divkc3-2.c: Add dg-require-effective-target
longdouble128.
* gcc.target/powerpc/divkc3-3.c: Ditto.
  * gcc.target/powerpc/mulkc3-2.c: Ditto.
* gcc.target/powerpc/mulkc3-3.c: Ditto.
* gcc.target/powerpc/fold-vec-mergehl-double.c: Update counts.
* gcc.target/powerpc/pr85456.c: Make check Linux and AIX specific.

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

5 years ago2018-07-16 Fritz Reese <fritzoreese@gmail.com>
foreese [Mon, 16 Jul 2018 18:24:50 +0000 (18:24 +0000)] 
2018-07-16  Fritz Reese  <fritzoreese@gmail.com>

    Fix handling of invalid assumed-shape/size arrays in legacy initializer
    lists.

    gcc/fortran/ChangeLog:

PR fortran/83184
* decl.c (match_old_style_init): Initialize locus of variable expr when
creating a data variable.
(match_clist_expr): Verify array is explicit shape/size before
attempting to allocate constant array constructor.

    gcc/testsuite/ChangeLog:

PR fortran/83184
* gfortran.dg/assumed_rank_14.f90: New testcase.
* gfortran.dg/assumed_rank_15.f90: New testcase.
* gfortran.dg/dec_structure_8.f90: Update error messages.
* gfortran.dg/dec_structure_23.f90: Update error messages.

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

5 years ago2018-07-16 Fritz Reese <fritzoreese@gmail.com>
foreese [Mon, 16 Jul 2018 18:16:00 +0000 (18:16 +0000)] 
2018-07-16  Fritz Reese  <fritzoreese@gmail.com>

    gcc/fortran/ChangeLog:

PR fortran/86417
* module.c (mio_component): Set component->loc when loading from module.

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

5 years agogcc:
edlinger [Mon, 16 Jul 2018 18:03:15 +0000 (18:03 +0000)] 
gcc:
2018-07-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86528
        * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
        * expr.c (string_constant): Fix the element size of ARRAY_TYPE.

testsuite:
2018-07-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86528
        * gcc.c-torture/execute/pr86528.c: New test.
        * gcc.dg/Wrestrict-10.c (test_arr_strcat_2): Fix typo.

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

5 years ago * scripts/create_testsuite_files: Fix typo in comment.
redi [Mon, 16 Jul 2018 17:42:20 +0000 (17:42 +0000)] 
* scripts/create_testsuite_files: Fix typo in comment.

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

5 years ago/cp
paolo [Mon, 16 Jul 2018 17:36:43 +0000 (17:36 +0000)] 
/cp
2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>

* class.c (resolve_address_of_overloaded_function): Don't emit an
inform if the matching permerror returns false.
* pt.c (check_specialization_namespace): Likewise.

/testsuite
2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/template/spec40.C: New.
* g++.dg/parse/ptrmem8.C: Likewise.

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

5 years agoPR libstdc++/86537 remove less<shared_ptr<T>> partial specialization
redi [Mon, 16 Jul 2018 17:13:41 +0000 (17:13 +0000)] 
PR libstdc++/86537 remove less<shared_ptr<T>> partial specialization

The standard doesn't specify this partial specialization (it was
required after the changes in N2637 but then should have been removed
following LWG 1262). Its presence is observable because it causes
different results when operator< has been overloaded for a shared_ptr
specialization.

PR libstdc++/86537
* include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
non-standard partial specialization.
* include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
(less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
* testsuite/20_util/shared_ptr/comparison/86537.cc: New test.

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