- 26 Sep, 2018 25 commits
-
-
This patch fixes a missing error on a type extension with limited components, when the parent type is a derived limited interface. This may allow the unit to improperly compile, but may lead to bind-time errors when compiling a client of that unit. Compiling p.adb must yield: keys.ads:8:06: extension of nonlimited type cannot have limited components keys.ads:8:06: limitedness is not inherited from limited interface keys.ads:8:06: add "limited" to type indication ---- with Keys; procedure P is begin null; end; ---- with GNAT.Semaphores; package Keys is type Ref0 is limited interface; type Ref2 is limited interface and Ref0; type Object is new Ref2 with record Lock : aliased GNAT.Semaphores.Binary_Semaphore (True, GNAT.Semaphores.Default_Ceiling); end record; end; 2018-09-26 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Is_Onown_Limited): A derived type whose parent P is a derived limited record is not itself limited if P is a derived limited interface. From-SVN: r264616
Ed Schonberg committed -
This fixes a small discrepancy in the handling of renamed subprograms declared in a package body, between those originally a regular subprogram and those an instance of a generic subprogram, the latter being slightly hindered. The difference comes from the setting of the Is_Public flag, which was more conservative in the latter case because instantiations of generic subprograms are done in compiler-generated local packages. It is eliminated by allowing Has_Referencer to recurse into nested packages, but only if they are themselves not instances of generic packages. The compiler must now fully inline Doit_I into Doit at -O2 in: package P is generic procedure Doit_G; procedure Doit; end P; package body P is N : Natural := 0; procedure Doit_G is begin N := 1; end Doit_G; procedure Doit_I is new Doit_G; procedure Doit renames Doit_I; end P; 2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch7.adb (Has_Referencer): Remove Top_Level parameter and add In_Nested_Instance and Has_Outer_Referencer_Of_Non_Subprograms parameters. Rename Has_Non_Subprograms_Referencer variable into Has_Referencer_Of_Non_Subprograms and initialize it with the new third parameter. Adjust recursive calls and to the renaming. Replace test on Top_Level with test on In_Nested_Instance to decide whether to clear the Is_Public flag on entities. (Hide_Public_Entities): Adjust call to Has_Referencer. From-SVN: r264615
Eric Botcazou committed -
This adjusts and exposes a couple of functions of the front-end used for the generation of interface thunks so as to make them callable from gigi. This also propagates the debug info setting from the targets to the thunks so as to make stepping into primitives work better in the debugger. 2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_disp.adb (Expand_Interface_Conversion): Use Present test. (Expand_Interface_Thunk): Propagate debug info setting from target. * exp_util.ads (Find_Interface_Tag): Adjust comment. * exp_util.adb (Find_Interface_Tag): Remove assertions of success. * sem_util.adb (Is_Variable_Size_Record): Only look at components and robustify the implementation. * fe.h (Find_Interface_Tag): Declare. (Is_Variable_Size_Record): Likewise. From-SVN: r264614
Eric Botcazou committed -
2018-09-26 Thomas Quinot <quinot@adacore.com> gcc/ada/ * exp_util.adb (Make_CW_Equivalent_Type): Propagate bit order and scalar storage order from root type to classwide equivalent type, to prevent rejection of the equivalent type by the freezing circuitry. gcc/testsuite/ * gnat.dg/sso12.adb: New testcase. From-SVN: r264613
Thomas Quinot committed -
This patch fixes an issue whereby using a call to an expression function as the domain of iteration for a loop would trigger a crash due to the function not being frozen appropriately. 2018-09-26 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch5.adb (Analyze_Iterator_Specification): Add conditional to freeze called functions within iterator specifications during full analysis. (Preanalyze_Range): Minor typo fix. gcc/testsuite/ * gnat.dg/expr_func8.adb: New testcase. From-SVN: r264612
Justin Squirek committed -
The semantics of the return statement includes an implicit conversion of the value to the return type of the funcction. This conversion, as elsewhere, entails a predicate check if the return type has a predicate aspect. We do not apply the check to a case expression because in the context of a return statement it will be expanded into a series of return statements, each of which will receive a predicate check. 2018-09-26 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Function_Return): If the return type has a dynamic_predicate, apply a Predicate_Check to the expression, given that it is implicitly converted to the return type. Exclude case expressions from the check, because in this context the expression is expanded into individual return statements. gcc/testsuite/ * gnat.dg/predicate3.adb, gnat.dg/predicate3_pkg.ads: New testcase. From-SVN: r264611
Ed Schonberg committed -
2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Task_Type>: In -gnatct mode, process the discriminants only for a definition. From-SVN: r264610
Eric Botcazou committed -
The JSON output of the -gnatR machinery was choking on record subtypes and the change fixes this oversight. The following package must now compile properly with -gnatRj: package P is type Rec (D : Integer) is record C : Integer; case D is when 1 => S : String (1 .. 20); when 2 => B : Boolean; when others => Ch1 : Character; F : Float; Ch2 : Character; end case; end record; subtype Rec1 is Rec (1); end P; 2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * repinfo.adb (List_Record_Layout): Be prepared for JSON output. (List_Record_Info): Use the flat representation for record subtypes in the JSON format. From-SVN: r264609
Eric Botcazou committed -
This patch fixes an issue whereby the compilation of partial sources (packages without bodies that require them) would not occur when said sources were remote call interfaces. This is required because such interfaces may have bodies that only exist on the server side or vice versa 2018-09-26 Justin Squirek <squirek@adacore.com> gcc/ada/ * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add documentation and an extra conditional check for RCI units so that generated ali files will list the spec only instead of a body when a body is not found. From-SVN: r264608
Justin Squirek committed -
This changes gigi to set Current_Error_Node directly, which should result in a more robust error handling. 2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/gigi.h (error_gnat_node): Delete. * gcc-interface/trans.c (error_gnat_node): Likewise. (gigi): Replace it with Current_Error_Node. (gnat_to_gnu): Likewise. * gcc-interface/utils.c (rest_of_subprog_body_compilation): Likewise. * gcc-interface/misc.c (internal_error_function): Do not set it. From-SVN: r264607
Eric Botcazou committed -
2018-09-26 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust code retrieving the address when a clause has already been processed. * gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Definition_Clause>: For an object with a Freeze node, build a meaningful expression. gcc/testsuite/ * gnat.dg/addr12.adb, gnat.dg/addr12_a.adb, gnat.dg/addr12_a.ads, gnat.dg/addr12_b.adb, gnat.dg/addr12_b.ads, gnat.dg/addr12_c.ads: New testcase. From-SVN: r264606
Eric Botcazou committed -
This will allow us to remove the import of flag_compare_debug in lib-writ.adb in a second stage. 2018-09-26 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * gnat1drv.adb (Adjust_Global_Switches): -gnatd_A sets Opt.Disable_ALI_File. * debug.adb: Update debug flags documentation. From-SVN: r264605
Arnaud Charlet committed -
2018-09-26 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * contracts.adb (Analyze_Entry_Or_Subprogram_Contract): The analysis of preconditions specified by pragmas (rather than aspects) is not delayed, and therefore expressions functions that are completions do not need special handling during expansion. From-SVN: r264604
Ed Schonberg committed -
2018-09-26 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb: Fix handling of up level references for entries. From-SVN: r264603
Ed Schonberg committed -
2018-09-26 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * contracts.adb (Expand_Subprogram_Contract, Process_Preconditions_For): Apply Freeze_Expr_Types to the expression for a precondition of an expression function that is a completion, when the completion appears in the private part and the declaration it completes is in the visible part of the same package. * freeze.adb (Freeze_Expr_Types): Do not establish the scope of the operation if it is already installed, as will be the case when called to analyze the contract oc the subprogram (which happens when generating code inside the subprogram body). From-SVN: r264602
Ed Schonberg committed -
2018-09-26 Maroua Maalej <maalej@adacore.com> gcc/ada/ * sem_spark.adb (Check_Param_In, Setup_Parameter_Or_Global): Change the operation associated to assigning to an IN parameter. In SPARK, IN access-to-variable is an observe operation for a function, and borrow operation for a procedure. From-SVN: r264601
Maroua Maalej committed -
2018-09-26 Arnaud Charlet <charlet@adacore.com> gcc/ada * vxlink.adb: Minor reformatting. From-SVN: r264600
Arnaud Charlet committed -
2018-09-26 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch9.adb, layout.adb, sem_attr.adb, sem_res.adb: Fix miscellaneous typos. From-SVN: r264599
Gary Dismukes committed -
A few places in the arm and aarch64 backends check whether an atomic operation needs acquire or release semantics. A few places in the arm and aarch64 backends check whether an atomic operation needs acquire or release semantics. This is generally done with a check like (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model)) In this patch we introduce two helper functions to make things a little tidier. There are a few places in the arm/ backend that check whether an operation needs memory model semantics with an idiom that can now be replaced with the new aarch_mm_needs_* functions, so we make that replacement. There is also some backslash removal to make things a little tidier. Full bootstrap and regression test plus cross-compilation regression tests done on arm-none-linux-gnueabihf. Ok for trunk? gcc/ChangeLog: 2018-09-20 Matthew Malcomson <matthew.malcomson@arm.com> * config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op): Use new helper functions. * config/arm/sync.md (atomic_load<mode>, atomic_store<mode>): Use new helper functions. * config/arm/aarch-common-protos.h (aarch_mm_needs_acquire, aarch_mm_needs_release): New declarations. * config/arm/aarch-common.c (aarch_mm_needs_acquire, aarch_mm_needs_release): New. From-SVN: r264598
Matthew Malcomson committed -
2018-09-26 Jerome Lambourg <lambourg@adacore.com> gcc/ada/ * vxlink.adb: Kill a CodePeer warning. From-SVN: r264597
Jerome Lambourg committed -
2018-09-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/67656 * g++.dg/concepts/pr67656.C: New. From-SVN: r264596
Paolo Carlini committed -
* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks. (arm32_output_mi_thunk): Deal with long calls. From-SVN: r264595
Eric Botcazou committed -
2018-09-26 Richard Biener <rguenther@suse.de> PR debug/87428 PR debug/87362 * tree-inline.c (expand_call_inline): When the location of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of the inserted BLOCK to make inlined_function_outer_scope_p recognize it. * dwarf2out.c (add_call_src_coords_attributes): Do not add coords for reserved locations. From-SVN: r264594
Richard Biener committed -
Reviewed-on: https://go-review.googlesource.com/137535 From-SVN: r264593
Ian Lance Taylor committed -
From-SVN: r264592
GCC Administrator committed
-
- 25 Sep, 2018 15 commits
-
-
Some code is much neater if it uses set_attr_alternative than if it does everything by hand. Change some patterns to use this shorthand. * config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative. (*call_indirect_nonlocal_sysv<mode>): Ditto. (*call_value_indirect_nonlocal_sysv<mode>): Ditto. (*sibcall_nonlocal_sysv<mode>): Ditto. (*sibcall_value_nonlocal_sysv<mode>): Ditto. (<bd>_<mode>): Ditto. (<bd>tf_<mode>): Ditto. From-SVN: r264588
Segher Boessenkool committed -
A few of the rs6000 patterns use C code as output control string, where that code is just a "switch (which_alternative)" with all alternatives returning a constant string or just the result of a function call as template. Write such cases as just a list of templates, with the few pieces that are C code preceded by "*". * config/rs6000/altivec.md (*altivec_mov<mode>): Write the output control string as a list of templates instead of as C code. (*altivec_movti): Ditto. * config/rs6000/darwin.md (movdf_low_di): Ditto. From-SVN: r264587
Segher Boessenkool committed -
gcc/ * config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak when target symbol is weak. gcc/testsuite/ * gcc.target/riscv/weak-1.c: New. From-SVN: r264586
Jim Wilson committed -
PR c/87387 * builtins.c (unterminated_array): Simplify. * expr.c (string_constant): Handle SSA_NAME. Add more exceptions where pointer arithmetic is safe. * gcc.dg/warn-stpcpy-no-nul.c: Drop unnecessary xfails. * gcc.dg/warn-stplen-no-nul.c: Likewise. From-SVN: r264585
Jeff Law committed -
The original AltiVec manuals had the immediate lane number in the splat instructions as a 5-bit number, but anything too big has no defined meaning, and gas will choke on it too. This patch disallows it in the instruction patterns as well as in the builtins. This solves PR86987. PR target/86987 * config/rs6000/altivec.md (altivec_vspltb): Use const_0_to_15_operand instead of u5bit_cint_operand. (*altivec_vspltb_internal): Ditto. (altivec_vspltb_direct): Ditto. (altivec_vsplth): Use const_0_to_7_operand instead of u5bit_cint_operand. (*altivec_vsplth_internal): Ditto. (altivec_vsplth_direct): Ditto. (altivec_vspltw): Use const_0_to_3_operand instead of u5bit_cint_operand. (*altivec_vspltw_internal): Ditto. (altivec_vspltw_direct): Ditto. (altivec_vspltsf): Ditto. (*altivec_vspltsf_internal): Ditto. * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the various splats with the proper size immediate. Reorder the various cases by ascending size of immediate, and put all such together. From-SVN: r264584
Segher Boessenkool committed -
The testcase failed when the compiler used .loc view syntax, because it expected discriminators at the end of the .loc lines. for gcc/testsuite/ChangeLog * gnat.dg/dinst.adb: Adjust for locviews. From-SVN: r264583
Alexandre Oliva committed -
[testsuite] 2018-09-25 Will Schmidt <will_schmidt@vnet.ibm.com> * g++.dg/ext/altivec-6.C: Updated vec_splat() calls. * gcc.target/powerpc/fold-vec-splat-char.c: Remove invalid vec_splat calls from recently added tests. Update instruction counts. * gcc.target/powerpc/fold-vec-splat-floatdouble.c: Same. * gcc.target/powerpc/fold-vec-splat-int.c: Same. * gcc.target/powerpc/fold-vec-splat-longlong.c: Same. * gcc.target/powerpc/fold-vec-splat-pixel.c: Same. * gcc.target/powerpc/fold-vec-splat-short.c: Same. From-SVN: r264582
Will Schmidt committed -
PR c++/87425 * g++.dg/cpp2a/constexpr-virtual12.C: New test. From-SVN: r264581
Marek Polacek committed -
re PR c++/87398 (g++ ICE on valid code: tree check: expected record_type or union_type or qual_union_type, have array_type in cxx_eval_constant_expression, at cp/constexpr.c:4820) PR c++/87398 * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs. * g++.dg/other/pr87398.C: New test. * g++.dg/cpp2a/constexpr-virtual10.C: New test. * g++.dg/cpp2a/constexpr-virtual11.C: New test. From-SVN: r264580
Jakub Jelinek committed -
2018-09-25 Martin Jambor <mjambor@suse.cz> PR testsuite/87339 * gcc.dg/warn-abs-1.c: Do not test _Float128. Remove dg-skip-if and float125 target. * gcc.target/i386/warn-abs-3.c: New test. From-SVN: r264579
Martin Jambor committed -
From-SVN: r264578
Uros Bizjak committed -
re PR c++/81246 (ICE on invalid C++ code (with a non-type template parameter having type 'float'): Segmentation fault) 2018-09-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81246 * g++.dg/cpp0x/pr81246.C: New. From-SVN: r264577
Paolo Carlini committed -
In r263225 (d2e378182a12d68fe5caeffae681252662a2fe7b), I fixed condition_variable::wait_for to use std::chrono::steady_clock for the wait. Unfortunately, I failed to spot that the same fix is required for the wait_for variant that takes a predicate too. 2018-09-25 Mike Crowe <mac@mcrowe.com> * include/std/condition_variable (condition_variable::wait_for): Use steady clock in overload that uses a predicate. From-SVN: r264575
Mike Crowe committed -
If a std::variant can never get into valueless state then we don't need to do a runtime check for a valid alternative. PR libstdc++/87431 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid): Avoid runtime test when all alternatives are scalars and so cannot throw during initialization. From-SVN: r264574
Jonathan Wakely committed -
2018-09-25 Richard Biener <rguenther@suse.de> PR debug/83941 * dwarf2out.c (add_AT_external_die_ref): Remove now redundant GC-ification. (maybe_create_die_with_external_ref): Do not create DW_TAG_imported_unit here. (add_abstract_origin_attribute): Handle external BLOCK refs. (dwarf2out_abstract_function): Simplify LTO case. (dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely rather than using maybe_create_die_with_external_ref. From-SVN: r264573
Richard Biener committed
-