1. 11 Jan, 2018 14 commits
    • [Ada] Minor reformatting · 6b199a18
      2018-01-11  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch8.adb: Minor comment fix.
      
      From-SVN: r256487
      Justin Squirek committed
    • [Ada] Missing finalization in case expression · 05344a33
      This patch modifies the processing of controlled transient objects within case
      expressions represented by an Expression_With_Actions node. The inspection of
      an individual action must continue in case it denotes a complex expression,
      such as a case statement, which in turn may contain additional transients.
      
      ------------
      -- Source --
      ------------
      
      --  pack.ads
      
      with Ada.Finalization; use Ada.Finalization;
      
      package Pack is
         function Next_Id return Natural;
      
         type Ctrl is new Controlled with record
            Id : Natural := 0;
         end record;
      
         procedure Adjust (Obj : in out Ctrl);
         procedure Finalize (Obj : in out Ctrl);
         procedure Initialize (Obj : in out Ctrl);
      
         function New_Ctrl return Ctrl;
      
         Empty : constant Ctrl := (Controlled with Id => 1);
      
         type Enum is (One, Two, Three);
      
         type Ctrl_Rec is record
            Comp : Ctrl;
            Kind : Enum;
         end record;
      
         procedure Proc (Obj : Ctrl_Rec);
      end Pack;
      
      --  pack.adb
      
      with Ada.Text_IO; use Ada.Text_IO;
      
      package body Pack is
         Id_Gen : Natural := 1;
      
         procedure Adjust (Obj : in out Ctrl) is
            Old_Id : constant Natural := Obj.Id;
            New_Id : Natural;
      
         begin
            if Old_Id = 0 then
               Put_Line ("  adj: ERROR already finalized");
            else
               New_Id := Old_Id * 100;
               Put_Line ("  adj: " & Old_Id'Img & " ->" & New_Id'Img);
               Obj.Id := New_Id;
            end if;
         end Adjust;
      
         procedure Finalize (Obj : in out Ctrl) is
            Old_Id : constant Natural := Obj.Id;
      
         begin
            if Old_Id = 0 then
               Put_Line ("  fin: ERROR already finalized");
            else
               Put_Line ("  fin: " & Old_Id'Img);
               Obj.Id := 0;
            end if;
         end Finalize;
      
         procedure Initialize (Obj : in out Ctrl) is
            New_Id : constant Natural := Next_Id;
         begin
            Put_Line ("  ini: " & New_Id'Img);
            Obj.Id := New_Id;
         end Initialize;
      
         procedure Proc (Obj : Ctrl_Rec) is
         begin
            Put_Line ("proc : " & Obj.Comp.Id'Img);
         end Proc;
      
         function Next_Id return Natural is
         begin
            Id_Gen := Id_Gen + 1;
            return Id_Gen;
         end Next_Id;
      
         function New_Ctrl return Ctrl is
            Obj : Ctrl;
         begin
            return Obj;
         end New_Ctrl;
      end Pack;
      
      --  main.adb
      
      with Ada.Text_IO; use Ada.Text_IO;
      with Pack;        use Pack;
      
      procedure Main is
         procedure Proc_Case_Expr (Mode : Enum) is
         begin
            Put_Line ("proc_case_expr: " & Mode'Img);
            Proc (case Mode is
                     when One   => (Kind => Two,   Comp => Empty),
                     when Two   => (Kind => Three, Comp => Empty),
                     when Three => (Kind => One,   Comp => New_Ctrl));
         end Proc_Case_Expr;
      
         procedure Proc_If_Expr (Mode : Enum) is
         begin
            Put_Line ("proc_if_expr: " & Mode'Img);
            Proc ((if    Mode = One then (Kind => Two,   Comp => Empty)
                   elsif Mode = Two then (Kind => Three, Comp => Empty)
                   else                  (Kind => One,   Comp => New_Ctrl)));
         end Proc_If_Expr;
      
      begin
         Proc_Case_Expr (One);
         Proc_Case_Expr (Two);
         Proc_Case_Expr (Three);
      
         Proc_If_Expr (One);
         Proc_If_Expr (Two);
         Proc_If_Expr (Three);
      end Main;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      $ gnatmake -q main.adb
      $ ./main
      proc_case_expr: ONE
        adj:  1 -> 100
      proc :  100
        fin:  100
      proc_case_expr: TWO
        adj:  1 -> 100
      proc :  100
        fin:  100
      proc_case_expr: THREE
        ini:  2
        adj:  2 -> 200
        fin:  2
        adj:  200 -> 20000
      proc :  20000
        fin:  20000
        fin:  200
      proc_if_expr: ONE
        adj:  1 -> 100
      proc :  100
        fin:  100
      proc_if_expr: TWO
        adj:  1 -> 100
      proc :  100
        fin:  100
      proc_if_expr: THREE
        ini:  3
        adj:  3 -> 300
        fin:  3
        adj:  300 -> 30000
      proc :  30000
        fin:  30000
        fin:  300
        fin:  1
      
      2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Process_Action): Do not abandon the inspection of an
      	individual action because the action may denote a complex expression,
      	such as a case statement, which in turn may contain additional
      	transient objects.
      
      From-SVN: r256486
      Hristian Kirtchev committed
    • [Ada] Crash on iterated_component_association in expression function · d940c627
      This patch improves on the handling of the Ada2020 construct Iterated_
      Component_Association in various contexts, when the expression involved
      is a record or array aggregate.
      
      Executing:
         gnatmake -gnatX -q main
         ./main
      
      must yield:
      
         123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
      
      ----
      with Text_IO; use Text_IO;
      with Exfor; use Exfor;
      procedure Main is
         Map : String := Table_ASCII;
      begin
         Put_Line (Map (50..91));
      end;
      ----
      package Exfor is
         function Table_ASCII return String is
            (for I in 1 .. Character'Pos (Character'Last) + 1 => Character'Val(I-1));
      end Exfor;
      
      2018-01-11  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_aggr.adb (Resolve_Iterated_Component_Association): Perform
      	analysis on a copy of the expression with a copy of the index variable,
      	because full expansion will rewrite construct into a loop with the
      	original loop variable.
      	* exp_aggr.adb (Gen_Assign): Defer analysis and resolution if the
      	expression is an iterated component association. Full analysis takes
      	place when construct is rewritten as a loop.
      	(In_Place_Assign_OK, Safe_Component): An iterated_component_association
      	is not safe for in-place assignment.
      	* sem_util.adb (Remove_Entity): Handle properly the case of an isolated
      	entity with no homonym and no other entity in the scope.
      
      From-SVN: r256485
      Ed Schonberg committed
    • [Ada] Wrong column in sloc of "expect name" error for loop variant · c8f25817
      This patch corrects error messages printed when using the pragma Loop_Variant
      without a named argument from having an incorrect column number in some cases.
      
      2018-01-11  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_prag.adb (Analyze_Pragma:Pragma_Loop_Variant): Modify error
      	message to be printed on the pragma argument identifier.
      
      gcc/testsuite/
      
      	* gnat.dg/loopvar.adb: New testcase.
      
      From-SVN: r256484
      Justin Squirek committed
    • [Ada] Inconsistent scope chain due to quantified expression · 51f3e4e1
      This patch corrects the minor decoration performed on invariant procedures in
      case the procedure is not inserted into the tree and analyzed. The decoration
      now constructs a proper first/next/last entity chain containing the single
      formal parameter which represents the object of the related type. The chain
      then ensures that any other entities generated by the [pre]analysis of the
      invariant expression will be properly added to the chain.
      
      The issue was discovered during the development of the GNATprove tool and
      is not visible to end users. No simple test is available because this would
      require a debug session.
      
      2018-01-11  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last
      	entity of the generated invariant procedure in order to construct a
      	proper entity chain.
      
      From-SVN: r256483
      Hristian Kirtchev committed
    • [Ada] Fix minor comment issues · 593e3172
      2018-01-11  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Build_Predicate_Functions): Fix minor issues in
      	comment.
      
      From-SVN: r256482
      Piotr Trojanek committed
    • einfo.ads, einfo.adb (Activation_Record_Component, [...]): Allow E_Discriminant. · 89a4fa68
      2018-01-11  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads, einfo.adb (Activation_Record_Component,
      	Set_Activation_Record_Component, Set_Is_Uplevel_Referenced_Entity):
      	Allow E_Discriminant.
      
      From-SVN: r256481
      Arnaud Charlet committed
    • re PR tree-optimization/83189 (internal compiler error: in probability_in, at profile-count.h:1050) · 29c02e65
      
      	PR middle-end/83189
      	* gfortran.fortran-torture/compile/pr83189.f90: New testcase.
      	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
      	profile.
      
      From-SVN: r256480
      Jan Hubicka committed
    • re PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple… · 3211aea2
      re PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple hot/cold transitions found))
      
      	PR middle-end/83575
      	* cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
      	when in layout mode.
      	(cfg_layout_finalize): Do not verify cfg before we are out of layout.
      	* cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
      	partition fixup.
      
      	* gcc.c-torture/compile/pr83575.c: New testcase.
      
      From-SVN: r256479
      Jan Hubicka committed
    • aarch64-modes.def (V2HF): New VECTOR_MODE. · 27086ea3
      2018-01-10  Michael Collison  <michael.collison@arm.com>
      
      	* config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
      	* config/aarch64/aarch64-option-extension.def: Add
      	AARCH64_OPT_EXTENSION of 'fp16fml'.
      	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
      	(__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
      	* config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
      	* config/aarch64/constraints.md (Ui7): New constraint.
      	* config/aarch64/iterators.md (VFMLA_W): New mode iterator.
      	(VFMLA_SEL_W): Ditto.
      	(f16quad): Ditto.
      	(f16mac1): Ditto.
      	(VFMLA16_LOW): New int iterator.
      	(VFMLA16_HIGH): Ditto.
      	(UNSPEC_FMLAL): New unspec.
      	(UNSPEC_FMLSL): Ditto.
      	(UNSPEC_FMLAL2): Ditto.
      	(UNSPEC_FMLSL2): Ditto.
      	(f16mac): New code attribute.
      	* config/aarch64/aarch64-simd-builtins.def
      	(aarch64_fmlal_lowv2sf): Ditto.
      	(aarch64_fmlsl_lowv2sf): Ditto.
      	(aarch64_fmlalq_lowv4sf): Ditto.
      	(aarch64_fmlslq_lowv4sf): Ditto.
      	(aarch64_fmlal_highv2sf): Ditto.
      	(aarch64_fmlsl_highv2sf): Ditto.
      	(aarch64_fmlalq_highv4sf): Ditto.
      	(aarch64_fmlslq_highv4sf): Ditto.
      	(aarch64_fmlal_lane_lowv2sf): Ditto.
      	(aarch64_fmlsl_lane_lowv2sf): Ditto.
      	(aarch64_fmlal_laneq_lowv2sf): Ditto.
      	(aarch64_fmlsl_laneq_lowv2sf): Ditto.
      	(aarch64_fmlalq_lane_lowv4sf): Ditto.
      	(aarch64_fmlsl_lane_lowv4sf): Ditto.
      	(aarch64_fmlalq_laneq_lowv4sf): Ditto.
      	(aarch64_fmlsl_laneq_lowv4sf): Ditto.
      	(aarch64_fmlal_lane_highv2sf): Ditto.
      	(aarch64_fmlsl_lane_highv2sf): Ditto.
      	(aarch64_fmlal_laneq_highv2sf): Ditto.
      	(aarch64_fmlsl_laneq_highv2sf): Ditto.
      	(aarch64_fmlalq_lane_highv4sf): Ditto.
      	(aarch64_fmlsl_lane_highv4sf): Ditto.
      	(aarch64_fmlalq_laneq_highv4sf): Ditto.
      	(aarch64_fmlsl_laneq_highv4sf): Ditto.
      	* config/aarch64/aarch64-simd.md:
      	(aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
      	(aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
      	(aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
      	(aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
      	(aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
      	(aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
      	(aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
      	(aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
      	(aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
      	(aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
      	(aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
      	(aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
      	(aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
      	(aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
      	(aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
      	(aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
      	(aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
      	(aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
      	(aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
      	(aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
      	* config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
      	(vfmlsl_low_u32): Ditto.
      	(vfmlalq_low_u32): Ditto.
      	(vfmlslq_low_u32): Ditto.
      	(vfmlal_high_u32): Ditto.
      	(vfmlsl_high_u32): Ditto.
      	(vfmlalq_high_u32): Ditto.
      	(vfmlslq_high_u32): Ditto.
      	(vfmlal_lane_low_u32): Ditto.
      	(vfmlsl_lane_low_u32): Ditto.
      	(vfmlal_laneq_low_u32): Ditto.
      	(vfmlsl_laneq_low_u32): Ditto.
      	(vfmlalq_lane_low_u32): Ditto.
      	(vfmlslq_lane_low_u32): Ditto.
      	(vfmlalq_laneq_low_u32): Ditto.
      	(vfmlslq_laneq_low_u32): Ditto.
      	(vfmlal_lane_high_u32): Ditto.
      	(vfmlsl_lane_high_u32): Ditto.
      	(vfmlal_laneq_high_u32): Ditto.
      	(vfmlsl_laneq_high_u32): Ditto.
      	(vfmlalq_lane_high_u32): Ditto.
      	(vfmlslq_lane_high_u32): Ditto.
      	(vfmlalq_laneq_high_u32): Ditto.
      	(vfmlslq_laneq_high_u32): Ditto.
      	* config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
      	(AARCH64_FL_FOR_ARCH8_4): New.
      	(AARCH64_ISA_F16FML): New ISA flag.
      	(TARGET_F16FML): New feature flag for fp16fml.
      	(doc/invoke.texi): Document new fp16fml option.
      
      2018-01-10  Michael Collison  <michael.collison@arm.com>
      
      	* config/aarch64/aarch64-builtins.c:
      	(aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
      	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
      	(__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
      	* config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
      	(AARCH64_ISA_SHA3): New ISA flag.
      	(TARGET_SHA3): New feature flag for sha3.
      	* config/aarch64/iterators.md (sha512_op): New int attribute.
      	(CRYPTO_SHA512): New int iterator.
      	(UNSPEC_SHA512H): New unspec.
      	(UNSPEC_SHA512H2): Ditto.
      	(UNSPEC_SHA512SU0): Ditto.
      	(UNSPEC_SHA512SU1): Ditto.
      	* config/aarch64/aarch64-simd-builtins.def
      	(aarch64_crypto_sha512hqv2di): New builtin.
      	(aarch64_crypto_sha512h2qv2di): Ditto.
      	(aarch64_crypto_sha512su0qv2di): Ditto.
      	(aarch64_crypto_sha512su1qv2di): Ditto.
      	(aarch64_eor3qv8hi): Ditto.
      	(aarch64_rax1qv2di): Ditto.
      	(aarch64_xarqv2di): Ditto.
      	(aarch64_bcaxqv8hi): Ditto.
      	* config/aarch64/aarch64-simd.md:
      	(aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
      	(aarch64_crypto_sha512su0qv2di): Ditto.
      	(aarch64_crypto_sha512su1qv2di): Ditto.
      	(aarch64_eor3qv8hi): Ditto.
      	(aarch64_rax1qv2di): Ditto.
      	(aarch64_xarqv2di): Ditto.
      	(aarch64_bcaxqv8hi): Ditto.
      	* config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
      	(vsha512h2q_u64): Ditto.
      	(vsha512su0q_u64): Ditto.
      	(vsha512su1q_u64): Ditto.
      	(veor3q_u16): Ditto.
      	(vrax1q_u64): Ditto.
      	(vxarq_u64): Ditto.
      	(vbcaxq_u16): Ditto.
      	* config/arm/types.md (crypto_sha512): New type attribute.
      	(crypto_sha3): Ditto.
      	(doc/invoke.texi): Document new sha3 option.
      
      2018-01-10  Michael Collison  <michael.collison@arm.com>
      
      	* config/aarch64/aarch64-builtins.c:
      	(aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
      	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
      	(__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
      	(__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
      	* config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
      	(AARCH64_ISA_SM4): New ISA flag.
      	(TARGET_SM4): New feature flag for sm4.
      	* config/aarch64/aarch64-simd-builtins.def
      	(aarch64_sm3ss1qv4si): Ditto.
      	(aarch64_sm3tt1aq4si): Ditto.
      	(aarch64_sm3tt1bq4si): Ditto.
      	(aarch64_sm3tt2aq4si): Ditto.
      	(aarch64_sm3tt2bq4si): Ditto.
      	(aarch64_sm3partw1qv4si): Ditto.
      	(aarch64_sm3partw2qv4si): Ditto.
      	(aarch64_sm4eqv4si): Ditto.
      	(aarch64_sm4ekeyqv4si): Ditto.
      	* config/aarch64/aarch64-simd.md:
      	(aarch64_sm3ss1qv4si): Ditto.
      	(aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
      	(aarch64_sm3partw<sm3part_op>qv4si): Ditto.
      	(aarch64_sm4eqv4si): Ditto.
      	(aarch64_sm4ekeyqv4si): Ditto.
      	* config/aarch64/iterators.md (sm3tt_op): New int iterator.
      	(sm3part_op): Ditto.
      	(CRYPTO_SM3TT): Ditto.
      	(CRYPTO_SM3PART): Ditto.
      	(UNSPEC_SM3SS1): New unspec.
      	(UNSPEC_SM3TT1A): Ditto.
      	(UNSPEC_SM3TT1B): Ditto.
      	(UNSPEC_SM3TT2A): Ditto.
      	(UNSPEC_SM3TT2B): Ditto.
      	(UNSPEC_SM3PARTW1): Ditto.
      	(UNSPEC_SM3PARTW2): Ditto.
      	(UNSPEC_SM4E): Ditto.
      	(UNSPEC_SM4EKEY): Ditto.
      	* config/aarch64/constraints.md (Ui2): New constraint.
      	* config/aarch64/predicates.md (aarch64_imm2): New predicate.
      	* config/arm/types.md (crypto_sm3): New type attribute.
      	(crypto_sm4): Ditto.
      	* config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
      	(vsm3tt1aq_u32): Ditto.
      	(vsm3tt1bq_u32): Ditto.
      	(vsm3tt2aq_u32): Ditto.
      	(vsm3tt2bq_u32): Ditto.
      	(vsm3partw1q_u32): Ditto.
      	(vsm3partw2q_u32): Ditto.
      	(vsm4eq_u32): Ditto.
      	(vsm4ekeyq_u32): Ditto.
      	(doc/invoke.texi): Document new sm4 option.
      
      2018-01-10  Michael Collison  <michael.collison@arm.com>
      
      	* config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
      	* config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
      	(AARCH64_FL_FOR_ARCH8_4): New.
      	(AARCH64_FL_V8_4): New flag.
      	(doc/invoke.texi): Document new armv8.4-a option.
      
      2018-01-10  Michael Collison  <michael.collison@arm.com>
      
      	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
      	(__ARM_FEATURE_AES): Define if TARGET_AES is true.
      	(__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
      	* config/aarch64/aarch64-option-extension.def: Add
      	AARCH64_OPT_EXTENSION of 'sha2'.
      	(aes): Add AARCH64_OPT_EXTENSION of 'aes'.
      	(crypto): Disable sha2 and aes if crypto disabled.
      	(crypto): Enable aes and sha2 if enabled.
      	(simd): Disable sha2 and aes if simd disabled.
      	* config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
      	New flags.
      	(AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
      	(TARGET_SHA2): New feature flag for sha2.
      	(TARGET_AES): New feature flag for aes.
      	* config/aarch64/aarch64-simd.md:
      	(aarch64_crypto_aes<aes_op>v16qi): Make pattern
      	conditional on TARGET_AES.
      	(aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
      	(aarch64_crypto_sha1hsi): Make pattern conditional
      	on TARGET_SHA2.
      	(aarch64_crypto_sha1hv4si): Ditto.
      	(aarch64_be_crypto_sha1hv4si): Ditto.
      	(aarch64_crypto_sha1su1v4si): Ditto.
      	(aarch64_crypto_sha1<sha1_op>v4si): Ditto.
      	(aarch64_crypto_sha1su0v4si): Ditto.
      	(aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
      	(aarch64_crypto_sha256su0v4si): Ditto.
      	(aarch64_crypto_sha256su1v4si): Ditto.
      	(doc/invoke.texi): Document new aes and sha2 options.
      
      From-SVN: r256478
      Michael Collison committed
    • PR tree-optimization/83781 - Bootstrap failed on x86 with --with-arch=corei7 · 1bfd6a00
      PR tree-optimization/83781 - Bootstrap failed on x86 with --with-arch=corei7
        --with-cpu=corei7
      
      gcc/ChangeLog:
      	* gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
      	as string arrays.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/strlenopt-42.c: New test.
      
      From-SVN: r256477
      Martin Sebor committed
    • re PR tree-optimization/83501 (strlen(a) not folded after strcpy(a, "...")) · 05ef3173
      2018-01-11  Martin Sebor  <msebor@gmail.com>
      	    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/83501
      	PR tree-optimization/81703
      
      	* tree-ssa-strlen.c (get_string_cst): Rename...
      	(get_string_len): ...to this.  Handle global constants.
      	(handle_char_store): Adjust.
      
      testsuite/
      	* gcc.dg/strlenopt-39.c: New test-case.
      	* gcc.dg/pr81703.c: Likewise.
      
      Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
      
      From-SVN: r256475
      Martin Sebor committed
    • debug/dwarf: formStrp uses a 64-bit value for 64-bit DWARF · 84057372
          
          No test as the only system I know that uses 64-bit DWARF is AIX.
          
          Backport of https://golang.org/cl/84379, which will be in Go 1.11.
          Backporting now for AIX support in gccgo.
          
          Reviewed-on: https://go-review.googlesource.com/87296
      
      From-SVN: r256474
      Ian Lance Taylor committed
    • Daily bump. · b33b5363
      From-SVN: r256472
      GCC Administrator committed
  2. 10 Jan, 2018 26 commits
    • decl.c (gnat_to_gnu_component_type): Apply the check for atomic access once the… · af95bb26
      decl.c (gnat_to_gnu_component_type): Apply the check for atomic access once the component size is taken into account...
      
      	* gcc-interface/decl.c (gnat_to_gnu_component_type): Apply the check
      	for atomic access once the component size is taken into account and
      	also do it if the component type is Atomic or Volatile_Full_Access.
      
      From-SVN: r256465
      Eric Botcazou committed
    • re PR fortran/82367 (ICE with deferred length string allocate on non-deferred length argument) · bdd82c9b
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/82367
      	* resolve.c (resolve_allocate_expr): Check for NULL pointer.
      
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/82367
      	* gfortran.dg/deferred_character_18.f90: New test.
      
      From-SVN: r256464
      Steven G. Kargl committed
    • c-ada-spec.c (dump_number): Add FLOAT_P parameter. · 68dc87c3
      	* c-ada-spec.c (dump_number): Add FLOAT_P parameter.
      	Skip 'f' and 'F' characters if it is true.
      	(store_ada_macro): Minor tweak.
      	(dump_ada_macros) <CPP_COMMENT>: Likewise.
      	<CPP_WSTRING>: Likewise.
      	<CPP_STRING>: Output '&' in the buffer if not the first string.
      	<CPP_NUMBER>: Adjust calls to dump_number.
      
      From-SVN: r256463
      Eric Botcazou committed
    • RISC-V: Add naked function support. · 8cad5b14
      	2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
      
      	gcc/
      	* config/riscv/riscv-protos.h (riscv_output_return): New.
      	* config/riscv/riscv.c (struct machine_function): New naked_p field.
      	(riscv_attribute_table, riscv_output_return),
      	(riscv_handle_fndecl_attribute, riscv_naked_function_p),
      	(riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
      	(riscv_compute_frame_info): Only compute frame->mask if not a naked
      	function.
      	(riscv_expand_prologue): Add early return for naked function.
      	(riscv_expand_epilogue): Likewise.
      	(riscv_function_ok_for_sibcall): Return false for naked function.
      	(riscv_set_current_function): New.
      	(TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
      	(TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
      	* config/riscv/riscv.md (simple_return): Call riscv_output_return.
      	* doc/extend.texi (RISC-V Function Attributes): New.
      
      Co-Authored-By: Jim Wilson <jimw@sifive.com>
      
      From-SVN: r256462
      Kito Cheng committed
    • argv.c (expandargv): Correct check for dynamically allocated argv. · 3ec62f54
      2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>
      
      	* argv.c (expandargv): Correct check for dynamically
      	allocated argv.
      
      From-SVN: r256460
      Daniel van Gerpen committed
    • rs6000.c (is_complex_IBM_long_double): Explicitly check for 128-bit long double… · 83cbbe3a
      rs6000.c (is_complex_IBM_long_double): Explicitly check for 128-bit long double before checking TCmode.
      
      2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
      	check for 128-bit long double before checking TCmode.
      	* config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
      	128-bit long doubles before checking TFmode or TCmode.
      	(FLOAT128_IBM_P): Likewise.
      
      From-SVN: r256458
      Michael Meissner committed
    • PR tree-optimization/83671 - Fix for false positive reported by… · c42d0aa0
      PR tree-optimization/83671 - Fix for false positive reported by -Wstringop-overflow does not work with inlining
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/83671
      	* gcc.dg/strlenopt-40.c: New test.
      	* gcc.dg/strlenopt-41.c: New test.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/83671
      	* builtins.c (c_strlen): Unconditionally return zero for the empty
      	string.
      	Use -Warray-bounds for warnings.
      	* gimple-fold.c (get_range_strlen): Handle non-constant lengths
      	for non-constant array indices with COMPONENT_REF, arrays of
      	arrays, and pointers to arrays.
      	(gimple_fold_builtin_strlen): Determine and set length range for
      	non-constant character arrays.
      
      From-SVN: r256457
      Martin Sebor committed
    • re PR middle-end/81897 (spurious -Wmaybe-uninitialized warning) · e7c6abad
      	PR middle-end/81897
      	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
      	empty blocks.
      
      From-SVN: r256456
      Aldy Hernandez committed
    • [multiple changes] · 266404a8
      2018-01-10 Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83093
      	* resolve.c (resolve_charlen): Check the type of cl->length
      	after resolution.
      
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83093
      	* gfortran.dg/allocate_with_typespec_7.f90: New test.
      
      From-SVN: r256455
      Steven G. Kargl committed
    • re PR target/83399 (Power8 ICE During LRA with 2-op rtl pattern for lvx instruction) · 2025a48d
      gcc/
      	PR target/83399
      	* config/rs6000/rs6000.c (print_operand) <'y'>: Use
      	VECTOR_MEM_ALTIVEC_OR_VSX_P.
      	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
      	indexed_or_indirect_operand predicate.
      	(*vsx_le_perm_load_<mode> for VSX_W): Likewise.
      	(*vsx_le_perm_load_v8hi): Likewise.
      	(*vsx_le_perm_load_v16qi): Likewise.
      	(*vsx_le_perm_store_<mode> for VSX_D): Likewise.
      	(*vsx_le_perm_store_<mode> for VSX_W): Likewise.
      	(*vsx_le_perm_store_v8hi): Likewise.
      	(*vsx_le_perm_store_v16qi): Likewise.
      	(eight unnamed splitters): Likewise.
      
      gcc/testsuite/
      	PR target/83399
      	* gcc.target/powerpc/pr83399.c: New test.
      
      From-SVN: r256453
      Peter Bergner committed
    • x86intrin.h: Change #warning to #error. · 9e0fa36a
      	* config/rs6000/x86intrin.h: Change #warning to #error. Update message.
      	* config/rs6000/emmintrin.h: Likewise.
      	* config/rs6000/mmintrin.h: Likewise.
      	* config/rs6000/xmmintrin.h: Likewise.
      
      From-SVN: r256452
      Peter Bergner committed
    • parser.c (cp_parser_std_attribute_spec): When token_pair::require_open /… · d90a2542
      parser.c (cp_parser_std_attribute_spec): When token_pair::require_open / require_close return false simply return...
      
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (cp_parser_std_attribute_spec): When
              token_pair::require_open / require_close return false simply
      	return error_mark_node, avoid duplicate cp_parser_error about
      	expected '(' / ')', respectively.
      
      From-SVN: r256451
      Paolo Carlini committed
    • Preserving locations for variable-uses and constants (PR c++/43486) · 9a004410
      This patch implements location wrapper nodes, preserving source locations
      of the uses of variables and constants in various places in the
      C++ frontend: at the arguments at callsites, and for typeid, alignof,
      sizeof, and offsetof.
      
      For example, it allows the C++ FE to underline the pertinent argument
      for mismatching calls, for such expressions, improving:
      
      extern int callee (int one, const char *two, float three);
      
      int caller (int first, int second, float third)
      {
        return callee (first, second, third);
      }
      
      from
      
      test.cc: In function 'int caller(int, int, float)':
      test.cc:5:38: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
         return callee (first, second, third);
                                            ^
      test.cc:1:41: note:   initializing argument 2 of 'int callee(int, const char*, float)'
       extern int callee (int one, const char *two, float three);
                                   ~~~~~~~~~~~~^~~
      
      to:
      
      test.cc: In function 'int caller(int, int, float)':
      test.cc:5:25: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
         return callee (first, second, third);
                               ^~~~~~
      test.cc:1:41: note:   initializing argument 2 of 'int callee(int, const char*, float)'
       extern int callee (int one, const char *two, float three);
                                   ~~~~~~~~~~~~^~~
      
      This is the combination of the following patches:
      
        "[PATCH 01/14] C++: preserve locations within build_address"
           https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00883.html
      
        "[PATCH v2.4 of 02/14] Support for adding and stripping location_t wrapper nodes"
          https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00591.html
      
        "[PATCH] Eliminate location wrappers in tree_nop_conversion/STRIP_NOPS"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01330.html
      
        "[PATCH v4 of 03/14] C++: add location_t wrapper nodes during parsing (minimal impl)"
          https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00660.html
      
        "[PATCH 04/14] Update testsuite to show improvements"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00891.html
      
        "[v3 of 05/14] C++: handle locations wrappers when calling warn_for_memset"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01378.html
      
        "[PATCH 07/14] reject_gcc_builtin: strip any location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00886.html
      
        "[v3 of PATCH 08/14] cp/tree.c: strip location wrappers in lvalue_kind"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01433.html
      
        "[PATCH 09/14] Strip location wrappers in null_ptr_cst_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00888.html
      
        "[PATCH 11/14] Handle location wrappers in string_conv_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00890.html
      
        "[PATCH 12/14] C++: introduce null_node_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00894.html
      
        "[v3 of PATCH 13/14] c-format.c: handle location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01494.html
      
        "[PATCH 14/14] pp_c_cast_expression: don't print casts for location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00893.html
      
        "[v3 of PATCH 15/14] Use fold_for_warn in get_atomic_generic_size"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01380.html
      
        "[PATCH] Add selftest for "fold_for_warn (error_mark_node)""
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01385.html
      
      gcc/c-family/ChangeLog:
      	PR c++/43486
      	* c-common.c: Include "selftest.h".
      	(get_atomic_generic_size): Perform the test for integral type
      	before the range test for any integer constant, fixing indentation
      	of braces.  Call fold_for_warn before testing for an INTEGER_CST.
      	(reject_gcc_builtin): Strip any location wrapper from EXPR.
      	(selftest::test_fold_for_warn): New function.
      	(selftest::c_common_c_tests): New function.
      	(selftest::c_family_tests): Call it, and
      	selftest::c_pretty_print_c_tests.
      	* c-common.h (selftest::c_pretty_print_c_tests): New decl.
      	* c-format.c (check_format_arg): Convert VAR_P check to a
      	fold_for_warn.
      	* c-pretty-print.c: Include "selftest.h".
      	(pp_c_cast_expression): Don't print casts for location wrappers.
      	(selftest::assert_c_pretty_printer_output): New function.
      	(ASSERT_C_PRETTY_PRINTER_OUTPUT): New macro.
      	(selftest::test_location_wrappers): New function.
      	(selftest::c_pretty_print_c_tests): New function.
      	* c-warn.c (warn_for_memset): Call fold_for_warn on the arguments.
      
      gcc/cp/ChangeLog:
      	PR c++/43486
      	* call.c (null_ptr_cst_p): Strip location wrappers when
      	converting from '0' to a pointer type in C++11 onwards.
      	(conversion_null_warnings): Replace comparison with null_node with
      	call to null_node_p.
      	(build_over_call): Likewise.
      	* cp-gimplify.c (cp_fold): Remove the early bailout when
      	processing_template_decl.
      	* cp-lang.c (selftest::run_cp_tests): Call
      	selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
      	* cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
      	(selftest::run_cp_tests): Move decl to bottom of file.
      	(null_node_p): New inline function.
      	(selftest::cp_pt_c_tests): New decl.
      	(selftest::cp_tree_c_tests): New decl.
      	* cvt.c (build_expr_type_conversion): Replace comparison with
      	null_node with call to null_node_p.
      	* error.c (args_to_string): Likewise.
      	* except.c (build_throw): Likewise.
      	* mangle.c (write_expression): Skip location wrapper nodes.
      	* parser.c (literal_integer_zerop): New function.
      	(cp_parser_postfix_expression): Call maybe_add_location_wrapper on
      	the result for RID_TYPEID. Pass true for new "wrap_locations_p"
      	param of cp_parser_parenthesized_expression_list.  When calling
      	warn_for_memset, replace integer_zerop calls with
      	literal_integer_zerop, eliminating the double logical negation
      	cast to bool.  Eliminate the special-casing for CONST_DECL in
      	favor of the fold_for_warn within warn_for_memset.
      	(cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
      	param, defaulting to false.  Convert "expr" to a cp_expr, and call
      	maybe_add_location_wrapper on it when wrap_locations_p is true.
      	(cp_parser_unary_expression): Call maybe_add_location_wrapper on
      	the result for RID_ALIGNOF and RID_SIZEOF.
      	(cp_parser_builtin_offsetof): Likewise.
      	* pt.c: Include "selftest.h".
      	(tsubst_copy): Handle location wrappers.
      	(tsubst_copy_and_build): Likewise.
      	(build_non_dependent_expr): Likewise.
      	(selftest::test_build_non_dependent_expr): New function.
      	(selftest::cp_pt_c_tests): New function.
      	* tree.c: Include "selftest.h".
      	(lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
      	(selftest::test_lvalue_kind): New function.
      	(selftest::cp_tree_c_tests): New function.
      	* typeck.c (string_conv_p): Strip any location wrapper from "exp".
      	(cp_build_binary_op): Replace comparison with null_node with call
      	to null_node_p.
      	(build_address): Use location of operand when building address
      	expression.
      
      gcc/testsuite/ChangeLog:
      	PR c++/43486
      	* g++.dg/diagnostic/param-type-mismatch.C: Update expected results
      	to reflect that the arguments are correctly underlined.
      	* g++.dg/plugin/diagnostic-test-expressions-1.C: Add test coverage
      	for globals, params, locals and literals.
      	(test_sizeof): Directly test the location of "sizeof", rather than
      	when used in compound expressions.
      	(test_alignof): Likewise for "alignof".
      	(test_string_literals): Likewise for string literals.
      	(test_numeric_literals): Likewise for numeric literals.
      	(test_builtin_offsetof): Likewise for "__builtin_offsetof".
      	(test_typeid): Likewise for typeid.
      	(test_unary_plus): New.
      	* g++.dg/warn/Wformat-1.C: Add tests of pointer arithmetic on
      	format strings.
      
      gcc/ChangeLog:
      	PR c++/43486
      	* tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
      	"public_flag".
      	* tree.c (tree_nop_conversion): Return true for location wrapper
      	nodes.
      	(maybe_wrap_with_location): New function.
      	(selftest::check_strip_nops): New function.
      	(selftest::test_location_wrappers): New function.
      	(selftest::tree_c_tests): Call it.
      	* tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
      	(maybe_wrap_with_location): New decl.
      	(EXPR_LOCATION_WRAPPER_P): New macro.
      	(location_wrapper_p): New inline function.
      	(tree_strip_any_location_wrapper): New inline function.
      
      From-SVN: r256448
      David Malcolm committed
    • pr82618.c (dg-options): Add -mno-stv. · 60d87d86
      	* gcc.target/i386/pr82618.c (dg-options): Add -mno-stv.
      
      From-SVN: r256447
      Uros Bizjak committed
    • libgo: add platform support for SuperH · fd0c1dd1
          
          Reviewed-on: https://go-review.googlesource.com/84555
      
      From-SVN: r256446
      Ian Lance Taylor committed
    • memcmp-1.c: Reduce runtime to something reasonable. · ec2f999b
      2018-01-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
      
      	* gcc.dg/memcmp-1.c: Reduce runtime to something reasonable.
      
      From-SVN: r256443
      Aaron Sawdey committed
    • Add missing .a files. · 7074b41b
      Add missing .a files.  These should have been committed with the
      update to go1.10beta1, but were skipped because by default Subversion
      ignores all files matching *.a.
      
      From-SVN: r256442
      Ian Lance Taylor committed
    • re PR c++/82541 (Wduplicated-branches triggers in template context) · 6bebae75
      	PR c++/82541
      	* call.c (build_conditional_expr_1): Check complain before warning.
      	* pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
      	-Wduplicated-branches.
      
      	* g++.dg/warn/Wduplicated-branches4.C: New test.
      
      From-SVN: r256441
      Marek Polacek committed
    • re PR c++/81327 (cast to void* does not suppress -Wclass-memaccess) · e99ef408
      	PR c++/81327
      	* call.c (maybe_warn_class_memaccess): Add forward declaration.
      	Change last argument from tree * to const vec<tree, va_gc> *, adjust
      	args uses and check number of operands too.  Don't strip away any
      	nops.  Use maybe_constant_value when looking for INTEGER_CST args.
      	Deal with src argument not having pointer type.  Check
      	tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
      	test.
      	(build_over_call): Call maybe_warn_class_memaccess here on the
      	original arguments.
      	(build_cxx_call): Rather than here on converted arguments.
      
      	* g++.dg/Wclass-memaccess-2.C: Don't expect a warning when explicitly
      	cast to void *.
      
      From-SVN: r256440
      Jakub Jelinek committed
    • 2018-01-10 François Dumont <fdumont@gcc.gnu.org> · 75ce74bb
      	* include/bits/forward_list.h
      	(_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
      	(_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
      	(_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
      	(_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
      	(_Fwd_list_impl()): Add noexcept qualification.
      	(_Fwd_list_impl(const _Node_alloc_type&)): Delete.
      	(_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
      	(_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
      	(_Fwd_list_base()): Default.
      	(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
      	(_Fwd_list_base(_Fwd_list_base&&)): Default.
      	(forward_list<>()): Default.
      	(forward_list<>(forward_list&&)): Default.
      	(forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
      	(forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
      	(forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
      	* include/bits/forward_list.tcc
      	(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
      	_M_impl._M_head move assignment.
      	(forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
      	* testsuite/23_containers/forward_list/allocator/default_init.cc: New.
      
      From-SVN: r256439
      François Dumont committed
    • re PR c++/81055 (ICE with invalid initializer for array new) · 143aa5cc
      /cp
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81055
      	* init.c (build_vec_init): Avoid building an INIT_EXPR with
      	error_mark_node as second argument.
      
      /testsuite
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81055
      	* g++.dg/cpp0x/new2.C: New.
      
      From-SVN: r256438
      Paolo Carlini committed
    • re PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent) · 389578d7
      	PR c/82922
      
          runtime, syscall: use full prototypes in C code
          
          Based on patch by Martin Sebor.
          
          Reviewed-on: https://go-review.googlesource.com/86815
      
      From-SVN: r256437
      Ian Lance Taylor committed
    • i386: Also adjust stack frame for stack slot alignment · cd3410cc
      We should also adjust stack_realign_offset for the largest alignment of
      stack slot actually used when stack realignment isn't needed.  This is
      required to keep stack frame properly aligned to satisfy the largest
      alignment of stack slots.
      
      Tested on Linux/i686 and Linux/x86-64.
      
      gcc/
      
      	PR target/83735
      	* config/i386/i386.c (ix86_compute_frame_layout): Always adjust
      	stack_realign_offset for the largest alignment of stack slot
      	actually used.
      	(ix86_find_max_used_stack_alignment): New function.
      	(ix86_finalize_stack_frame_flags): Use it.  Set
      	max_used_stack_alignment if we don't realign stack.
      	* config/i386/i386.h (machine_function): Add
      	max_used_stack_alignment.
      
      gcc/testsuite/
      
      	PR target/83735
      	* gcc.target/i386/pr83735.c: New test.
      
      From-SVN: r256436
      H.J. Lu committed
    • exp: remove exp/proxy and exp/terminal packages · 447fb74d
          
          The exp/proxy package was removed from the master library in
          https://golang.org/cl/6461056 (August, 2012).
          
          The exp/terminal package was removed from the master library in
          https://golang.org/cl/5970044 (March, 2012).
          
          I'm not sure why they lingered in the gofrontend copy, but let's
          finally remove them now.
          
          Reviewed-on: https://go-review.googlesource.com/87138
      
      From-SVN: r256435
      Ian Lance Taylor committed