Commit Graph

163084 Commits

Author SHA1 Message Date
Paolo Carlini 6498dea6b2 re PR c++/59480 (Missing error diagnostic: friend declaration specifying a default argument must be a definition)
/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.

From-SVN: r262851
2018-07-18 10:27:12 +00:00
Ilya Leoshkevich 0559979c64 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.

From-SVN: r262850
2018-07-18 06:58:39 +00:00
Richard Biener 97f1323504 re PR debug/86523 (ICE in gen_member_die, at dwarf2out.c:24933 starting from r262560)
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.

From-SVN: r262849
2018-07-18 06:54:23 +00:00
Jeff Law df6a7b9d37 arm.c (get_label_padding): Update for recent changes to label_to_alignment.
* config/arm/arm.c (get_label_padding): Update for recent
	changes to label_to_alignment.

From-SVN: r262848
2018-07-17 22:55:03 -06:00
GCC Administrator 9b12ae805d Daily bump.
From-SVN: r262846
2018-07-18 00:16:31 +00:00
Jeff Law efae2f507e re PR tree-optimization/86010 (redundant memset with smaller size not eliminated)
PR tree-optimization/86010
	* tree-ssa-dse.c (compute_trims): Fix typo/thinko.

From-SVN: r262841
2018-07-17 17:54:10 -06:00
Jeff Law 9c179c2dd0 mips.c (vr4130_align_insns): Update for recent changes to label_to_alignment.
* config/mips/mips.c (vr4130_align_insns): Update for recent
	changes to label_to_alignment.

From-SVN: r262838
2018-07-17 14:52:20 -06:00
Jeff Law 22ab45296c frv.c (frv_label_align): Update for recent changes to label_to_alignment.
* config/frv/frv.c (frv_label_align): Update for recent changes
        to label_to_alignment.

From-SVN: r262837
2018-07-17 14:30:49 -06:00
Jeff Law d84916bd0d nios2.c (nios2_label_align): Update for recent changes which dropped ALIGN_LABELS_LOG.
* config/nios2/nios2.c (nios2_label_align): Update for recent
	changes which dropped ALIGN_LABELS_LOG.

From-SVN: r262836
2018-07-17 14:23:25 -06:00
Andreas Schwab 0d7afd5d27 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.

From-SVN: r262835
2018-07-17 18:42:42 +00:00
Ian Lance Taylor a7385f1c0e 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

From-SVN: r262833
2018-07-17 18:27:22 +00:00
Jakub Jelinek 0c86a39db2 lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN...
* 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.

From-SVN: r262832
2018-07-17 20:10:57 +02:00
David Edelsohn 0ef03fe3d0 * gcc.target/powerpc/pr85456.c: Require longdouble128.
From-SVN: r262831
2018-07-17 13:35:24 -04:00
Ian Lance Taylor 4161493a30 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

From-SVN: r262830
2018-07-17 17:21:10 +00:00
Fritz Reese 5485812caf re PR fortran/83184 (Out of memory or ICE with option -fdec)
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.

