- 21 Aug, 2018 40 commits
-
-
If F is a function with a single defaulted parameter that returns an access_to_array type, then F (I) may designate either the return type or an indexing of the result of the call, after implicit dereferencing. If the component type C of the array type AR is accces AR this is ambiguous in a context whose expected type is C. If F is parameterless the call is not ambiguous. 2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Call): Resolve correctly a parameterless call that returns an access type whose designated type is the component type of an array, when the function has no defaulted parameters. gcc/testsuite/ * gnat.dg/access5.adb, gnat.dg/access5.ads: New testcase. From-SVN: r263726
Ed Schonberg committed -
2018-08-21 Yannick Moy <moy@adacore.com> gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Document entries of the target parametrization file. * gnat_ugn.texi: Regenerate. From-SVN: r263725
Yannick Moy committed -
2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_attr.adb: Set scope of elaboration flag for 'Access. From-SVN: r263724
Ed Schonberg committed -
2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sprint.adb: Add guard on printing aspects. From-SVN: r263723
Ed Schonberg committed -
The compiler blows up generating the callgraph output of SPARK ghost subprograms whose contracts invoke ghost functions. 2018-08-21 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_cg.adb (Generate_CG_Output): Handle calls removed by the expander. From-SVN: r263722
Javier Miranda committed -
2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * layout.adb: Do not set size of access subprogram if unnesting. From-SVN: r263721
Ed Schonberg committed -
2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * freeze.adb: Remove warnings for access to subprograms when unnesting is active. From-SVN: r263720
Ed Schonberg committed -
This patch fixes an improper expansion of aggregates for limited array types in an object declaration. Prior to this patch, The presence of the aggregate (which can only consist of box initializations) would create a temporary that was then assigned to the object in the declaration. Apart from a violation of the semantics of build-in-place limited objects, this can also lead to out-of-scope access in LLVM. Executing the following; gcc -c -gnatDG nocopy.adb grep quintet nocopy.adb.dg | wc -l must yield: 5 ---- procedure NoCopy is -- Task used in this example to test that the limited component -- is properly initialized. task type T_Task (Disc : Natural); task body T_Task is begin null; end T_Task; type My_Rec (D : Natural := 9999) is record -- Components initialized by means of the current value -- of the record discriminant T : T_Task (D); end record; type TR is array (1 .. 5) of My_Rec; Quintet : TR := (others => (others => <>)); begin null; end NoCopy; 2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_aggr.adb (Expand_Array_Aggregate): If the component type is limited, the array must be constructed in place, so set flag In_Place_Assign_OK_For_Declaration accordingly. This prevents improper copying of an array of tasks during initialization. From-SVN: r263719
Ed Schonberg committed -
2018-08-21 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/trans.c (Call_to_gnu): Always suppress an unchecked conversion around the actual for an In parameter passed by copy. From-SVN: r263718
Eric Botcazou committed -
This fixes a long-standing issue present for extensions of tagged record types with a representation clause: the clause is correctly inherited for components inherited in the extension but the position and size are not, which fools the logic of Is_Possibly_Unaligned_Object. This can result in an attempt to take the address of a component not aligned on a byte boundary, which is then flagged as an internal error. 2018-08-21 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_util.adb (Is_Possibly_Unaligned_Object): For the case of a selected component inherited in a record extension and subject to a representation clause, retrieve the position and size from the original record component. gcc/testsuite/ * gnat.dg/rep_clause7.adb: New testcase. From-SVN: r263717
Eric Botcazou committed -
This patch fixes a spurious error in a program that contains a discriminated task type and several of its subtype in the same declarative part, when the corresponding discriminant constraints are expressions. 2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_util.ads, sem_util.adb (New_External_Entity): Type of Suffix_Index must be Int, not Nat, so that a negative value can be used to generate a unique name for an external object, as specified in Tbuild.New_External_Name. (Scope_Within): Handle private type whose completion is a synchronized type (For unnesting). * itypes.ads, itypes.adb (Create_Itype): Ditto * sem_ch3.adb (Constrain_Corresponding_Record): Generate a unique name for the created subtype, because there may be several discriminated tasks present in the same scope, and each needs its distinct corresponding record subtype. gcc/testsuite/ * gnat.dg/task1.adb, gnat.dg/task1.ads, gnat.dg/task1_pkg.adb, gnat.dg/task1_pkg.ads: New testcase. From-SVN: r263716
Ed Schonberg committed -
The dimension system in System.Dim.Mks is based on Long_Long_Float, which may not be convenient to people who want to use Float or Long_Float as basis. These new files provide units that define the dimension system based on Float in System.Dim.Float_Mks and on Long_Float in System.Dim.Long_Mks. Child packages Other_Prefixes and Mks_IO are also defined appropriately, with new instantiations for the various sizes of floating-point types. 2018-08-21 Yannick Moy <moy@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_and_program_execution.rst: Update documentation of dimensionality analysis. * gnat_ugn.texi: Regenerate. * Makefile.rtl, impunit.adb: Consider the new units. * libgnat/s-dfmkio.ads, libgnat/s-dfmopr.ads, libgnat/s-diflmk.ads: New units based on Float. * libgnat/s-dilomk.ads, libgnat/s-dlmkio.ads, libgnat/s-dlmopr.ads: New units based on Long_Float. * libgnat/s-dmotpr.ads: Rename to libgnat/s-dgmgop.ads and turn into an instance of System.Dim.Generic_Mks.Generic_Other_Prefixes. * libgnat/s-dimmks.ads: Rename to libgnat/s-digemk.ads and turn into an instance of System.Dim.Generic_Mks. From-SVN: r263715
Yannick Moy committed -
This patch adds unit GNAT.Lists which currently contains the implementation of a general purpose doubly linked list intended for use by the compiler and the tools around it. 2018-08-21 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * impunit.adb: Add g-lists to the set of non-implementation units. * libgnat/g-lists.adb, libgnat/g-lists.ads: New unit. * Makefile.rtl: Add g-lists to the set of non-tasking units. * gcc-interface/Make-lang.in: Add g-lists to the set of files used by gnat1. gcc/testsuite/ * gnat.dg/linkedlist.adb: New testcase. From-SVN: r263714
Hristian Kirtchev committed -
2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch9.adb (Reset_Scopes): Do not recurse into type declarations when resetting the scope of entities declared the procedures generated for entry bodies and accept alternatives. Use the entity of the procedure declaration, not its body, as the new scope. From-SVN: r263713
Ed Schonberg committed -
This patch modifies the set of attributes that applies to entries and entry families to include elaboration entities used by the access-before-elaboration mechanism. 2018-08-21 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * einfo.adb (Elaboration_Entity): Include entries and entry families in the set of legal entities. (Elaboration_Entity_Required): Include entries and entry families in the set of legal entities. (Set_Elaboration_Entity): Include entries and entry families in the set of legal entities. (Set_Elaboration_Entity_Required): Include entries and entry families in the set of legal entities. (Write_Field13_Name): Update the output of attribute Elaboration_Entity. * einfo.ads: Attributes Elaboration_Entity and Elaboration_Entity_Required now apply to entries and entry families. gcc/testsuite/ * gnat.dg/elab6.adb, gnat.dg/elab6.ads, gnat.dg/elab6_pkg.adb, gnat.dg/elab6_pkg.ads: New testcase. From-SVN: r263712
Hristian Kirtchev committed -
2018-08-21 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * set_targ.adb: Mark some CodePeer message as Intentional. From-SVN: r263711
Arnaud Charlet committed -
If a discriminant specification has a default that is a call to an expression function, that function has to be frozen at the point of a call to the initialization procedure for an object of the record type, even though the call does not appear to come from source. 2018-08-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Call): Force the freezing of an expression function that is called to provide a default value for a defaulted discriminant in an object initialization. gcc/testsuite/ * gnat.dg/expr_func5.adb: New testcase. From-SVN: r263710
Ed Schonberg committed -
This patch introduces a dynamically resizable, load factor-based hash table in unit GNAT.Dynamic_HTables. 2018-08-21 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: New package Dynamic_HTable. gcc/testsuite/ * gnat.dg/dynhash.adb: New testcase. From-SVN: r263709
Hristian Kirtchev committed -
The compiler may report errors on enumeration types with non-standard representation (i.e. at least one literal has a representation value different from its 'Pos value) processing attribute 'Enum_Rep. It may also generate wrong code for the evaluation of 'Enum_Rep raising Constraint_Error at runtime. 2018-08-21 Javier Miranda <miranda@adacore.com> gcc/ada/ * checks.ads (Determine_Range): Adding documentation. * checks.adb (Determine_Range): Don't deal with enumerated types with non-standard representation. (Convert_And_Check_Range): For conversion of enumeration types with non standard representation to an integer type perform a direct conversion to the target integer type. gcc/testsuite/ * gnat.dg/enum4.adb: New testcase. From-SVN: r263708
Javier Miranda committed -
In GNATprove we appear to abuse a routine related to cross-references and expect it to deliver exact results, which is not what it was designed for. This patch is a temporary solution to avoid crashes in GNATprove; it doesn't affect the frontend or other backends, because this code is used exclusively by GNATprove (it is located in the frontend for technical reasons). No tests provided. 2018-08-21 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * lib-xref.ads, lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Library_Package): Now roughtly works for pragmas that come from aspect specifications. From-SVN: r263707
Piotr Trojanek committed -
These new source files will make it possible to build SPARK 2014 from a snapshot of GCC FSF sources. 2018-08-21 Pierre-Marie de Rodat <derodat@adacore.com> gcc/ada/ * sa_messages.ads, sa_messages.adb: New source files. From-SVN: r263706
Pierre-Marie de Rodat committed -
From-SVN: r263703
David Edelsohn committed -
2018-08-21 Richard Sandiford <richard.sandiford@arm.com> * MAINTAINERS: Add self to global reviewers list. From-SVN: r263702
Richard Sandiford committed -
* tree.c (find_decls_types_r): Do not check for redundant typedefs. * tree.h (is_redundant_typedef): Remove. * dwarf2out.c (is_redundant_typedef): Turn into static function. From-SVN: r263699
Jan Hubicka committed -
2018-08-21 Pierre-Marie de Rodat <derodat@adacore.com> gcc/ada/ * libgnarl/a-intnam__dragonfly.ads, libgnarl/s-osinte__dragonfly.adb, libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__gnu.ads, libgnarl/s-osinte__hpux-dce.adb, libgnarl/s-osinte__hpux-dce.ads, libgnarl/s-taprop__hpux-dce.adb, libgnarl/s-taspri__hpux-dce.ads: Bump copyright notices to 2018. From-SVN: r263698
Pierre-Marie de Rodat committed -
* tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT when possible. From-SVN: r263697
Jan Hubicka committed -
This patch fixes an ICE that would happen when extract_low_bits is called with modes for which you can't extract a valid subreg. e.g. taking a 32 bytes subreg from a 48 byte mode. The ICE happens because convert_modes which eventually calls simplify_gen_subreg does not expect the convertion to fail. The assert in gen_lowpart_general would then be hit. The patch changes it to validate the subreg before trying to convert the modes. If the subreg is not possible we return NULL_RTX and bail out early. gcc/ChangeLog: 2018-08-21 Tamar Christina <tamar.christina@arm.com> * expmed.c (extract_low_bits): Reject invalid subregs early. gcc/testsuite/ChangeLog: 2018-08-21 Tamar Christina <tamar.christina@arm.com> * gcc.target/aarch64/large_struct_copy.c: New test. From-SVN: r263696
Tamar Christina committed -
These tests accidentally had two dg-do directives. Only the second one is needed. * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove redundant dg-do directive. * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise. * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise. * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise. * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise. From-SVN: r263695
Jonathan Wakely committed -
clock_gettime is not available on some baremetal targets and may require -lrt on some non-linux targets. gcc/testsuite/ChangeLog: * g++.dg/torture/pr86763.C: Restrict to *-*-linux*. From-SVN: r263694
Szabolcs Nagy committed -
2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de> PR middle-end/86121 * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined behaviour. testsuite: 2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de> PR middle-end/86121 * gcc.dg/Wstringop-overflow-6.c: Remove xfail. From-SVN: r263693
Bernd Edlinger committed -
When the compiler is configured with --enable-initfini-array, config/initfini-array.h gets included after config/vxworks.h by tm.h, so the definitions of TARGET_ASM_CONSTRUTOR/TARGET_ASM_DESTRUCTOR in vxworks.h get undone in initfini-array.h. Hence, we might as well not define the vxworks_asm_out_* functions. From-SVN: r263692
Rasmus Villemoes committed -
The target OS actually runs all function pointers found in the _ctors array when the module is loaded. So it is not that hard to make use of the "modern" .init_array/.fini_array mechanism - it mostly just requires a linker script adding the _ctors and _dtors symbols and terminating LONG(0) entries. Assume that if the user passed --enable-initfini-array when building gcc, the rest of the toolchain (including the link spec and linker script) is set up appropriately. Note that configuring with --enable-initfini-array may prevent the -mrtp mode from working, due to the (unconditional) use of .init_array.* sections instead of .ctors.* - however, that is the case regardless of this patch. From-SVN: r263691
Rasmus Villemoes committed -
In order to allow ZCX on VxWorks, we need the frame_dummy function to do the register_frame_info(). So make sure crtbegin.o and crtend.o are available for use with a custom spec file. From-SVN: r263690
Rasmus Villemoes committed -
In order to build crtstuff.c, I need to ensure the headers in target/h/wrn/coreip are also searched. Of course, that can be done similar to how wrn/coreip gets manually added for libgcc, e.g. by adding CRTSTUFF_T_CFLAGS += -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip But without target/h/wrn/coreip in the default search path, all user-code that include <unistd.h> (crtstuff.c just being one such example) will have to manually add an -isystem flag adding the wrn/coreip directory: unistd.h include ioLib.h, which has #include "net/uio.h" and that header is found in target/h/wrn/coreip. In other words, the VxWorks system headers (at least for VxWorks 5.5) are written in a way that assumes wrn/coreip is in the search path, so I think it makes sense to have that by default. It will change the search order for existing setups that pass -I.../target/h/wrn/coreip (without -nostdinc), since that flag will now be ignored. I can't know whether that will break anything, but I do believe it makes sense to have the defaults actually usable without expecting all invocations to add -I/-isystem flags. From-SVN: r263689
Rasmus Villemoes committed -
2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de> * gimple-ssa-sprintf.c (decl_constant_value): Remove. (get_format_string): Refer to c_getstr. From-SVN: r263688
Bernd Edlinger committed -
With the introduction of early debug, we've added a phase in the compiler which produces information which is not visible, unless we run the compiler in the debugger and call debug_dwarf from dwarf2out_early_finish or some such. This patch adds dumping of "early" and "final" debug info, into .earlydebug and .debug dump files, enabled by -fdump-earlydebug and -fdumpdebug, such that we can follow f.i. the upper bound of a vla type from early debug: ... DW_AT_upper_bound: location descriptor: (0x7f0d645b7550) DW_OP_GNU_variable_value , 0 ... to final debug: ... DW_AT_upper_bound: location descriptor: (0x7f0d645b7550) DW_OP_fbreg 18446744073709551592, 0 (0x7f0d645b7a00) DW_OP_deref 8, 0 ... to -dA annotated assembly file: ... .uleb128 0x3 # DW_AT_upper_bound .byte 0x91 # DW_OP_fbreg .sleb128 -24 .byte 0x6 # DW_OP_deref ... The .debug file shows the same information as the annotated assembly, but in the same format as the "early" debug info. Bootstrapped and reg-tested on x86_64. 2018-08-21 Tom de Vries <tdevries@suse.de> * cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini) (debuginfo_start, debuginfo_stop, debuginfo_early_start) (debuginfo_early_stop): Declare. * cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini) (debuginfo_start, debuginfo_stop, debuginfo_early_start) (debuginfo_early_stop): New function. (symbol_table::finalize_compilation_unit): Call debuginfo_early_start and debuginfo_early_stop. * dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf. * toplev.c (compile_file): Call debuginfo_start and debuginfo_stop. (general_init): Call debuginfo_early_init. (finalize): Call debuginfo_fini. (do_compile): Call debuginfo_init. * doc/invoke.texi (@gccoptlist): Add -fdump-debug and -fdump-early-debug. (@item -fdump-debug, @item -fdump-earlydebug): Add. * lto.c (lto_main): Call debuginfo_early_start and debuginfo_early_stop. * gcc.c-torture/unsorted/dump-noaddr.x: Use -gno-record-gcc-switches to avoid mismatch in .debug and .earlydebug dump files. From-SVN: r263687
Tom de Vries committed -
2018-08-21 Tom de Vries <tdevries@suse.de> * dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle flag_dump_noaddr and flag_dump_unnumbered. From-SVN: r263686
Tom de Vries committed -
* wide-int-range.cc (wide_int_range_abs): New. (wide_int_range_order_set): Rename from wide_int_range_min_max. * wide-int-range.h (wide_int_range_abs): New. (wide_int_range_min_max): New. * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR case to call wide_int_range_abs. Rewrite MIN/MAX_EXPR to call wide_int_range_min_max. (extract_range_from_abs_expr): Delete. From-SVN: r263685
Aldy Hernandez committed -
From-SVN: r263683
GCC Administrator committed -
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01170.html * pex-unix.c (pex_child_error): Delete. (pex_unix_exec_child): Commonize error paths to single message & exit. From-SVN: r263679
Nathan Sidwell committed
-