- 26 May, 2018 4 commits
-
-
2018-05-26 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/85840 * io/write.c (write_float_0): Use separate local variable for the float string length. From-SVN: r260793
Jerry DeLisle committed -
Since ifunc_resolver isn't set when an error is detected, we should lookup ifunc attribute in this case. PR target/85900 PR target/85345 * varasm.c (assemble_alias): Lookup ifunc attribute on error. From-SVN: r260792
H.J. Lu committed -
PR bootstrap/85921 * c-warn.c (diagnose_mismatched_attributes): Remove unnecessary noinline variable to workaround broken kernel headers. From-SVN: r260790
Jakub Jelinek committed -
From-SVN: r260789
GCC Administrator committed
-
- 25 May, 2018 36 commits
-
-
gcc/ * config/riscv/riscv-protos.h (riscv_epilogue_uses): New. * config/riscv/riscv.c (struct machine_function): Add interrupt_handler_p and attribute_checked_p fields. (riscv_attribute_table): Add interrupt. (riscv_interrupt_type_p): New. (riscv_save_reg_p): Save extra regs for interrupt handler. (riscv_use_save_libcall): Return false for interrupt handler. (riscv_first_stack_step): Add forward declaration. (riscv_compute_frame_info): New local interrupt_save_t1. Set it for interrupt handler with large frame. Use it for saved reg list. (riscv_expand_prologue): Move flag_stack_usage_info support to eliminate duplication. (riscv_expand_epilogue): Generate mret for interrupt handler. (riscv_epilogue_uses): New. (riscv_can_use_return_insn): Return false for interrupt handler. (riscv_function_ok_for_sibcall): Likewise. (riscv_set_current_function): Add interrupt handler support. * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses. * config/riscv/riscv.md (UNSPECV_MRET): New. (GP_REGNUM): New. (riscv_frflags, riscv_fsflags): Use tab after opcode. (riscv_mret): New. * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New. gcc/testsuite/ * gcc.target/riscv/interrupt-1.c: New. * gcc.target/riscv/interrupt-2.c: New. * gcc.target/riscv/interrupt-3.c: New. * gcc.target/riscv/interrupt-4.c: New. * gcc.target/riscv/interrupt-5.c: New. From-SVN: r260785
Jim Wilson committed -
2018-05-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85786 * gfortran.dg/pr85786.f90: New test. From-SVN: r260783
Steven G. Kargl committed -
* search.c (lookup_base): Use currently_open_class. (lookup_member): Use it regardless of -fconcepts. * parser.c (cp_parser_postfix_dot_deref_expression): Check it. From-SVN: r260782
Jason Merrill committed -
* gcc.c-torture/compile/20151204.c: Skip if pdp11. * gcc.c-torture/compile/pr55921.c: Ditto. * gcc.c-torture/compile/pr60655-1.c: Ditto. * gcc.c-torture/compile/vector-align-1.c: Add max alignment if pdp11. From-SVN: r260781
Paul Koning committed -
* tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer. From-SVN: r260780
Jason Merrill committed -
re PR tree-optimization/85712 (ICE in all_phi_incrs_profitable_1 at gcc/gimple-ssa-strength-reduction.c:3479) 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com> PR tree-optimization/85712 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if this candidate has already been replaced in-situ by a copy. From-SVN: r260772
Bill Schmidt committed -
From-SVN: r260763
Rasmus Villemoes committed -
* symtab.c (nonzero_address): Check DECL_COMDAT. From-SVN: r260762
Jason Merrill committed -
2018-05-25 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/85768 * src/c++11/debug.cc: Remove backtrace usage. From-SVN: r260761
François Dumont committed -
PR target/83628 * config/alpha/alpha.md (ashlsi3): New insn pattern. (*ashlsi_se): Rename from *ashldi_se. Define as sign extension of SImode operation. Use const123_operand predicate. (*saddsi_1): Remove. (*saddl_se_1): Ditto. (*ssubsi_1): Ditto. (*ssubl_se_1): Ditto. * config/alpha/predicates.md (const123_operand): New predicate. * config/alpha/constraints.md (P): Use IN_RANGE. From-SVN: r260760
Uros Bizjak committed -
2018-05-25 Richard Biener <rguenther@suse.de> * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter, defaulted to true. (ref_maybe_used_by_stmt_p): Likewise. (stmt_may_clobber_ref_p): Likewise. (stmt_may_clobber_ref_p_1): Likewise. * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter and pass it along. (ref_maybe_used_by_stmt_p): Likewise. (stmt_may_clobber_ref_p): Likewise. (stmt_may_clobber_ref_p_1): Likewise. * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use the alias oracle to disambiguate DRs with stmts DR analysis couldn't handle. (vect_analyze_data_refs): Do not give up on not analyzable DRs for BB vectorization. Remove code truncating the dataref vector. From-SVN: r260757
Richard Biener committed -
PR target/85832 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW in test instead of TARGET_AVX512F for VI12_AVX512VL iterator. * gcc.target/i386/avx512f-pr85832.c: New test. * gcc.target/i386/avx512vl-pr85832.c: New test. * gcc.target/i386/avx512bw-pr85832.c: New test. * gcc.target/i386/avx512vlbw-pr85832.c: New test. From-SVN: r260756
Jakub Jelinek committed -
tree-vect-data-refs.c (vect_find_stmt_data_reference): New function, combining stmt data ref gathering and fatal analysis parts. 2018-05-25 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_find_stmt_data_reference): New function, combining stmt data ref gathering and fatal analysis parts. (vect_analyze_data_refs): Remove now redudnant code and simplify. * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from vect_analyze_loop_2 and use vect_find_stmt_data_reference. * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference. * tree-vectorizer.h (vect_find_stmt_data_reference): Declare. From-SVN: r260754
Richard Biener committed -
PR tree-optimization/85720 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge SCC if all partitions are builtins. (version_loop_by_alias_check): New parameter. Generate cancelable runtime alias check if all partitions are builtins. (distribute_loop): Update call to above function. gcc/testsuite * gcc.dg/tree-ssa/pr85720.c: New test. * gcc.target/i386/avx256-unaligned-store-2.c: Disable loop pattern distribution. From-SVN: r260753
Bin Cheng committed -
2018-05-25 Martin Liska <mliska@suse.cz> PR testsuite/85911 * gcc.dg/tree-prof/update-loopch.c: Do not scan for 'Removing basic block'. From-SVN: r260748
Martin Liska committed -
* tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files. (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c. (parm_default_def_partition_arg): Ditto. (set_parm_default_def_partition): Ditto. (get_parm_default_def_partitions): Ditto and make it static. (get_undefined_value_partitions): Ditto and make it static. (remove_ssa_form): Refactor call to init_var_map here. * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range computation for loop region. (coalesce_partitions, compute_optimized_partition_bases): Ditto. (register_default_def): Delete. (for_all_parms, create_default_def): Move to tree-outof-ssa.c. (parm_default_def_partition_arg): Ditto. (set_parm_default_def_partition): Ditto. (get_parm_default_def_partitions): Ditto and make it static. (get_undefined_value_partitions): Ditto and make it static. (coalesce_with_default, coalesce_with_default): Update comment. (create_coalesce_list_for_region): New func factored out from create_outofssa_var_map. (populate_coalesce_list_for_outofssa): New func factored out from create_outofssa_var_map and coalesce_ssa_name. (create_outofssa_var_map): Delete. (coalesce_ssa_name): Refactor to support live range computation. * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl. (get_parm_default_def_partitions): Delete. (get_undefined_value_partitions): Ditto. * tree-ssa-live.c (init_var_map, delete_var_map): Support live range computation for loop region. (new_tree_live_info, loe_visit_block): Ditto. (live_worklist, set_var_live_on_entry): Ditto. (calculate_live_on_exit, verify_live_on_entry): Ditto. * tree-ssa-live.h (struct _var_map): New fields. (init_var_map): Change decl. (region_contains_p): New. From-SVN: r260747
Bin Cheng committed -
From-SVN: r260746
Bin Cheng committed -
2018-05-25 Richard Biener <rguenther@suse.de> PR c++/85912 * tree-dump.c (dequeue_and_dump): Remove access to removed operand 2 of a SWITCH_EXPR. From-SVN: r260744
Richard Biener committed -
Once it is sure that the result will be infinity, stop computation and return the result. This ensure that the function call duration is bounded. Before that change on some cases the computation was taking more than a few seconds. 2018-05-25 Nicolas Roche <roche@adacore.com> gcc/ada/ * libgnat/s-valrea.adb (Scan_Real): Abort computation once it is sure that the result will be either -infinite or +infinite. From-SVN: r260743
Nicolas Roche committed -
This patch removes the restriction introduced recently that limited the size of the secondary stack to 2GB. The size of the secondary stack is now limited to half of the size of the memory address space for the target. 2018-05-25 Patrick Bernardi <bernardi@adacore.com> gcc/ada/ * libgnat/s-parame.ads, libgnat/s-parame__vxworks.ads, libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads (Size_Type): Expand range of type to match the address space of the target. (Task_Storage_Size): Remove unused type. gcc/testsuite/ * gnat.dg/sec_stack1.adb: New testcase. From-SVN: r260742
Patrick Bernardi committed -
This patch fixes a spurious error in a fixed-point operand of a multiplying operator M when the operand is an adding operation and the context imposes a different fixed-point type to the result of M. 2018-05-25 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_res.adb (Set_Mixed_Mode_Operand): If the operand is an expression of a fixed point type and the parent is a multiplying operation, resolve the operand with its own type because the context will impose a resulting type on the result of the multiplication by means of approriate conversion. gcc/testsuite/ * gnat.dg/fixedpnt4.adb: New testcase. From-SVN: r260741
Ed Schonberg committed -
This patch modifies the expansion of default-initialized array objects when pragma Initialize_Scalars or Normalize_Scalars is in effect to suppress the generation of checks on the constructed in-place aggregate. The aggregate intentionally contains invalid values which may not necessarily fit the constraints of a particular component type. Check suppression ensures that no spurious checks are generated, and that the effects of the pragmas are carried out. ------------ -- Source -- ------------ -- gnat.adc pragma Initialize_Scalars; -- init_scalar.adb with Ada.Text_IO; use Ada.Text_IO; procedure Init_Scalar is type Fixed is delta 0.25 range -12.0 .. 1270.0; type Fixed_Array is array (1 .. 1) of Fixed; begin begin declare Obj : Fixed; pragma Unreferenced (Obj); begin null; end; exception when others => Put_Line ("ERROR: Fixed raised exception"); end; begin declare Obj : Fixed_Array; pragma Unreferenced (Obj); begin null; end; exception when others => Put_Line ("ERROR: Fixed_Array raised exception"); end; end Init_Scalar; ----------------- -- Compilation -- ----------------- $ gnatmake -q init_scalar.adb $ ./init_scalar 2018-05-25 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch3.adb (Default_Initialize_Object): Ensure that the analysis of the in-place initialization aggregate created for pragmas Initialize_Scalars or Normalize_Scalars is performed with checks suppressed. From-SVN: r260740
Hristian Kirtchev committed -
2018-05-25 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_aggr.adb (Convert_To_Positional): Bump default for Max_Others_Replicate to 32. Update comments. * osint.ads (Unknown_Attributes): No longer pretend this is a constant. (No_File_Info_Cache): Initialize separately. * osint.adb (No_File_Info_Cache): Update initializer. From-SVN: r260739
Arnaud Charlet committed -
The compiler rejects the use of a membership test when the left operand is a class-wide interface type object and the right operand is not a class-wide type. 2018-05-25 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Membership_Op): Allow the use of the membership test when the left operand is a class-wide interface and the right operand is not a class-wide type. * exp_ch4.adb (Tagged_Membership): Adding support for interface as the left operand. gcc/testsuite/ * gnat.dg/interface7.adb: New testcase. From-SVN: r260738
Javier Miranda committed -
2018-05-25 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_aggr.adb (Flatten): A quantified expression cannot be duplicated in an others clause to prevent visibility issues with the generated loop variable. (Component_OK_For_Backend): Return false for a quantified expression. (Check_Static_Component): Ditto. From-SVN: r260737
Ed Schonberg committed -
This patch reimplements the secondary stack allocation logic to eliminate an issue which causes the memory index to overflow while the stack itself uses very little memory, thus causing a spurious Storage_Error. The issue in details: The total amount of memory that the secondary stack can accomodate is dictated by System.Parameters.Size_Type which is really an Integer, giving roughly 2 GB of storage. The secondary stack is comprised of multiple frames which logically form a contiguous array of memory. Each frame maintans a range over which it operates, where Low bound = Previous frame's high bound + 1 High bound = Previous frame's high bound + Frame size The allocation logic starts by first checking whether the current top frame (which may not be the "last" frame in the secondary stack) has enough memory to fit an object. If it does, then that frame is used. If it does not, the logic then examines the subsequent frames, while carrying out the following actions: * If the frame is too small to fit the object, it is deleted * If the frame is big enough to fit the object, it is used If all the frames were too small (and thus deleted), a new frame is added which is big enough to fit the object. Due to an issue with the deletion logic, the last frame would never be deleted. Since any new frame's range is based on the previous frame's range, the new range would keep growing, even though the secondary stack may have very few frames in use. Eventually this growth overflows the memory index type. The overflow of the memory index type happens only when the secondary stack is full, and thus signals a Storage_Error. Due to the spurious growth of the ranges, the overflow happens much faster and results in a bogus stack depleton. The issue manifests only when each new memory request to the secondary stack is slightly bigger than the previous memory request, thus prompring the secondary stack to delete all its frames, and create a new one. 2018-05-25 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * libgnat/s-secsta.adb (SS_Allocate): Reimplemented. (SS_Allocate_Dynamic): New routine. The allocation logic is now split into three distring cases rather than in one loop which attempts to handle all three cases. This rewrite eliminates an issue where the last frame of the stack cannot be freed, thus causing the memory range of a new frame to approach the overflow point of the memory index type. Since the overflow is logically treated as a too-much-memory-on-the-stack scenario, it causes a bogus Storage_Error. (SS_Allocate_Static): New routine. The routine factorizes the static secondary stack-related code from the former SS_Allocate. gcc/testsuite/ * gnat.dg/sec_stack2.adb: New testcase. From-SVN: r260736
Hristian Kirtchev committed -
2018-05-25 Sergey Rybin <rybin@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_and_program_execution.rst: Add description of '-U' option for gnatelim. From-SVN: r260735
Sergey Rybin committed -
This patch allows the compiler to handle properly a classwide precondition on a primitive operation whose body is a stub and a separate subunit. Executing: gnatmake -gnata -q check ./check must yield: precondition violated ---- with Text_IO; with Msg_Data_Block_Decoder; use Msg_Data_Block_Decoder; procedure Check is Thing : T_Msg_Data_Block_Decoder; Value : Integer; begin begin Value := Get_Long_Term_Corrections (Thing); exception when others => Text_IO.Put_Line ("precondition violated"); end; end Check; ---- package Msg_Data_Block_Decoder is pragma Preelaborate; type T_Msg_Data_Block_Decoder is Tagged Limited null record; type T_Msg_Data_Block_Decoder_Class_Access is access all T_Msg_Data_Block_Decoder'Class; function Get_Decoded_Data (This : in T_Msg_Data_Block_Decoder) return Integer; function Get_Long_Term_Corrections (This : in T_Msg_Data_Block_Decoder) return Integer with Pre' Class => Get_Decoded_Data (T_Msg_Data_Block_Decoder'Class (This)) = 2; end Msg_Data_Block_Decoder; ---- package body Msg_Data_Block_Decoder is function Get_Long_Term_Corrections (This : in T_Msg_Data_Block_Decoder) return Integer is separate; function Get_Decoded_Data (This : in T_Msg_Data_Block_Decoder) return Integer is begin return 0; end Get_Decoded_Data; end Msg_Data_Block_Decoder; ---- separate (Msg_Data_Block_Decoder) function Get_Long_Term_Corrections (This : in T_Msg_Data_Block_Decoder) return Integer is begin return 0; end Get_Long_Term_Corrections; 2018-05-25 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not create Class_Wide_Clone_Body when analyzing a subprogram_body_stub: the clone is created when the proper body of the stub is analyzed. * sem_util.adb (ZBuild_Class_Wide_Clone_Body): If the subprogram body is the proper body of a subunit, the cloned body must be inserted in the declarative list that contains the stub. From-SVN: r260734
Ed Schonberg committed -
2018-05-25 Justin Squirek <squirek@adacore.com> gcc/ada/ * exp_ch6.adb (Expand_Simple_Function_Return): Add guard in check to generate code for 6.5(8-10) so that we don't get an assertion error when dealing with an incomplete return type. From-SVN: r260733
Justin Squirek committed -
2018-05-25 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * pprint.adb (Expression_Name): Strip too long expressions to avoid carrying very large strings. From-SVN: r260732
Arnaud Charlet committed -
Users can now specify that the binder should not create a secondary stack for the main (environment) task through the binder switch -Q0. This is useful for ZFP runtime users who allocate secondary stacks for their application themselves. 2018-05-25 Patrick Bernardi <bernardi@adacore.com> gcc/ada/ * switch-b.adb (Scan_Binder_Switches): binder switch -Q accepts Natural numbers. From-SVN: r260731
Patrick Bernardi committed -
2018-05-25 Doug Rupp <rupp@adacore.com> gcc/ada/ * tracebak.c (aarch64-linux): Implement. From-SVN: r260730
Doug Rupp committed -
2018-05-25 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch8.adb: Minor reformatting. From-SVN: r260729
Justin Squirek committed -
Refactoring based on suggestions from GNAT frontend developers. Semantics unaffected. 2018-05-25 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.adb (Iterate_Call_Parameters): Fix code convention and assertions. From-SVN: r260728
Piotr Trojanek committed -
2018-05-25 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * einfo.adb, einfo.ads, exp_ch3.adb, exp_ch8.adb, exp_unst.adb, pprint.adb, sem_ch12.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb: Minor reformatting. From-SVN: r260727
Hristian Kirtchev committed -
2018-05-25 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch12.adb (Instance_Exists): New function, subsidiary of Validate_Derived_Type_Instance, to verify that all interfaces implemented by the formal type are also implemented by the actual. The verification is complicated when an interface of the formal is declared in a generic unit and the actual is declared in an instance of it. There is currently no mechanism to relate an interface declared within a generic to the corresponding interface in an instance, so we must traverse the list of interfaces of the actual, looking for a name match, and verifying that that interface is declared in an instance. From-SVN: r260726
Ed Schonberg committed
-