- 08 Jul, 2019 34 commits
-
-
2019-07-08 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: Update documentation on No_Exceptions restriction. * gnat_rm.texi: Regenerate. From-SVN: r273224
Arnaud Charlet committed -
2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid. From-SVN: r273223
Dmitriy Anisimkov committed -
Calls to Scope always return unique entities, i.e. package/subprogram and not their bodies, so there is no need to expect them. Cleanup only; semantics unaffected. (This routine was only used in CCG and GNATprove backends anyway.) 2019-07-08 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect package and subprogram bodies. From-SVN: r273222
Piotr Trojanek committed -
2019-07-08 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation of ignored GNATpp switch. From-SVN: r273221
Bob Duff committed -
Update the documentation of pragma Initialize_Scalars in the GNAT Reference Manual. 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Update the documentation of pragma Initialize_Scalars. * gnat_rm.texi: Regenerate. From-SVN: r273220
Hristian Kirtchev committed -
The code generated by the compiler erroneously evaluates to True membership tests when their left operand is a a class-wide interface object and the right operand is a tagged type that implements such interface type. 2019-07-08 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch4.adb (Tagged_Membership): Fix regression silently introduced in r260738 that erroneouslusy causes the evaluation to True of the membership test when the left operand of the membership test is a class-wide interface object and the right operand is a type that implements such interface type. gcc/testsuite/ * gnat.dg/interface10.adb: New testcase. From-SVN: r273219
Javier Miranda committed -
This patch corrects the verification of 'Address clauses to avoid processing a clause where the prefix of the attribute is a generic formal object. 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not register an address clause when its prefix denotes a generic formal object. gcc/testsuite/ * gnat.dg/addr13.adb, gnat.dg/addr13.ads: New testcase. From-SVN: r273218
Hristian Kirtchev committed -
This patch adds a missing case to the output of cycle diagnostics here a transition from an Elaborate_Body pair may reach a destination which is in the context of an active Elaborate_All. 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence of an Elaborate_All edge before iterating over the edges of the cycle. (Output_Elaborate_Body_Transition): Update the parameter profile and the comment on usage. Add a missing case where the edge is within the context of an Elaborate_All. (Output_Transition): Update the call to Output_Elaborate_Body_Transition. * bindo-graphs.ads, bindo-graphs.adb (Contains_Elaborate_All_Edge): New routine. From-SVN: r273217
Hristian Kirtchev committed -
GNATprove represents reads and writes via pointers as operations on a fake __HEAP entity. This entity already had various properties set to dummy values (e.g. Scope set to Standard_Standard), so that it can be processed like other entities without crashing and not special-cased everywhere. Now it also has a dummy Etype, so it can be processed with Is_Single_Concurrent_Object. The modified code is only executed by GNATprove; frontend is not affected. 2019-07-08 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for the fake __HEAP entity. From-SVN: r273216
Piotr Trojanek committed -
2019-07-08 Daniel Mercier <mercier@adacore.com> gcc/ada/ * gnat1drv.adb: Suppress warnings on memory representation in CodePeer compiler mode. From-SVN: r273215
Daniel Mercier committed -
CommandLineToArgvW drags a dependency on SHELL32.DLL and thus GDI32.DLL. By loading GDI32.DLL some default GDI objects are allocated. On some Windows versions this cause the use of a lock on the graphical interface during process termination. This can impact parallelism significantly as termination of processes is serialized. 2019-07-08 Nicolas Roche <roche@adacore.com> gcc/ada/ * rtinit.c (__gnat_runtime_initialize): Remove dependency on CommandLineToArgvW. From-SVN: r273214
Nicolas Roche committed -
2019-07-08 Doug Rupp <rupp@adacore.com> gcc/ada/ * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7. From-SVN: r273213
Doug Rupp committed -
2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. From-SVN: r273212
Dmitriy Anisimkov committed -
Real literals of fixed-point type are expected to keep their precise fixed-point type in GNATprove. This is now correctly enforced. There is no impact on compilation. 2019-07-08 Yannick Moy <moy@adacore.com> gcc/ada/ * expander.adb (Expand): Do not reset Analyzed flag always. * sem_eval.adb (Fold_Ureal): Mark node as analyzed. From-SVN: r273211
Yannick Moy committed -
This patch fixes a compiler crash in the compiler on a timed entry call whose delay expression is a type conversion, when FLoat_Overflow checks are enabled. 2019-07-08 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice the assignment statement that computes the delay value, to prevent improper tree sharing when the value is a type conversion and Float_Overflow checks are enabled. gcc/testsuite/ * gnat.dg/entry1.adb, gnat.dg/entry1.ads: New testcase. From-SVN: r273210
Ed Schonberg committed -
This patch introduces several changes to the new elaboration order mechanism: * The concept of "strong" and "weak" edges is introduced. Strong edges are the byproduct of language-defined relations between units, such as with clauses. Weak edges are the byproduct of specilative invocations at elaboration time, which may or may not take place depending on control flow. * The elaboration order algorithm has been heavily modified to make use of the strong and weak edges, and operate on units compiled with different elaboration models. * The elaboration order algorithm employs the following logic: - Maintain two sets of vertices, one for all elaborable vertices, and one for all waiting vertices. - Pick the best elaborable vertex, and elaborate its component. - If no such elaborable vertex is available, pick the best weakly elaborable vertex whose unit has been compiled with the dynamic model, and elaborate its component. - If no such weakly elaborable vertex is available, then either all vertices were already elaborated, or the graph contains a cycle. The elaboration of a component employs the same logic, with an added step where all successors of some predecessor currently being elaborated are notified that they have one fewer predecessor to wait on. This may cause certain successors to become elaborable, in which case they are moved from the set of waiting vertices to the set of elaborable vertices. * Three new GNATbind debug switches are introduced, -d_a, -d_b, and -d_e, to eliminate the effects of pragmas Elaborate_All, Elaborate_Body, and Elaborate respectively. * The section on terminology is updated to include new entries. 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * bindo.adb: Update the section on terminology to include new concepts. Update the section on switches to include new entries. * bindo.ads: Add type Precedence_Kind. * bindo-builders.adb: Add with and use clauses for Debug and Bindo.Validators. Add use clauses for Bindo.Validators.Invocation_Graph_Validators and Bindo.Validators.Library_Graph_Validators. (Build_Invocation_Graph): Validate the graph immediately after it was built. (Build_Library_Graph): Update the parameter profile. The creation of the graph is now elaboration model-agnostic. Validate the graph immediately after it was built. (Create_With_Edge): Create regular with edges for Elaborate and Elaborate_All edges when the appropriate debug switches are in effect. * bindo-builders.ads (Build_Library_Graph): Update the parameter profile. * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of an Elaborate_All edge throughout the inspection of the cycle's edges. (Output_Dynamic_Model_Suggestions): Output the suggestion only when the cycle contains at least one weak edge where the successor was statically elaborated. (Output_Elaborate_Body_Transition, Output_Forced_Transition, Output_With_Transition): Update the assertions. * bindo-elaborators.adb: Remove use clauses for Bindo.Validators.Invocation_Graph_Validators and Bindo.Validators.Library_Graph_Validators. Remove strings Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg. Remove type String_Ptr. (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set Create_Component_Candidates_Set): Remove. (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine. (Elaborate_Component): Update the parameter profile and the comment on usage. Reimplement the elaboration of a component. The algorithm will now attempt to elaborate as many vertices possible. If this is not possible, and a weakly elaborable vertex is available use unit was compiled using the dynamic model, the algorithm will elaborate it. (Elaborate_Library_Graph): Reimplement the elaboration of the graph. The algorithm will now attempt to elaborate as many vertices along with their components as possible. If this is not possible, and a weakly elaborable vertex is available use unit was compiled using the dynamic model, the algorithm will elaborate it along with its component. (Elaborate_Units): Merge with the functionality of Elaborate_Units_Common. (Elaborate_Units_Common, Elaborate_Units_Dynamic, Elaborate_Units_Static): Remove. (Elaborate_Vertex): Update the parameter profile and the comment on usage. Reimplemented. (Find_Best_Candidate): Remove. (Find_Best_Elaborable_Vertex, Find_Best_Vertex, Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body, Insert_Elaborable_Successor, Insert_Vertex): New routines. (Is_Better_Candidate): Remove. (Is_Better_Elaborable_Vertex, Is_Better_Weakly_Elaborable_Vertex, Is_Suitable_Elaborable_Vertex, Is_Suitable_Weakly_Elaborable_Vertex): New routines. (Trace_Candidate_Vertices): Remove. (Trace_Component): Output the number of strong and weak predecessors. (Trace_Unelaborated_Vertices): Remove. (Trace_Vertex): Output the number of strong and weak predecessors. (Trace_Vertices): New routine. (Update_Successor, Update_Successors): Update the parameter profile and the comment on usage. * bindo-graphs.adb: Remove type Precedence_Kind. (Add_Edge_With_Return): Update the increment of pending predecessors. (Add_Vertex): Provide default values for strong and weak predecessors. (Complementary_Vertex): Move the initial declaration to the spec. Update the parameter profile and the comment on usage. (Contains_Weak_Static_Successor): New routine. (Create): Update the parameter profile. The creation of the graph is now elaboration model-agnostic. (Decrement_Pending_Predecessors): Update the parameter profile and the comment on usage. Reimplemented. (Delete_Edge): Update the decrement of pending predecesors. (Has_Elaborate_Body): Do not treat a vertex as being subject to Elaborate_Body when a debug switch is in effect. (Increment_Pending_Predecessors): Update the parameter profile and the comment on usage. Reimplemented. (Is_Elaborable_Component): Reimplemented. (Is_Elaborable_Vertex): Move the initial declaration to the spec. Reimplemented. (Is_Elaborate_Body_Pair): New routine. (Is_Dynamically_Elaborated): Update the parameter profile. Reimplemented. (Is_Weakly_Elaborable_Vertex): New routine. (Pending_Predecessors): Removed. (Pending_Predecessors_For_Elaboration, Pending_Strong_Predecessors, Pending_Weak_Predecessors, Update_Pending_Predecessors): New routines. (Update_Pending_Predecessors_Of_Components): Update the increment of pending predecessors. * bindo-graphs.ads: Update the components of type Component_Attributes. Update the components of type Library_Graph_Attributes. Update the components of type Library_Graph_Vertex_Attributes. Update the initialization of No_Component_Attributes. Update the initialization of No_Library_Graph_Vertex_Attributes. (Complementary_Vertex, Contains_Weak_Static_Successor): New routines. (Create): Update the parameter profile and the comment on usage. (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated): Update the parameter profile and the comment on usage. (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New routines. (Pending_Predecessors): Removed. (Pending_Predecessors_For_Elaboration, Pending_Strong_Predecessors, Pending_Weak_Predecessors): New routines. * bindo-writers.adb (Write_Components): Moved from the spec. (Write_Component): Output the strong and weak predecessors. (Write_Library_Graph): Output the components as part of the graph. (Write_Library_Graph_Vertex): Output the strong and weak predecessors. * bindo-writers.ads (Write_Components): Moved to the body. * debug.adb: Add and document new GNATbind switches -d_a, -d_b, -d_e. * bindo-validators.adb: Minor reformattings. From-SVN: r273209
Hristian Kirtchev committed -
This patch adds additional data rates to the GNAT.Serial_Communications package (Linux version). 2019-07-08 Bob Duff <duff@adacore.com> gcc/ada/ * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate): Support additional data rates. From-SVN: r273208
Bob Duff committed -
Unlike, say, clones created internally by the compiler, elab procs materialize specific user code and flagging them artificial now takes elab code away from gcov's analysis, a regression compared to previous releases. On the testcase below: package Gcov_Q is function F (X : Integer) return Integer is (X + 1); end; with Gcov_Q; package Gcov_P is Y : Integer := Gcov_Q.F (X => 1); end; with Gcov_P; procedure Gcov_Test is begin if Gcov_P.Y /= 2 then raise Program_Error; end if; end; After compiling with: gnatmake -f -g gcov_test.adb \ -cargs -ftest-coverage -fprofile-arcs \ -largs -fprofile-generate and executing with ./gcov_test We expect gcov gcov_p to produce a gcov_p.ads.gcov report. 2019-07-08 Olivier Hainque <hainque@adacore.com> gcc/ada/ * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request DECL_ARTIFICIAL_P on elab proc declarations. From-SVN: r273207
Olivier Hainque committed -
This fixes a crash (or an assertion failure) during the processing done for -gnatRj on the declaration of an extension of a private type. Generally speaking, extension declarations are delicate in this context because the front-end does not duplicate the structure of the parent type, so the processing required to output the structural layout needs to go up to the declaration of the parent type, which may or may not be available or usable. The change also makes the processing more robust by falling back to the flat layout if the declaration of the parent type cannot be processed. 2019-07-08 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and Not_In_Extended_Main local exceptions. (List_Structural_Record_Layout): For an extension, raise the former if the parent subtype has not been built and the latter if it is not declared in the main source unit. Fall back to the flat layout if either exception has been raised. From-SVN: r273206
Eric Botcazou committed -
This patch corrects a bug in the implementation of Delete in an unusual boundary case: the RM describes the semantics of Delete as equivalent to that of Replace_String with a null argument. As a result, deleting a null string that starts past the end of its argument is a noop and must not raise Index_Error. 2019-07-08 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * libgnat/a-strfix.adb (Delete): The RM describes the semantics of Delete as equivalent to that of Replace_String with a null argument. As a result, deleting a null string that starts past the end of its argument is a noop and must not raise Index_Error. gcc/testsuite/ * gnat.dg/fixed_delete.adb: New testcase. From-SVN: r273205
Ed Schonberg committed -
The frontend crashes processing the derivation of a tagged type whose ultimate ancestor is an interface type I1 that has a null primitive, implements another interface I2 derived from I2, and does not override the null primitive. 2019-07-08 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_disp.adb (Register_Primitive): When registering a primitive in the secondary dispatch table, handle primitive inherited through several levels of type derivation (required to properly handle inherited 'null' primitive). gcc/testsuite/ * gnat.dg/interface9.adb, gnat.dg/interface9_root-child.ads, gnat.dg/interface9_root.ads: New testcase. From-SVN: r273204
Javier Miranda committed -
2019-07-08 Bob Duff <duff@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of preprocessor directives in GNATpp. From-SVN: r273203
Bob Duff committed -
This patch performs a code reorganization of the implementation of pragma Compile_Time_Error. No functional change. No test required. 2019-07-08 Javier Miranda <miranda@adacore.com> gcc/ada/ * gnat1drv.adb (Post_Compilation_Validation_Checks: Validate_Compile_Time_Warning_Errors is now located in sem_prag (instead of sem_ch13). * sem_ch13.ads (Validate_Compile_Time_Warning_Error, Validate_Compile_Time_Warning_Errors): Move to sem_prag. * sem_ch13.adb (Compile_Time_Warnings_Errors): Move to sem_prag. (Initialize): Remove initialization of table Compile_Time_Warning_Errors. (Validate_Compile_Time_Warning_Error, Validate_Compile_Time_Warning_Errors): Move to sem_prag. * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New procedure. * sem_prag.adb (Initialize): Initialize table Compile_Time_Warning_Errors. From-SVN: r273202
Javier Miranda committed -
This patch fixes a crash on compiling the postcondtion for a generic subprogram, when the postcondition is a call with both positional and named parameter associations. 2019-07-08 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Specifications): For a pre/postcondition of a generic subprogram declaration, do not use Relocate_Node on the aspect expression to construct the corresponding attribute specification, to prevent tree anomalies when the expression is a call with named actual parameters. gcc/testsuite/ * gnat.dg/predicate9.adb: New testcase. From-SVN: r273201
Ed Schonberg committed -
The compiler may trigger spurious errors on pragmas Compile_Time_Error and Compile_Time_Warning when their boolean expression computes the size of a type. After this patch the following test compiles fine. with Interfaces; use Interfaces; package Types is type Arr is array (1 .. 6) of Unsigned_8 with Size => 48, Alignment => 1; type Rec is record Comp_1 : Unsigned_32; Comp_2 : Unsigned_16; end record with Size => 48, Alignment => 1; end Types; with Types; use Types; package Main is pragma Compile_Time_Error (Arr'Size = 12, "ERROR: Arr'Size is 48, not 12"); pragma Compile_Time_Error (Arr'Size = 48, "OK: Arr"); pragma Compile_Time_Error (Arr'Size /= 48, "ERROR: Arr'Size is 48"); pragma Compile_Time_Error (Rec'Size = 34, "ERROR: Rec'Size is 48, not 34"); pragma Compile_Time_Error (Rec'Size = 48, "OK: Rec"); pragma Compile_Time_Error (Rec'Size /= 48, "ERROR: Rec'Size is 48"); end Main; Command: gcc -c main.ads Output: main.ads:7:07: OK: Arr main.ads:14:07: OK: Rec 2019-07-08 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas used to report user defined compile time warning or errors handle 'Size for types with known static RM size. From-SVN: r273200
Javier Miranda committed -
This patch fixes an issue whereby the creation of an enumeration within package where Default_Scalar_Storage_Order is in effect may lead to a crash when the attributes Image or Value are applied to objects of said type or the type directly. 2019-07-08 Justin Squirek <squirek@adacore.com> gcc/ada/ * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for the building of image tables. (Expand_Image_Attribute): Minor cleanup. gcc/testsuite/ * gnat.dg/sso16.adb: New testcase. From-SVN: r273199
Justin Squirek committed -
2019-07-08 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve documentation. (Get_Socket_Option, Set_Socket_Option): Remove default value for the Level formal. From-SVN: r273198
Dmitriy Anisimkov committed -
This patch fixes a spurious error when verifying that the visibility of the expression of an aspect has not changed between the freeze point of the entity to which it applies, and the end of the enclosing declarative part. If the entity is a composite type its components must be made directly visible for the analysis of the expression. In a generic context this must be done explicitly at the end of the declarative part. 2019-07-08 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an unanalized aspect in a generic context that has not been analyzed yet, if the aspect applies to a type, place the type on the scope stack to make its components visible, before checking conformance with the version of the expression analyzed at the freeze point. gcc/testsuite/ * gnat.dg/predicate8.adb, gnat.dg/predicate8_pkg.adb, gnat.dg/predicate8_pkg.ads: New testcase. From-SVN: r273197
Ed Schonberg committed -
From-SVN: r273195
Kito Cheng committed -
2019-07-08 Richard Biener <rguenther@suse.de> PR tree-optimization/83518 * tree-ssa-sccvn.c: Include splay-tree.h. (struct pd_range, struct pd_data): New. (struct vn_walk_cb_data): Add data to track partial definitions. (vn_walk_cb_data::~vn_walk_cb_data): New. (vn_walk_cb_data::push_partial_def): New. (pd_tree_alloc, pd_tree_dealloc, pd_range_compare): New. (vn_reference_lookup_2): When partial defs are registered give up. (vn_reference_lookup_3): Track partial defs for memset and constructor zeroing and for defs from constants. * gcc.dg/tree-ssa/ssa-fre-73.c: New testcase. * gcc.dg/tree-ssa/ssa-fre-74.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-75.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-76.c: Likewise. * g++.dg/tree-ssa/pr83518.C: Likewise. From-SVN: r273194
Richard Biener committed -
Although BOOT_CFLAGS can be used to bootstrap with -Og, having a dedicated build config is sometimes more convenient. 2019-07-08 Richard Sandiford <richard.sandiford@arm.com> config/ * bootstrap-Og.mk: New file. gcc/ * doc/install.texi (bootstrap-Og): Document. From-SVN: r273193
Richard Sandiford committed -
guality.exp is silently skipped on Linux systems with kernel.yama.ptrace_scope=1 because gdb fails to attach to the sanity check test. This patch uses PR_SET_PTRACER (where available) to avoid this. prctl was apparently added in Linux 2.1.57, so I don't think we need any tests other than __linux for the #include. 2019-07-08 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.dg/guality/guality.h: Include <sys/prctl.h> on Linux targets. (main): Use PR_SET_PTRACER where available. From-SVN: r273192
Richard Sandiford committed -
This patch is part of a series that fixes ambiguous attribute uses in .md files, i.e. cases in which attributes didn't use <ITER:ATTR> to specify an iterator, and in which <ATTR> could have different values depending on the iterator chosen. No behavioural change -- produces the same code as before. 2019-07-08 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/riscv/pic.md (*local_pic_load_s<mode>) (*local_pic_load_u<mode>): Explicitly specify the mode iterator referenced by <mode>, giving... (*local_pic_load_s<SUBX:mode>, *local_pic_load_u<SUBX:mode>): ...these. * config/riscv/riscv.md (*sge<u>_<X:mode><GPR:mode>) (*slt<u>_<X:mode><GPR:mode>, *sle<u>_<X:mode><GPR:mode>): Explicitly use <X:MODE> for the mode attribute. From-SVN: r273191
Richard Sandiford committed -
From-SVN: r273190
GCC Administrator committed
-
- 07 Jul, 2019 6 commits
-
-
PR tree-optimization/91090 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Fix logic error in handling of ranges to simplify switch statements. From-SVN: r273184
Jeff Law committed -
It is unused. * config/rs6000/rs6000.md (Ffre): Delete. From-SVN: r273182
Segher Boessenkool committed -
Final check on PCI options; for Darwin these are not dependent on the PIE ones, although PIE does require PIC to support it. Specifically, for Darwin, "fPIC fno-PIE" should result in the same as "-fno-PIE -fPIC". 2019-07-07 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c (darwin_override_options): Make a final check on PIC options. From-SVN: r273181
Iain Sandoe committed -
For PPC Darwin, we need the JBSR long jump code to be enabled when generating kernel code. Now we have that handled in rs6000.c, we can drop the conflated setting in the common code. Symbol stubs are not generated for any X86 case. 2019-07-07 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c (darwin_override_options): Don't jam symbol stubs on for kernel code. From-SVN: r273180
Iain Sandoe committed -
2019-07-07 Paul Thomas <pault@gcc.gnu.org> PR fortran/91077 * trans-array.c (gfc_conv_scalarized_array_ref) Delete code that gave symbol backend decl for subref arrays and deferred length variables. 2019-07-07 Paul Thomas <pault@gcc.gnu.org> PR fortran/91077 * gfortran.dg/pointer_array_11.f90 : New test. From-SVN: r273176
Paul Thomas committed -
PR91068 is a case in which we have (ignoring non-LRA alternatives): [(set (match_operand:SI 0 "register_operand" "=l,d?") (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "d,d") (match_operand:SI 2 "register_operand" "d,d")) (match_operand:SI 3 "register_operand" "0,d"))) (clobber (match_scratch:SI 4 "=X,l")) (clobber (match_scratch:SI 5 "=X,&d"))] where the first alternative is one instruction but the second is two. This is very similar to the case that my recent IRA patches were supposed to help. The crucial difference is that the cheap alternative requires a single-register class while the expensive alternative uses general registers. This makes a difference when one of operand 0 or 3 can naturally be allocated to LO but the other can't. If IRA makes that allocation, both alternatives require one reload of equal cost and so the first alternative clearly wins. However, if we say that tying operands 0 and 3 saves the cost of a full move, then all other things being equal, IRA will prefer to allocate both registers to the same GPR. The registers will then naturally fit the second alternative. This has a more drastic effect in the MIPS case than it should because using the GPR alternative is much more expensive there than it appears to the RA. But that's really a separate problem and something we were able to live with before my IRA patch. What makes tying less useful here is the fact that the tied register is a single-register class. I think in those circumstances it's better not to use tied operands at all and instead use "l" for the inputs. Allocating the input to LO, and allocating the output to LO, then depend naturally on class costs. If we decide to allocate at least one of them to LO, we'll use the cheap alternative, otherwise we'll (correctly) use the expensive alternative. This effectively restores the situation before my IRA patch, but this time making the preference on the input register more explicit. I originally wrote the patterns in the early days of IRA, and certainly well before LRA. I think they were largely influened by reload rather than RA proper (see the comment above *mul_acc_si, which is all about the reload behaviour). LRA copes with the two-"l" case just fine. The patch may well cause problems for -mno-lra, but I think we should cull that option anyway. 2019-07-07 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR target/91068 * config/mips/mips.md (*mul_acc_si, *mul_acc_si_r3900, *macc) (*msac, *msac_using_macc, *mul_sub_si): Use "l" for input operands instead of matching them to "l" output operands. From-SVN: r273175
Richard Sandiford committed
-