1. 26 May, 2018 4 commits
  2. 25 May, 2018 36 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
    • [Ada] Document the '-U' option for gnatelim · bd42db1f
      2018-05-25  Sergey Rybin  <rybin@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_and_program_execution.rst: Add description of '-U'
      	option for gnatelim.
      
      From-SVN: r260735
      Sergey Rybin committed
    • [Ada] Crash on classwide precondition on subprogram with stub · 6459a31f
      This patch allows the compiler to handle properly a classwide precondition
      on a primitive operation whose body is a stub and a separate subunit.
      
      Executing:
      
         gnatmake -gnata -q check
         ./check
      
      must yield:
      
         precondition violated
      
      ----
      with Text_IO;
      with Msg_Data_Block_Decoder; use Msg_Data_Block_Decoder;
      procedure Check is
         Thing : T_Msg_Data_Block_Decoder;
         Value : Integer;
      begin
         begin
            Value := Get_Long_Term_Corrections (Thing);
         exception
            when others => Text_IO.Put_Line ("precondition violated");
         end;
      end Check;
      ----
      package Msg_Data_Block_Decoder is
         pragma Preelaborate;
         type T_Msg_Data_Block_Decoder is Tagged Limited null record;
      
         type T_Msg_Data_Block_Decoder_Class_Access is
             access all T_Msg_Data_Block_Decoder'Class;
      
         function Get_Decoded_Data (This : in T_Msg_Data_Block_Decoder)
            return Integer;
      
         function Get_Long_Term_Corrections
           (This : in T_Msg_Data_Block_Decoder) return Integer  with
             Pre'
              Class => Get_Decoded_Data (T_Msg_Data_Block_Decoder'Class (This)) = 2;
      
      end Msg_Data_Block_Decoder;
      ----
      package body Msg_Data_Block_Decoder is
      
         function Get_Long_Term_Corrections (This : in T_Msg_Data_Block_Decoder)
         return Integer is separate;
      
         function Get_Decoded_Data (This : in T_Msg_Data_Block_Decoder)
           return Integer is
         begin
           return 0;
         end Get_Decoded_Data;
      
      end Msg_Data_Block_Decoder;
      ----
      separate (Msg_Data_Block_Decoder)
      function Get_Long_Term_Corrections (This : in T_Msg_Data_Block_Decoder)
         return Integer is
      begin
        return 0;
      end Get_Long_Term_Corrections;
      
      2018-05-25  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not create
      	Class_Wide_Clone_Body when analyzing a subprogram_body_stub: the clone
      	is created when the proper body of the stub is analyzed.
      	* sem_util.adb (ZBuild_Class_Wide_Clone_Body): If the subprogram body
      	is the proper body of a subunit, the cloned body must be inserted in
      	the declarative list that contains the stub.
      
      From-SVN: r260734
      Ed Schonberg committed
    • [Ada] Fix for freezing of expression functions · 320fbd1e
      2018-05-25  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Expand_Simple_Function_Return): Add guard in check to
      	generate code for 6.5(8-10) so that we don't get an assertion error
      	when dealing with an incomplete return type.
      
      From-SVN: r260733
      Justin Squirek committed
    • [Ada] Strip too long expressions in debug routines · 29192f7b
      2018-05-25  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* pprint.adb (Expression_Name): Strip too long expressions to avoid
      	carrying very large strings.
      
      From-SVN: r260732
      Arnaud Charlet committed
    • [Ada] Disable the creation of the main task secondary stack by the binder · 733a4a3d
      Users can now specify that the binder should not create a secondary stack for
      the main (environment) task through the binder switch -Q0. This is useful for
      ZFP runtime users who allocate secondary stacks for their application
      themselves.
      
      2018-05-25  Patrick Bernardi  <bernardi@adacore.com>
      
      gcc/ada/
      
      	* switch-b.adb (Scan_Binder_Switches): binder switch -Q accepts Natural
      	numbers.
      
      From-SVN: r260731
      Patrick Bernardi committed
    • [Ada] Implement stack unwinding for Linux on AArch64 · 8ad3525a
      2018-05-25  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* tracebak.c (aarch64-linux): Implement.
      
      From-SVN: r260730
      Doug Rupp committed
    • [Ada] Minor reformatting · f9a0fd0b
      2018-05-25  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch8.adb: Minor reformatting.
      
      From-SVN: r260729
      Justin Squirek committed
    • [Ada] Fix convention for iteration with multiple loop variables · 308ac7f4
      Refactoring based on suggestions from GNAT frontend developers.  Semantics
      unaffected.
      
      2018-05-25  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_util.adb (Iterate_Call_Parameters): Fix code convention and
      	assertions.
      
      From-SVN: r260728
      Piotr Trojanek committed
    • [Ada] Minor reformatting · 9ea43db6
      2018-05-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* einfo.adb, einfo.ads, exp_ch3.adb, exp_ch8.adb, exp_unst.adb,
      	pprint.adb, sem_ch12.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb:
      	Minor reformatting.
      
      From-SVN: r260727
      Hristian Kirtchev committed
    • [Ada] Strengthen checks for instantiation with interface types · 41610f15
      2018-05-25  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch12.adb (Instance_Exists): New function, subsidiary of
      	Validate_Derived_Type_Instance, to verify that all interfaces
      	implemented by the formal type are also implemented by the actual. The
      	verification is complicated when an interface of the formal is declared
      	in a generic unit and the actual is declared in an instance of it.
      	There is currently no mechanism to relate an interface declared within
      	a generic to the corresponding interface in an instance, so we must
      	traverse the list of interfaces of the actual, looking for a name
      	match, and verifying that that interface is declared in an instance.
      
      From-SVN: r260726
      Ed Schonberg committed