1. 27 May, 2018 6 commits
    • Fix a number of ICE in the test suite. · f5435230
      	    * config/pdp11/pdp11.md (truncsihi2): Remove.
      
      From-SVN: r260807
      Paul Koning committed
    • stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New. · 538a7cd0
      2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
      
      	* include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
      	(_Rb_tree(const allocator_type&)): Use latter.
      	* include/bits/stl_map.h (map(const allocator_type&)): Likewise.
      	(map(initializer_list<value_type>, const allocator_type&)): Likewise.
      	(map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
      	* include/bits/stl_multimap.h
      	(multimap(const allocator_type&)): Likewise.
      	(multimap(initializer_list<value_type>, const allocator_type&)):
      	Likewise.
      	(multimap(_InputIterator, _InputIterator, const allocator_type&)):
      	Likewise.
      	* include/bits/stl_set.h (set(const allocator_type&)): Likewise.
      	(set(initializer_list<value_type>, const allocator_type&)): Likewise.
      	(set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
      	* include/bits/stl_multiset.h
      	(multiset(const allocator_type&)): Likewise.
      	(multiset(initializer_list<value_type>, const allocator_type&)):
      	Likewise.
      	(multiset(_InputIterator, _InputIterator, const allocator_type&)):
      	Likewise.
      
      From-SVN: r260806
      François Dumont committed
    • [NDS32] Optimize movmem and setmem operations. · 8889fbe5
      gcc/
      	* config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
      	implementation.
      	(unaligned_store_dw): Ditto.
      	* config/nds32/nds32-memory-manipulation.c
      	(nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
      	(nds32_gen_dup_4_byte_to_word_value): Rename to ...
      	(nds32_gen_dup_4_byte_to_word_value_aux): ... this.
      	(emit_setmem_word_loop): Rename to ...
      	(emit_setmem_doubleword_loop): ... this.
      	(nds32_gen_dup_4_byte_to_word_value): New function.
      	(nds32_gen_dup_8_byte_to_double_word_value): New function.
      	(nds32_expand_setmem_loop): Refine implementation.
      	(nds32_expand_setmem_loop_v3m): Ditto.
      	* config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
      	pattern.
      
      Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
      
      From-SVN: r260805
      Monk Chiang committed
    • [NDS32] Implement bswapsi2 and bswaphi2 patterns. · 0be3bad7
      gcc/
      	* config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
      
      From-SVN: r260804
      Chung-Ju Wu committed
    • [NDS32] new attribute no_prologue and new option -mret-in-naked-func. · 54c537e6
      gcc/
      	* config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
      	(nds32_init_machine_status): Initialize machine->attr_naked_p and
      	machine->attr_no_prologue_p.
      	(nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
      	(nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
      	(nds32_expand_epilogue): Consider attr_naked_p.
      	(nds32_expand_epilogue_v3pop): Likewise.
      	(nds32_can_use_return_insn): Likewise.
      	* config/nds32/nds32.h (machine_function): Add attr_naked_p and
      	attr_no_prologue_p fields.
      	* config/nds32/nds32.opt (mret-in-naked-func): New option.
      
      From-SVN: r260803
      Chung-Ju Wu committed
    • Daily bump. · 4cdb54ea
      From-SVN: r260801
      GCC Administrator committed
  2. 26 May, 2018 8 commits
    • re PR target/85918 (Conversions to/from [unsigned] long long are not vectorized… · 70d22cdd
      re PR target/85918 (Conversions to/from [unsigned] long long are not vectorized for AVX512DQ target)
      
      	PR target/85918
      	* config/i386/i386.md (fixunssuffix, floatunssuffix): New code
      	attributes.
      	* config/i386/sse.md
      	(<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
      	Rename to ...
      	(float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
      	... this.
      	(<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
      	Rename to ...
      	(float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
      	... this.
      	(*<floatsuffix>floatv2div2sf2): Rename to ...
      	(*float<floatunssuffix>v2div2sf2): ... this.
      	(<floatsuffix>floatv2div2sf2_mask): Rename to ...
      	(float<floatunssuffix>v2div2sf2_mask): ... this.
      	(*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
      	(*float<floatunssuffix>v2div2sf2_mask_1): ... this.
      	(<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
      	to ...
      	(fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
      	... this.
      	(<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
      	Rename to ...
      	(fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
      	... this.
      	(<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
      	Rename to ...
      	(fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
      	... this.
      	(<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
      	(fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
      	(vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
      	gen_ufix_truncv8dfv8si2.
      	* config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
      	__builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
      	__builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
      	__builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
      	__builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
      	__builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
      	__builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
      	Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
      
      	* gcc.target/i386/avx512dq-pr85918.c: New test.
      
      From-SVN: r260797
      Jakub Jelinek committed
    • Fix PR number in last commit. · 80c820d8
      From-SVN: r260796
      Jerry DeLisle committed
    • re PR target/89506 (ICE: in decompose, at rtl.h:2266 with -Og -g) · 8cb19ee3
      2018-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/89506
      	* io/write.c (write_integer): Initialise the fnode format to
      	FMT_NONE, used for list directed write.
      	(BUF_STACK_SZ): Bump default buffer size up to avoid allocs on
      	small stuff.
      
      From-SVN: r260795
      Jerry DeLisle committed
    • Fix changelog. · b61da1eb
      From-SVN: r260794
      Jerry DeLisle committed
    • re PR fortran/85840 (Memory leak in write.c) · 3c2ce893
      2018-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/85840
      	* io/write.c (write_float_0): Use separate local variable for
      	the float string length.
      
      From-SVN: r260793
      Jerry DeLisle committed
    • Don't check ifunc_resolver on error · cf3a2c1a
      Since ifunc_resolver isn't set when an error is detected, we should
      lookup ifunc attribute in this case.
      
      	PR target/85900
      	PR target/85345
      	* varasm.c (assemble_alias): Lookup ifunc attribute on error.
      
      From-SVN: r260792
      H.J. Lu committed
    • re PR bootstrap/85921 (/gcc/c-family/c-warn.c fails to build) · 44284983
      	PR bootstrap/85921
      	* c-warn.c (diagnose_mismatched_attributes): Remove unnecessary
      	noinline variable to workaround broken kernel headers.
      
      From-SVN: r260790
      Jakub Jelinek committed
    • Daily bump. · 95795b3a
      From-SVN: r260789
      GCC Administrator committed
  3. 25 May, 2018 26 commits
    • RISC-V: Add interrupt attribute support. · d0ebdd9f
      	gcc/
      	* config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
      	* config/riscv/riscv.c (struct machine_function): Add
      	interrupt_handler_p and attribute_checked_p fields.
      	(riscv_attribute_table): Add interrupt.
      	(riscv_interrupt_type_p): New.
      	(riscv_save_reg_p): Save extra regs for interrupt handler.
      	(riscv_use_save_libcall): Return false  for interrupt handler.
      	(riscv_first_stack_step): Add forward declaration.
      	(riscv_compute_frame_info): New local interrupt_save_t1.  Set it
      	for interrupt handler with large frame.  Use it for saved reg list.
      	(riscv_expand_prologue): Move flag_stack_usage_info support to
      	eliminate duplication.
      	(riscv_expand_epilogue): Generate mret for interrupt handler.
      	(riscv_epilogue_uses): New.
      	(riscv_can_use_return_insn): Return false for interrupt handler.
      	(riscv_function_ok_for_sibcall): Likewise.
      	(riscv_set_current_function): Add interrupt handler support.
      	* config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
      	* config/riscv/riscv.md (UNSPECV_MRET): New.
      	(GP_REGNUM): New.
      	(riscv_frflags, riscv_fsflags): Use tab after opcode.
      	(riscv_mret): New.
      	* doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
      
      	gcc/testsuite/
      	* gcc.target/riscv/interrupt-1.c: New.
      	* gcc.target/riscv/interrupt-2.c: New.
      	* gcc.target/riscv/interrupt-3.c: New.
      	* gcc.target/riscv/interrupt-4.c: New.
      	* gcc.target/riscv/interrupt-5.c: New.
      
      From-SVN: r260785
      Jim Wilson committed
    • re PR fortran/85786 (Segfault in associated intrinsic) · c0e8f02b
      2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/85786
      	* gfortran.dg/pr85786.f90: New test.
      
      From-SVN: r260783
      Steven G. Kargl committed
    • PR c++/85815 - reference to member of enclosing template. · d9338471
      	* search.c (lookup_base): Use currently_open_class.
      	(lookup_member): Use it regardless of -fconcepts.
      	* parser.c (cp_parser_postfix_dot_deref_expression): Check it.
      
      From-SVN: r260782
      Jason Merrill committed
    • Fix test case failures for pdp11 target. · 99dcfb5f
      	* gcc.c-torture/compile/20151204.c: Skip if pdp11.
      	* gcc.c-torture/compile/pr55921.c: Ditto.
      	* gcc.c-torture/compile/pr60655-1.c: Ditto.
      	* gcc.c-torture/compile/vector-align-1.c: Add max alignment if pdp11.
      
      From-SVN: r260781
      Paul Koning committed
    • CWG 616, 1213 - value category of subobject references. · 3983063e
      	* tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
      
      From-SVN: r260780
      Jason Merrill committed
    • re PR tree-optimization/85712 (ICE in all_phi_incrs_profitable_1 at… · 9d502741
      re PR tree-optimization/85712 (ICE in all_phi_incrs_profitable_1 at gcc/gimple-ssa-strength-reduction.c:3479)
      
      2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
      
      	PR tree-optimization/85712
      	* gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
      	this candidate has already been replaced in-situ by a copy.
      
      From-SVN: r260772
      Bill Schmidt committed
    • * inclhack.def (vxworks_iolib_include_unistd): New fix. · 1afe3e77
      From-SVN: r260763
      Rasmus Villemoes committed
    • PR c++/80485 - inline function non-zero address. · f22ed1ed
      	* symtab.c (nonzero_address): Check DECL_COMDAT.
      
      From-SVN: r260762
      Jason Merrill committed
    • re PR libstdc++/85768 (FreeBSD bootstrap fails due to undefined reference to 'backtrace') · 18b11937
      2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/85768
      	* src/c++11/debug.cc: Remove backtrace usage.
      
      From-SVN: r260761
      François Dumont committed
    • re PR rtl-optimization/83628 (performance regression when accessing arrays on alpha) · fc47a2fd
      	PR target/83628
      	* config/alpha/alpha.md (ashlsi3): New insn pattern.
      	(*ashlsi_se): Rename from *ashldi_se.  Define as sign
      	extension of SImode operation.  Use const123_operand predicate.
      	(*saddsi_1): Remove.
      	(*saddl_se_1): Ditto.
      	(*ssubsi_1): Ditto.
      	(*ssubl_se_1): Ditto.
      	* config/alpha/predicates.md (const123_operand): New predicate.
      	* config/alpha/constraints.md (P): Use IN_RANGE.
      
      From-SVN: r260760
      Uros Bizjak committed
    • tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter, defaulted to true. · 27312bf2
      2018-05-25  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
      	defaulted to true.
      	(ref_maybe_used_by_stmt_p): Likewise.
      	(stmt_may_clobber_ref_p): Likewise.
      	(stmt_may_clobber_ref_p_1): Likewise.
      	* tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
      	and pass it along.
      	(ref_maybe_used_by_stmt_p): Likewise.
      	(stmt_may_clobber_ref_p): Likewise.
      	(stmt_may_clobber_ref_p_1): Likewise.
      	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
      	the alias oracle to disambiguate DRs with stmts DR analysis
      	couldn't handle.
      	(vect_analyze_data_refs): Do not give up on not analyzable
      	DRs for BB vectorization.  Remove code truncating the dataref
      	vector.
      
      From-SVN: r260757
      Richard Biener committed
    • re PR target/85832 ([AVX512] possible shorter code when comparing with vector of zeros) · b55f342b
      	PR target/85832
      	* config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
      	Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
      	in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
      
      	* gcc.target/i386/avx512f-pr85832.c: New test.
      	* gcc.target/i386/avx512vl-pr85832.c: New test.
      	* gcc.target/i386/avx512bw-pr85832.c: New test.
      	* gcc.target/i386/avx512vlbw-pr85832.c: New test.
      
      From-SVN: r260756
      Jakub Jelinek committed
    • tree-vect-data-refs.c (vect_find_stmt_data_reference): New function, combining… · 8e846c66
      tree-vect-data-refs.c (vect_find_stmt_data_reference): New function, combining stmt data ref gathering and fatal analysis parts.
      
      2018-05-25  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-data-refs.c (vect_find_stmt_data_reference): New
      	function, combining stmt data ref gathering and fatal analysis
      	parts.
      	(vect_analyze_data_refs): Remove now redudnant code and simplify.
      	* tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
      	vect_analyze_loop_2 and use vect_find_stmt_data_reference.
      	* tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
      	* tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
      
      From-SVN: r260754
      Richard Biener committed
    • re PR tree-optimization/85720 (bad codegen for looped assignment of primitives at -O2) · 1623d9f3
      	PR tree-optimization/85720
      
      	* tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
      	SCC if all partitions are builtins.
      	(version_loop_by_alias_check): New parameter.  Generate cancelable
      	runtime alias check if all partitions are builtins.
      	(distribute_loop): Update call to above function.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/pr85720.c: New test.
      	* gcc.target/i386/avx256-unaligned-store-2.c: Disable loop pattern
      	distribution.
      
      From-SVN: r260753
      Bin Cheng committed
    • Fix a test-case (PR testsuite/85911). · cd3b2b62
      2018-05-25  Martin Liska  <mliska@suse.cz>
      
      	PR testsuite/85911
      	* gcc.dg/tree-prof/update-loopch.c: Do not scan
      	for 'Removing basic block'.
      
      From-SVN: r260748
      Martin Liska committed
    • tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files. · e3bfa377
      	* tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
      	(create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
      	(parm_default_def_partition_arg): Ditto.
      	(set_parm_default_def_partition): Ditto.
      	(get_parm_default_def_partitions): Ditto and make it static.
      	(get_undefined_value_partitions): Ditto and make it static.
      	(remove_ssa_form): Refactor call to init_var_map here.
      	* tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
      	computation for loop region.
      	(coalesce_partitions, compute_optimized_partition_bases): Ditto.
      	(register_default_def): Delete.
      	(for_all_parms, create_default_def): Move to tree-outof-ssa.c.
      	(parm_default_def_partition_arg): Ditto.
      	(set_parm_default_def_partition): Ditto.
      	(get_parm_default_def_partitions): Ditto and make it static.
      	(get_undefined_value_partitions): Ditto and make it static.
      	(coalesce_with_default, coalesce_with_default): Update comment.
      	(create_coalesce_list_for_region): New func factored out from
      	create_outofssa_var_map.
      	(populate_coalesce_list_for_outofssa): New func factored out from
      	create_outofssa_var_map and coalesce_ssa_name.
      	(create_outofssa_var_map): Delete.
      	(coalesce_ssa_name): Refactor to support live range computation.
      	* tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
      	(get_parm_default_def_partitions): Delete.
      	(get_undefined_value_partitions): Ditto.
      	* tree-ssa-live.c (init_var_map, delete_var_map): Support live range
      	computation for loop region.
      	(new_tree_live_info, loe_visit_block): Ditto.
      	(live_worklist, set_var_live_on_entry): Ditto.
      	(calculate_live_on_exit, verify_live_on_entry): Ditto.
      	* tree-ssa-live.h (struct _var_map): New fields.
      	(init_var_map): Change decl.
      	(region_contains_p): New.
      
      From-SVN: r260747
      Bin Cheng committed
    • * tree-ssa-live.h (live_merge_and_clear): Delete. · 34f7080e
      From-SVN: r260746
      Bin Cheng committed
    • re PR c++/85912 (-fdump-lang-raw ICE on valid code) · bcf253d5
      2018-05-25  Richard Biener  <rguenther@suse.de>
      
      	PR c++/85912
      	* tree-dump.c (dequeue_and_dump): Remove access to removed
      	operand 2 of a SWITCH_EXPR.
      
      From-SVN: r260744
      Richard Biener committed
    • [Ada] Improve performance of conversion from String to Long_Float · 529e1a3f
      Once it is sure that the result will be infinity, stop computation and return
      the result. This ensure that the function call duration is bounded. Before that
      change on some cases the computation was taking more than a few seconds.
      
      2018-05-25  Nicolas Roche  <roche@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-valrea.adb (Scan_Real): Abort computation once it is sure
      	that the result will be either -infinite or +infinite.
      
      From-SVN: r260743
      Nicolas Roche committed
    • [Ada] Remove 2GB secondary stack limit for 64-bit processors · 38806cd3
      This patch removes the restriction introduced recently that limited the size
      of the secondary stack to 2GB. The size of the secondary stack is now limited
      to half of the size of the memory address space for the target.
      
      2018-05-25  Patrick Bernardi  <bernardi@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-parame.ads, libgnat/s-parame__vxworks.ads,
      	libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads (Size_Type):
      	Expand range of type to match the address space of the target.
      	(Task_Storage_Size): Remove unused type.
      
      gcc/testsuite/
      
      	* gnat.dg/sec_stack1.adb: New testcase.
      
      From-SVN: r260742
      Patrick Bernardi committed
    • [Ada] Spurious error on fixed-point operation whose operands are expressions · 17dd35f4
      This patch fixes a spurious error in a fixed-point operand of a multiplying
      operator M when the operand is an adding operation and the context imposes
      a different fixed-point type to the result of M.
      
      2018-05-25  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Set_Mixed_Mode_Operand): If the operand is an expression
      	of a fixed point type and the parent is a multiplying operation,
      	resolve the operand with its own type because the context will impose a
      	resulting type on the result of the multiplication by means of
      	approriate conversion.
      
      gcc/testsuite/
      
      	* gnat.dg/fixedpnt4.adb: New testcase.
      
      From-SVN: r260741
      Ed Schonberg committed
    • [Ada] Spurious range check with Initialize_Scalars · bf5899e7
      This patch modifies the expansion of default-initialized array objects when
      pragma Initialize_Scalars or Normalize_Scalars is in effect to suppress the
      generation of checks on the constructed in-place aggregate. The aggregate
      intentionally contains invalid values which may not necessarily fit the
      constraints of a particular component type. Check suppression ensures that
      no spurious checks are generated, and that the effects of the pragmas are
      carried out.
      
      ------------
      -- Source --
      ------------
      
      --  gnat.adc
      
      pragma Initialize_Scalars;
      
      --  init_scalar.adb
      
      with Ada.Text_IO; use Ada.Text_IO;
      
      procedure Init_Scalar is
         type Fixed is delta 0.25 range -12.0 .. 1270.0;
         type Fixed_Array is array (1 .. 1) of Fixed;
      
      begin
         begin
            declare
               Obj : Fixed;
               pragma Unreferenced (Obj);
            begin null; end;
         exception
            when others => Put_Line ("ERROR: Fixed raised exception");
         end;
      
         begin
            declare
               Obj : Fixed_Array;
               pragma Unreferenced (Obj);
            begin null; end;
         exception
            when others => Put_Line ("ERROR: Fixed_Array raised exception");
         end;
      end Init_Scalar;
      
      -----------------
      -- Compilation --
      -----------------
      
      $ gnatmake -q init_scalar.adb
      $ ./init_scalar
      
      2018-05-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_ch3.adb (Default_Initialize_Object): Ensure that the analysis of
      	the in-place initialization aggregate created for pragmas
      	Initialize_Scalars or Normalize_Scalars is performed with checks
      	suppressed.
      
      From-SVN: r260740
      Hristian Kirtchev committed
    • [Ada] Remove "constant" attribute on Osint.Unknown_Attributes · f70b0116
      2018-05-25  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (Convert_To_Positional): Bump default for
      	Max_Others_Replicate to 32. Update comments.
      	* osint.ads (Unknown_Attributes): No longer pretend this is a constant.
      	(No_File_Info_Cache): Initialize separately.
      	* osint.adb (No_File_Info_Cache): Update initializer.
      
      From-SVN: r260739
      Arnaud Charlet committed
    • [Ada] Membership test of class-wide interface · 25409c3c
      The compiler rejects the use of a membership test when the left operand
      is a class-wide interface type object and the right operand is not a
      class-wide type.
      
      2018-05-25  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Membership_Op): Allow the use of the membership
      	test when the left operand is a class-wide interface and the right
      	operand is not a class-wide type.
      	* exp_ch4.adb (Tagged_Membership): Adding support for interface as the
      	left operand.
      
      gcc/testsuite/
      
      	* gnat.dg/interface7.adb: New testcase.
      
      From-SVN: r260738
      Javier Miranda committed
    • [Ada] Fix expansion of quantified expressions as part of "others" associations · 1f6237e3
      2018-05-25  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (Flatten): A quantified expression cannot be duplicated
      	in an others clause to prevent visibility issues with the generated
      	loop variable.
      	(Component_OK_For_Backend): Return false for a quantified expression.
      	(Check_Static_Component): Ditto.
      
      From-SVN: r260737
      Ed Schonberg committed
    • [Ada] Spurious secondary stack depletion · 25eadeea
      This patch reimplements the secondary stack allocation logic to eliminate an
      issue which causes the memory index to overflow while the stack itself uses
      very little memory, thus causing a spurious Storage_Error.
      
      The issue in details:
      
      The total amount of memory that the secondary stack can accomodate is dictated
      by System.Parameters.Size_Type which is really an Integer, giving roughly 2 GB
      of storage.
      
      The secondary stack is comprised of multiple frames which logically form a
      contiguous array of memory. Each frame maintans a range over which it operates,
      where
      
         Low  bound = Previous frame's high bound + 1
         High bound = Previous frame's high bound + Frame size
      
      The allocation logic starts by first checking whether the current top frame
      (which may not be the "last" frame in the secondary stack) has enough memory to
      fit an object. If it does, then that frame is used. If it does not, the logic
      then examines the subsequent frames, while carrying out the following actions:
      
         * If the frame is too small to fit the object, it is deleted
      
         * If the frame is big enough to fit the object, it is used
      
      If all the frames were too small (and thus deleted), a new frame is added which
      is big enough to fit the object.
      
      Due to an issue with the deletion logic, the last frame would never be deleted.
      Since any new frame's range is based on the previous frame's range, the new
      range would keep growing, even though the secondary stack may have very few
      frames in use. Eventually this growth overflows the memory index type.
      
      The overflow of the memory index type happens only when the secondary stack
      is full, and thus signals a Storage_Error. Due to the spurious growth of the
      ranges, the overflow happens much faster and results in a bogus stack depleton.
      
      The issue manifests only when each new memory request to the secondary stack is
      slightly bigger than the previous memory request, thus prompring the secondary
      stack to delete all its frames, and create a new one.
      
      2018-05-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-secsta.adb (SS_Allocate): Reimplemented.
      	(SS_Allocate_Dynamic): New routine. The allocation logic is now split
      	into three distring cases rather than in one loop which attempts to
      	handle all three cases. This rewrite eliminates an issue where the last
      	frame of the stack cannot be freed, thus causing the memory range of a
      	new frame to approach the overflow point of the memory index type.
      	Since the overflow is logically treated as a
      	too-much-memory-on-the-stack scenario, it causes a bogus Storage_Error.
      	(SS_Allocate_Static): New routine. The routine factorizes the static
      	secondary stack-related code from the former SS_Allocate.
      
      gcc/testsuite/
      
      	* gnat.dg/sec_stack2.adb: New testcase.
      
      From-SVN: r260736
      Hristian Kirtchev committed