1. 17 Jul, 2018 40 commits
    • [ARC] Don't use deprecated align_labels_log variable. · 3f445374
      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
      Claudiu Zissulescu committed
    • re PR debug/86456 (Segfault in switch_to_section at gcc/varasm.c:7353 since r259317) · 3447025f
      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
      Richard Biener committed
    • S/390: Do not use LA with index register on z196 or newer. · 5211d26a
      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
      Robin Dapp committed
    • S/390: Set default function alignment to 16. · 22800d66
      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
      Robin Dapp committed
    • re PR middle-end/86542 (wrong-code for collapsed taskloop which needs omp_cpyfn) · a3bccfa1
      	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
      Jakub Jelinek committed
    • decl.c (choices_to_gnu): Rename parameters. · 8e93ce66
      	* 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
      Eric Botcazou committed
    • Add -fomit-frame-pointer to gcc.target/i386/vartrack-1.c · 10c6ce78
      	* gcc.target/i386/vartrack-1.c (dg-options): Add
      	-fomit-frame-pointer.
      
      From-SVN: r262811
      Rainer Orth committed
    • Build gcc/testsuite/g++.dg/lto/pr86523-[12]_0.C as PIC · 74285cd3
      	* 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
      Rainer Orth committed
    • Do not enable OPT_falign_* for -Os. · 48798203
      2018-07-17  Martin Liska  <mliska@suse.cz>
      
      	* opts.c: Do not enable OPT_falign_* for -Os.
      
      From-SVN: r262807
      Martin Liska committed
    • Define MAX_CODE_ALIGN globally. · d800a1e7
      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
      Martin Liska committed
    • Fix coding style of ASM_OUTPUT_ALIGN. · 3f1a2e57
      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
      Martin Liska committed
    • Clean up of new format of -falign-FOO. · e6de5335
      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
      Martin Liska committed
    • [Ada] Spurious error on prefixed call in an instantiation · 118f2d8b
      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
      Ed Schonberg committed
    • [Ada] Preserve original CE reason in more cases · 5b4f211d
      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
      Arnaud Charlet committed
    • [Ada] Add provision for floating-point in Apply_Division_Check · ed170742
      2018-07-17  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* checks.adb (Apply_Division_Check): Add provision for floating-point
      	checks.
      
      From-SVN: r262801
      Arnaud Charlet committed
    • [Ada] Fix expansion of aggregates components rewritten to raise statements · f4c26077
      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
      Ed Schonberg committed
    • [Ada] Reuse Is_Rewrite_Substitution in Relocate_Node · e164710e
      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
      Piotr Trojanek committed
    • [Ada] Fix RM rule references · b3d18092
      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
      Piotr Trojanek committed
    • [Ada] Fix incompatibility Default_Scalar_Storage_Order/tagged types · 02fd37f5
      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
      Eric Botcazou committed
    • [Ada] Use standard version of s-memory.adb for mingw32 · c343f1dc
      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
      Patrick Bernardi committed
    • [Ada] Faulty ignored Ghost code removal · 7ffb58af
      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
      Hristian Kirtchev committed
    • [Ada] Configuration state not observed for instance bodies · 9cc97ad5
      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
      Hristian Kirtchev committed
    • [Ada] ICE on renaming of result of binary operation · 03b4b15e
      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
      Eric Botcazou committed
    • [Ada] Type mismatch warning for imported C++ class · 69720717
      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
      Eric Botcazou committed
    • [Ada] Remove extra parentheses in Expand_Inlined_Call · 123483ca
      2018-07-17  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Expand_Inlined_Call): Remove extra parentheses.
      
      From-SVN: r262791
      Piotr Trojanek committed
    • [Ada] Minor fix for imported C++ constructors · 3a09e026
      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
      Eric Botcazou committed
    • [Ada] Assertion_Policy for class-wide precondition · db38c41b
      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
      Bob Duff committed
    • [Ada] Missing check on illegal equality operation in subprogram · 2bbc7940
      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
      Ed Schonberg committed
    • [Ada] Unnesting: don't use Get_Actual_Subtype for record subtypes · 17d65c91
      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
      Ed Schonberg committed
    • [Ada] Minor reformatting · f2c2cdfb
      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
      Hristian Kirtchev committed
    • [Ada] Crash processing abstract state aspect of a package · e4d29736
      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.
      
      From-SVN: r262785
      Javier Miranda committed
    • [Ada] Consistent spelling of "i.e." in docs and comments · 52afb186
      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.
      
      From-SVN: r262784
      Piotr Trojanek committed
    • [Ada] Argument_String_To_List creates empty items from whitespace · 1b72a563
      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.
      
      From-SVN: r262783
      Justin Squirek committed
    • [Ada] Spurious error on Part_Of indicator · e6bc029a
      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.
      
      From-SVN: r262782
      Hristian Kirtchev committed
    • [Ada] Avoid confusing warning on exception propagation in GNATprove mode · 014eddc6
      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.
      
      From-SVN: r262781
      Yannick Moy committed
    • [Ada] GNAT.Sockets: reorganize and make public components of Inet_Addr_Type · d47c8ef9
      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.
      
      From-SVN: r262780
      Dmitriy Anisimkov committed
    • [Ada] Secondary stack leak in statements block located in a loop · 01bd58f5
      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.
      
      From-SVN: r262779
      Javier Miranda committed
    • [Ada] Fix Enclosing_Subprogram for protected entries and task entries · 3567ca3f
      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.
      
      From-SVN: r262778
      Ed Schonberg committed
    • [Ada] Add elaboration-related switches to GNAT UGN · eae2aa7c
      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.
      
      From-SVN: r262777
      Hristian Kirtchev committed
    • re PR middle-end/86539 (OpenMP wrong-code with taskloop and references) · 3a106211
      	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.
      
      From-SVN: r262776
      Jakub Jelinek committed