- 16 Jul, 2018 40 commits
-
-
2018-07-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb (Visit_Node): Handle the semantic of Storage_Pool field in relevant nodes: Allocate, Free, and return statements. From-SVN: r262725
Ed Schonberg committed -
2018-07-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch12.adb (Analyze_Package_Instantiation): Handle properly an instance that carries an aspect Default_Storage_Pool that overrides a default storage pool that applies to the generic unit. The aspect in the generic unit was removed before copying it in the instance, rather than removing it from the copy of the aspects that are appended to the aspects in the instance. From-SVN: r262724
Ed Schonberg committed -
2018-07-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * einfo.adb (Set_Is_Uplevel_Referenced_Entity): Flag can appear on loop parameters. * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle subprogram bodies. * exp_ch9.adb (Reset_Scopes_To): Set the scopes of entities local to an entry body to be the corresponding generated subprogram, for correct analysis of uplevel references. * exp_unst.adb (Visit_Node): Handle properly binary and unary operators Ignore pragmas, fix component associations. (Register_Subprograms): Subprograms in synchronized types must be treated as reachable. From-SVN: r262723
Ed Schonberg committed -
This patch corrects the mechanism which ensures that a package with a null Abstract_State does not introduce hidden state, by ignoring internal states and variables because they do not represent the "source" hidden state. 2018-07-16 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_util.adb (Check_No_Hidden_State): Ignore internally-generated states and variables. gcc/testsuite/ * gnat.dg/abstract_state1.adb, gnat.dg/abstract_state1.ads: New testcase. From-SVN: r262722
Hristian Kirtchev committed -
The Withed_Body field was added to N_With_Clause node to help the Walk_Library_Items routine, which was created for the CodePeer backend and later adopted by the GNATprove. This routine is meant to traverse all library units, such that declarations are visited before references. However, for complex units (in particular, with generics and child packages) it never worked reliably and backends developed their own workarounds. This patch deconstructs the field, as it hasn't been used for years. Semantics unaffected; no test provided. 2018-07-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sinfo.ads, sinfo.adb (Withed_Body): Remove. (Set_Withed_Body): Remove. From-SVN: r262721
Piotr Trojanek committed -
The debug switch -gnatd.WW enables extra info when traversing library units with Walk_Library_Items, which is used in the CodePeer and GNATprove. This routine was crashing when trying to print info about a unit with configuration pragmas (typically an .adc file). Now fixed. No test, as the crash only happens when a GNATprove backend is manually called with -gnatd.WW switch. Frontend is not affected. 2018-07-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem.adb (Walk_Library_Items): Skip units with configuration pragmas when printing debug info. From-SVN: r262720
Piotr Trojanek committed -
Cleanup only; semantics unaffected. 2018-07-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem.adb (Walk_Library_Items): Reuse local constant. (Is_Subunit_Of_Main): Turn condition to positive and flip the IF-THEN-ELSE branches; avoid potentially ineffective assignment to the Lib variable. From-SVN: r262719
Piotr Trojanek committed -
We previously removed the calls to Set_Withed_Body; this commit deconstructs calls to Withed_Body, which always returned False. The Set_Withed_Body/Withed_Body were helping the Walk_Library_Items routine traverse the AST of several compilation units such that declarations are visited before references. However, this never worked as it should and there is no point to keep the code more complicated than necessary. No test provided, because thie removed code was ineffective (and only used in the non-compiler backends, i.e. CodePeer and GNATprove). 2018-07-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem.adb (Walk_Library_Items): Deconstruct dead code. From-SVN: r262718
Piotr Trojanek committed -
2018-07-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Op_Xor): Use common routine Expand_Nonbinary_Modular_Op. Needed for unnesting. From-SVN: r262717
Ed Schonberg committed -
2018-07-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Inherit_Predicate_Flags): A non-discrete type may have a static predicate (for example True) but has no static_discrete_predicate. From-SVN: r262716
Ed Schonberg committed -
This patch corrects the generation of helper functions which verify the validity of record type scalar discriminants and scalar components when switches -gnata (assertions enabled) and -gnateV (validity checks on subprogram parameters) are in effect. 2018-07-16 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_attr.adb (Build_Record_VS_Func): Handle corner cases dealing with class-wide types and record extensions. gcc/testsuite/ * gnat.dg/validity_check3.adb, gnat.dg/validity_check3.ads: New testcase. From-SVN: r262715
Hristian Kirtchev committed -
This patch corrects an issue whereby spurious unhandled exception warnings on integer literals within static if and case expressions would be emitted when the restriction No_Exception_Propagation is enabled. ------------ -- Source -- ------------ -- gnat.adc pragma Restrictions (No_Exception_Propagation); pragma SPARK_Mode (On); -- pack.ads package Pack is procedure Filter (Ret : out Integer); end Pack; -- pack.adb package body Pack is subtype Nat is Integer range 0 .. 10; Default : constant Nat := 1; User_Override : constant Integer := -1; procedure Filter (Ret : out Integer) is Val : constant Nat := (if User_Override in Nat then User_Override else Default); begin Ret := Val; end Filter; end Pack; ---------------------------- -- Compilation and output -- ---------------------------- & gcc -c -gnatp -gnatwa pack.adb 2018-07-16 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_eval.adb (Eval_Integer_Literal): Add exception for avoiding checks on expanded literals within if and case expressions. From-SVN: r262714
Justin Squirek committed -
This patch updates the routines which produce Wide_String and Wide_Wide_String from a String to construct a result of the proper maximum size which is later sliced. 2018-07-16 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * libgnat/s-wchwts.adb (Wide_String_To_String): Use the appropriate longest sequence factor. Code clean up. (Wide_Wide_String_To_String): Use the appropriate longest sequence factor. Code clean up. gcc/testsuite/ * gnat.dg/wide_wide_value1.adb: New testcase. From-SVN: r262713
Hristian Kirtchev committed -
This patch allows the compiler to report an error on Bit_Order when defined for a record extension. 2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Report an error on Bit_Order when defined for a record extension. gcc/testsuite/ * gnat.dg/bit_order1.adb: New testcase. From-SVN: r262712
Javier Miranda committed -
2018-07-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/s-objrea.ads: Minor code clean up. From-SVN: r262711
Arnaud Charlet committed -
Rules in SPARK RM 7.1.3 were renumbered when adding support for tasking, but references in the comments were not updated. Now fixed. 2018-07-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch3.adb (Process_Discriminants): Adjust reference to the SPARM RM rule. From-SVN: r262710
Piotr Trojanek committed -
2018-07-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * adaint.c (__gnat_set_file_time_name): Code clean up. From-SVN: r262709
Arnaud Charlet committed -
This patch is preventive: it improves checks on inline functions that return unconstrained type. It does not change the functionality of the compiler. 2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * inline.adb (Build_Body_To_Inline): Minor code reorganization that ensures that calls to function Has_Single_Return() pass a decorated tree. (Has_Single_Return.Check_Return): Peform checks on entities (instead on relying on their characters). From-SVN: r262708
Javier Miranda committed -
Processing sources under -gnatd.F the frontend may crash on an iterator of the form 'for X of ...' over an array if the iterator is located in an inlined subprogram. 2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Code cleanup. Required to avoid generating an ill-formed tree that confuses gnatprove causing it to blowup. gcc/testsuite/ * gnat.dg/iter2.adb, gnat.dg/iter2.ads: New testcase. From-SVN: r262707
Javier Miranda committed -
2018-07-16 Yannick Moy <moy@adacore.com> gcc/ada/ * inline.adb (Has_Single_Return): Rewrap comment. From-SVN: r262706
Yannick Moy committed -
2018-07-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * einfo.ads: Minor tweak in comment. From-SVN: r262705
Eric Botcazou committed -
2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_Membership_Op): Code cleanup. From-SVN: r262704
Javier Miranda committed -
2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not transform 'Count into a function call if the current scope has been eliminated. From-SVN: r262703
Javier Miranda committed -
2018-07-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the public part of this package. From-SVN: r262702
Javier Miranda committed -
The frontend generates special functions for checking subtype predicates, type invariants and Default_Initial_Condition aspect. These are translated as predicates in GNATprove, and as such should no call inside these functions should be inlined. This is similar to the existing handling of calls inside expression functions. There is no impact on compilation. 2018-07-16 Yannick Moy <moy@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Call): Do not inline calls inside compiler-generated functions translated as predicates in GNATprove. From-SVN: r262701
Yannick Moy committed -
The compiler fails to generate a call to detect allocators executed after elaboration in cases where the allocator is associated with Global_Pool_Object. The fix is to test for this associated storage pool as part of the condition for generating a call to System.Elaboration_Allocators.Check_Standard_Alloctor. Also, the exception Storage_Error is now generated instead of Program_Error for such a run-time violation, as required by the Ada RM in D.7. The following test must compile and execute quietly: -- Put the pragma in gnat.adc: pragma Restrictions (No_Standard_Allocators_After_Elaboration); package Pkg_With_Allocators is type Priv is private; procedure Allocate (Use_Global_Allocator : Boolean; During_Elaboration : Boolean); private type Rec is record Int : Integer; end record; type Priv is access Rec; end Pkg_With_Allocators; package body Pkg_With_Allocators is Ptr : Priv; procedure Allocate (Use_Global_Allocator : Boolean; During_Elaboration : Boolean) is type Local_Acc is access Rec; Local_Ptr : Local_Acc; begin if Use_Global_Allocator then Ptr := new Rec; -- Raise Storage_Error if after elaboration Ptr.Int := 1; else Local_Ptr := new Rec; -- Raise Storage_Error if after elaboration Local_Ptr.Int := 1; end if; if not During_Elaboration then raise Program_Error; -- No earlier exception: FAIL end if; exception when Storage_Error => if During_Elaboration then raise Program_Error; -- No exception expected: FAIL else null; -- Expected Storage_Error: PASS end if; when others => raise Program_Error; -- Unexpected exception: FAIL end Allocate; begin Allocate (Use_Global_Allocator => True, During_Elaboration => True); Allocate (Use_Global_Allocator => False, During_Elaboration => True); end Pkg_With_Allocators; with Pkg_With_Allocators; procedure Alloc_Restriction_Main is begin Pkg_With_Allocators.Allocate (Use_Global_Allocator => True, During_Elaboration => False); Pkg_With_Allocators.Allocate (Use_Global_Allocator => False, During_Elaboration => False); end Alloc_Restriction_Main; 2018-07-16 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Allocator): Test for Storage_Pool being RTE in addition to the existing test for no Storage_Pool as a condition enabling generation of the call to Check_Standard_Allocator when the restriction No_Standard_Allocators_After_Elaboration is active. * libgnat/s-elaall.ads (Check_Standard_Allocator): Correct comment to say that Storage_Error will be raised (rather than Program_Error). * libgnat/s-elaall.adb (Check_Standard_Allocator): Raise Storage_Error rather than Program_Error when Elaboration_In_Progress is False. From-SVN: r262700
Gary Dismukes committed -
2018-07-16 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * sem_eval.adb: Fix spelling for compile-time-known. From-SVN: r262699
Gary Dismukes committed -
This patch prevents the compiler from entering infinite recursion when processing an illegal deferred constant. ------------ -- Source -- ------------ -- types.ads package Types is type Enum is (One, Two); end Types; -- types2.ads with Types; package Types2 is type Enum is private; One : constant Enum; Two : constant Enum; private type Enum is new Types.Enum; One : constant Enum := One; Two : constant Enum := Two; end Types2; ---------------------------- -- Compilation and output -- ---------------------------- $ gcc -c types2.ads types2.ads:10:04: full constant declaration appears too late types2.ads:11:04: full constant declaration appears too late 2018-07-16 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_eval.adb (Compile_Time_Known_Value): Add a guard which prevents the compiler from entering infinite recursion when trying to determine whether a deferred constant has a compile time known value, and the initialization expression of the constant is a reference to the constant itself. From-SVN: r262698
Hristian Kirtchev committed -
This will reduce significantly the number of allocations done when doing consecutive append operations. 2018-07-16 Nicolas Roche <roche@adacore.com> gcc/ada/ * libgnat/a-strunb.adb, libgnat/a-strunb__shared.adb: Adjust growth factor from 1/32 to 1/2 for Unbounded_String. From-SVN: r262697
Nicolas Roche committed -
2018-07-16 Richard Biener <rguenther@suse.de> PR lto/86523 * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents for function-local FUNCTION_DECL and RESULT_DECL immediately. * g++.dg/lto/pr86523-1_0.C: New testcase. * g++.dg/lto/pr86523-2_0.C: Likewise. From-SVN: r262696
Richard Biener committed -
2018-07-16 Martin Liska <mliska@suse.cz> PR ipa/86529 * ipa-pure-const.c (malloc_candidate_p): Revert ::get to ::get_create. 2018-07-16 Martin Liska <mliska@suse.cz> PR ipa/86529 * g++.dg/ipa/pr86529.C: New test. From-SVN: r262695
Martin Liska committed -
2017-07-16 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arcHS.md: Update ARCHS scheduling rules. From-SVN: r262689
Claudiu Zissulescu committed -
gcc/ 2017-03-10 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters for ARCHS4x. * config/arc/arc-cpus.def (hs4x): New cpu. (hs4xd): Likewise. * config/arc/arc-tables.opt: Regenerate. * config/arc/arc.c (arc_sched_issue_rate): New function. (TARGET_SCHED_ISSUE_RATE): Define. (TARGET_SCHED_EXPOSED_PIPELINE): Likewise. * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv, fpu_cvt. (attr tune): Add ARCHS4x tune values. (attr tune_dspmpy): Define. (*tst): Correct instruction type. * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus. * config/arc/arcHS4x.md: New file. * config/arc/fpu.md: Update instruction type attributes. * config/arc/t-multilib: Regenerate. From-SVN: r262688
Claudiu Zissulescu committed -
When compiling test-case gcc.target/i386/vartrack-1.c with -O1 -g, register bx is pushed in the prologue and popped in the epilogue: ... (insn/f 26 3 27 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0 S8 A8]) (reg:DI 3 bx)) "vartrack-1.c":10 61 {*pushdi2_rex64} (expr_list:REG_DEAD (reg:DI 3 bx) (nil))) ... (insn/f 29 28 30 2 (set (reg:DI 3 bx) (mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0 S8 A8])) "vartrack-1.c":15 71 {*popdi1} (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) (plus:DI (reg/f:DI 7 sp) (const_int 8 [0x8]))) (nil))) ... However, when we adjust those insns in vartrack to eliminate the pre_dec and post_inc, the frame location for the push is at argp - 24, while the one for the pop is at argp - 16: ... (insn/f 26 3 27 2 (parallel [ (set (mem:DI (plus:DI (reg/f:DI 16 argp) (const_int -24 [0xffffffffffffffe8])) [0 S8 A8]) (reg:DI 3 bx)) (set (reg/f:DI 7 sp) (plus:DI (reg/f:DI 16 argp) (const_int -24 [0xffffffffffffffe8]))) ]) "vartrack-1.c":10 61 {*pushdi2_rex64} (expr_list:REG_DEAD (reg:DI 3 bx) (nil))) ... (insn/f 29 28 30 2 (parallel [ (set (reg:DI 3 bx) (mem:DI (plus:DI (reg/f:DI 16 argp) (const_int -16 [0xfffffffffffffff0])) [0 S8 A8])) (set (reg/f:DI 7 sp) (plus:DI (reg/f:DI 16 argp) (const_int -8 [0xfffffffffffffff8]))) ]) "vartrack-1.c":15 71 {*popdi1} (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp) (plus:DI (reg/f:DI 7 sp) (const_int 8 [0x8]))) (nil))) ... This patch fixes that by moving the stack_adjust modification after adjust_insn in vt_initialize. Bootstrapped and reg-tested on x86_64. 2018-07-16 Tom de Vries <tdevries@suse.de> PR debug/86455 * var-tracking.c (vt_initialize): Fix pre_dec handling. * gcc.target/i386/vartrack-1.c: New test. From-SVN: r262687
Tom de Vries committed -
From-SVN: r262686
Ramana Radhakrishnan committed -
PR tree-optimization/86514 * tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a conversion to a boolean type from a type with greater precision. From-SVN: r262684
Eric Botcazou committed -
2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com> * MAINTAINERS: Adjust email address for me and my colleague Robin Dapp. From-SVN: r262683
Andreas Krebbel committed -
libstdc++-v3/ChangeLog: 2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com> * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. From-SVN: r262681
Andreas Krebbel committed -
2018-07-16 Tom de Vries <tdevries@suse.de> * var-tracking.c (vt_initialize): Print adjusted insn slim if dump_flags request TDF_SLIM. From-SVN: r262680
Tom de Vries committed -
PR c++/3698 PR c++/86208 * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or in TREE_USED flag from stmt to h->to. * g++.dg/opt/pr3698.C: New test. From-SVN: r262678
Jakub Jelinek committed
-