From-SVN: r262828
2018-07-17 16:02:03 +00:00
Will Schmidt 7ca83c3662 fold-vec-unpack-char.c: New.
[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.

From-SVN: r262827
2018-07-17 15:51:12 +00:00
David Edelsohn c2eab53d15 pr57150.c: Require longdouble128.
* gcc.target/powerpc/pr57150.c: Require longdouble128.
* gcc.target/powerpc/pr79916.c: Require dfp.

From-SVN: r262826
2018-07-17 11:41:47 -04:00
Jason Merrill dd00049ae9 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.

From-SVN: r262825
2018-07-17 11:39:46 -04:00
Jonathan Wakely c3be340eb6 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.

From-SVN: r262824
2018-07-17 14:18:47 +01:00
Jonathan Wakely 79a88477ad 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.

From-SVN: r262823
2018-07-17 14:16:51 +01:00
Claudiu Zissulescu 3f4453745e [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.

From-SVN: r262820
2018-07-17 14:27:10 +02:00
Richard Biener 3447025f2f re PR debug/86456 (Segfault in switch_to_section at gcc/varasm.c:7353 since r259317)
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.

From-SVN: r262819
2018-07-17 12:26:21 +00:00
Robin Dapp 5211d26a26 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.

From-SVN: r262818
2018-07-17 12:08:06 +00:00
Robin Dapp 22800d6629 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.

From-SVN: r262817
2018-07-17 12:05:07 +00:00
Jakub Jelinek a3bccfa17c re PR middle-end/86542 (wrong-code for collapsed taskloop which needs omp_cpyfn)
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.

From-SVN: r262815
2018-07-17 12:54:52 +02:00
Eric Botcazou 8e93ce66b2 decl.c (choices_to_gnu): Rename parameters.
* 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.

From-SVN: r262812
2018-07-17 10:02:36 +00:00
Rainer Orth 10c6ce7884 Add -fomit-frame-pointer to gcc.target/i386/vartrack-1.c
* gcc.target/i386/vartrack-1.c (dg-options): Add
	-fomit-frame-pointer.

From-SVN: r262811
2018-07-17 09:43:57 +00:00
Rainer Orth 74285cd3a9 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.

From-SVN: r262810
2018-07-17 09:41:11 +00:00
Martin Liska 487982030e Do not enable OPT_falign_* for -Os.
2018-07-17  Martin Liska  <mliska@suse.cz>

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

From-SVN: r262807
2018-07-17 09:22:14 +00:00
Martin Liska d800a1e76a 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.

From-SVN: r262806
2018-07-17 09:21:41 +00:00
Martin Liska 3f1a2e5765 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.

From-SVN: r262805
2018-07-17 09:19:57 +00:00
Martin Liska e6de533567 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.

From-SVN: r262804
2018-07-17 09:19:27 +00:00
Ed Schonberg 118f2d8bc3 [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.

From-SVN: r262803
2018-07-17 08:13:28 +00:00
Arnaud Charlet 5b4f211d2a [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.

From-SVN: r262802
2018-07-17 08:12:51 +00:00
Arnaud Charlet ed17074220 [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.

From-SVN: r262801
2018-07-17 08:12:46 +00:00
Ed Schonberg f4c2607769 [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.

From-SVN: r262800
2018-07-17 08:12:14 +00:00
Piotr Trojanek e164710e27 [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.

From-SVN: r262799
2018-07-17 08:12:08 +00:00
Piotr Trojanek b3d18092b6 [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.

From-SVN: r262798
2018-07-17 08:11:49 +00:00
Eric Botcazou 02fd37f505 [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.

From-SVN: r262797
2018-07-17 08:11:43 +00:00
Patrick Bernardi c343f1dc19 [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.

From-SVN: r262796
2018-07-17 08:11:37 +00:00
Hristian Kirtchev 7ffb58afe1 [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.

From-SVN: r262795
2018-07-17 08:11:32 +00:00
Hristian Kirtchev 9cc97ad523 [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.

From-SVN: r262794
2018-07-17 08:11:28 +00:00
Eric Botcazou 03b4b15ec7 [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.

From-SVN: r262793
2018-07-17 08:11:22 +00:00
Eric Botcazou 69720717c1 [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.

From-SVN: r262792
2018-07-17 08:10:04 +00:00
Piotr Trojanek 123483ca18 [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.

From-SVN: r262791
2018-07-17 08:09:59 +00:00
Eric Botcazou 3a09e0260a [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.

From-SVN: r262790
2018-07-17 08:09:54 +00:00
Bob Duff db38c41b4b [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.

From-SVN: r262789
2018-07-17 08:09:30 +00:00
Ed Schonberg 2bbc794096 [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.

From-SVN: r262788
2018-07-17 08:09:14 +00:00
Ed Schonberg 17d65c9192 [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.

From-SVN: r262787
2018-07-17 08:08:04 +00:00
Hristian Kirtchev f2c2cdfbdb [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.

From-SVN: r262786
2018-07-17 08:07:59 +00:00