- 21 Aug, 2019 15 commits
-
-
Code cleanup to improve readablity. Semantics unaffected. 2019-08-21 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_util.adb (Corresponding_Runtime_Package): Use high-level Is_Protected_Type. * sem_ch8.adb (Analyze_Renamed_Entry): Likewise. * sem_ch9.adb (Analyze_Requeue): Likewise. From-SVN: r274777
Piotr Trojanek committed -
The compiler crashes processing an internally generated cloned tree that has a subprogram call with a named actual parameter. 2019-08-21 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_util.adb (Update_Named_Associations): Update First_Named_Actual when the subprogram call has a single named actual. gcc/testsuite/ * gnat.dg/implicit_param.adb, gnat.dg/implicit_param_pkg.ads: New testcase. From-SVN: r274776
Javier Miranda committed -
2019-08-21 Joel Brobecker <brobecker@adacore.com> gcc/ada/ * doc/Makefile (mk_empty_dirs): New (PHONY) rule. (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on mk_empty_dirs. From-SVN: r274775
Joel Brobecker committed -
Allow values of negative one to be accepted as a valid parameter as a special case. 2019-08-21 Justin Squirek <squirek@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Modify documentation to reflect expected behavior. * gnat_rm.texi: Regenerate. * sem_prag.adb (Analyze_Pragma): Modify handling of pragma Max_Entry_Queue_Length to not reject integer values of negative one. * sem_util.adb (Get_Max_Queue_Length): Add processing for values of negative one to fit within the current scheme. From-SVN: r274774
Justin Squirek committed -
Synchronizes extern(C) bindings with latest release. Reviewed-on: https://github.com/dlang/druntime/pull/2741 libphobos/ChangeLog: * libdruntime/Makefile.am (DRUNTIME_DSOURCES_BIONIC): Add core/sys/bionic/string.d. (DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/string.d. (DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/string.d, core/sys/dragonflybsd/sys/socket.d. (DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/string.d. (DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/string.d. (DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/string.d, core/sys/netbsd/sys/featuretest.d. * libdruntime/Makefile.in: Regenerate. From-SVN: r274773
Iain Buclaw committed -
Adds extern(C) bindings for version OpenBSD. Reviewed-on: https://github.com/dlang/druntime/pull/2748 libphobos/ChangeLog: * libdruntime/Makefile.am (DRUNTIME_DSOURCES_OPENBSD): Add core/sys/openbsd/sys/cdefs.d, core/sys/openbsd/sys/elf.d, core/sys/openbsd/sys/elf32.d, core/sys/openbsd/sys/elf64.d, core/sys/openbsd/sys/elf_common.d, core/sys/openbsd/sys/link_elf.d, core/sys/openbsd/sys/mman.d, core/sys/openbsd/time.d. * libdruntime/Makefile.in: Regenerate. From-SVN: r274772
Iain Buclaw committed -
PR d/91339 d/dmd: Merge upstream dmd b37a537d3 Fixes the error: cannot find source code for runtime library file 'object.d' when the path contains '~'. Reviewed-on: https://github.com/dlang/dmd/pull/10309 From-SVN: r274771
Iain Buclaw committed -
Finishes off phobos support for musl targets. Reviewed-on: https://github.com/dlang/phobos/pull/7108 From-SVN: r274770
Iain Buclaw committed -
gcc/d/ChangeLog: PR d/88722 * modules.cc: Include diagnostic.h. (register_moduleinfo): Use sorry instead of gcc_assert for targets without named sections. From-SVN: r274769
Iain Buclaw committed -
Don't crash when compiling for 16-bit platforms. Reviewed-on: https://github.com/dlang/dmd/pull/10306 gcc/d/ChangeLog: * d-target.cc: Include diagnostic.h. (Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if the target pointer size is 2. Add sorry if the pointer size is not either 2, 4, or 8. From-SVN: r274768
Iain Buclaw committed -
gcc/d/ChangeLog: PR d/90446 * d-lang.cc (d_type_for_mode): Check for all internal __intN types. (d_type_for_size): Likewise. From-SVN: r274767
Iain Buclaw committed -
gcc/d/ChangeLog: PR d/90445 * d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting uintmax_type_node. Set signed_size_type_node as the signed_type_for size_type_node. From-SVN: r274766
Iain Buclaw committed -
gcc/d/ChangeLog: PR d/90444 * d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE nodes as well, push all fields to the struct members. (d_build_builtins_module): Push anonymous va_list structs to the builtins module, naming them __builtin_va_list. (d_init_builtins): Use sorry instead of gcc_unreachable if va_list did not succeed in being represented as a D type. From-SVN: r274765
Iain Buclaw committed -
re PR testsuite/91458 (FAIL: g++.dg/tree-ssa/pr19807.C -std=gnu++98 scan-tree-dump-times optimized "&MEM\\\\[\\\\(void .\\\\)&a \\\\+ 8B\\\\]" 3) PR testsuite/91458 gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/ssa-dse-1.C: Use the same search pattern unconditionally (correcting r272199, PR middle-end/90676). * gcc.dg/tree-prof/stringop-2.c: Same. From-SVN: r274764
Martin Sebor committed -
From-SVN: r274763
GCC Administrator committed
-
- 20 Aug, 2019 25 commits
-
-
* doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers. From-SVN: r274758
Jonathan Wakely committed -
* include/std/numeric (reduce): Fix Doxygen markup. From-SVN: r274757
Jonathan Wakely committed -
The x86 attributes such as ms_abi, stdcall, fastcall etc. alter the function type, which means that functions with one of those attributes do not match any of the partial specializations of std::is_function. Rather than duplicating the list for every calling convention, use a much simpler definition of std::is_function. Also redefine __is_referenceable to not rely on partial specializations for each type of referenceable function. PR libstdc++/91371 * include/std/type_traits (is_function): Simplify definition. Remove partial specializations for function types. (__is_referenceable): Simplify definition. * testsuite/20_util/bind/91371.cc: New test. * testsuite/20_util/is_function/91371.cc: New test. * testsuite/20_util/is_function/value.cc: Check more pointer types. * testsuite/20_util/is_member_function_pointer/91371.cc: New test. * testsuite/20_util/is_object/91371.cc: New test. From-SVN: r274756
Jonathan Wakely committed -
Shifting by signed types is a new language feature in Go 1.13. This requires a patch to the testsuite. Updates golang/go#19113 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190977 * go.test/test/fixedbugs/bug073.go: Update for language changes. From-SVN: r274755
Ian Lance Taylor committed -
2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de> * function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==. From-SVN: r274751
Bernd Edlinger committed -
tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to catch more redundant zero initialization cases. 2019-08-19 Matthew Beliveau <mbelivea@redhat.com> * tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to catch more redundant zero initialization cases. (dse_dom_walker::dse_optimize_stmt): Likewise. From-SVN: r274749
Matthew Beliveau committed -
2019-08-20 Richard Biener <rguenther@suse.de> PR lto/91307 * ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable by collect2 when targetm.have_ctors_dtors which avoids dragging in temporary filenames from LTO input objects. From-SVN: r274748
Richard Biener committed -
2019-08-20 Richard Biener <rguenther@suse.de> PR tree-optimization/37242 * tree-ssa-sccvn.c (visit_nary_op): Also CSE (T)(a + b) to (T)a + (T)b if we know that a + b does not overflow. * gcc.dg/tree-ssa/ssa-fre-80.c: New testcase. From-SVN: r274746
Richard Biener committed -
Add notes to DIM, MOD and MODULE stating that as a GNU extension, integers of different kinds are allowed as arguments and that the return value has the larger kind. From-SVN: r274744
Mark Eggleston committed -
This affects only LLVM-based compilation. 2019-08-20 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take inlining (-gnatn) into account. From-SVN: r274743
Arnaud Charlet committed -
This patch fixes a crash on an aspect specification for Storage_Size for a type T when the expression for the aspect depends on attributes of a previously declared type that is not frozen yet. The temporary declaration that captures the value of the aspect must be part of the actions attached to the freeze node for T. 2019-08-20 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case Storage_Size): If the expression for Storage_Size is not static it may depend on characterstics of another type that may bot be frozen yet, so the elaboration of the expression for the aspect must be attached directly to the freeze actions of the type to which it applies. gcc/testsuite/ * gnat.dg/storage_size1.adb: New testcase. From-SVN: r274742
Ed Schonberg committed -
Routine Build_DIC_Procedure_Declaration appears to be heavily inspired by Build_Invariant_Procedure_Declaration; they both wrap an expression attached to a type inside an internal procedure. Initially none of them were calling Set_Last_Entity. For Build_Invariant_Procedure_Declaration this was fixed previously. For Build_DIC_Procedure_Declaration this is fixed here. The issue affects the GNATprove tool and is not visible to end users of the GNAT compiler. No simple test is available because this would require a debug session. 2019-08-20 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last entity of the generated Default_Initial_Condition procedure in order to construct a proper entity chain. From-SVN: r274741
Piotr Trojanek committed -
The special expansion done in GNATprove mode should be adapted to slices where the prefix has access type, like indexed expressions. There is no impact on compilation. 2019-08-20 Yannick Moy <moy@adacore.com> gcc/ada/ * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component): Renaming of function to apply to slices as well. (Expand_SPARK): Expand prefix of slices of access type. From-SVN: r274740
Yannick Moy committed -
The generated code has been improved so that aggregates with <> are more efficient. No change in behavior; no test. 2019-08-20 Bob Duff <duff@adacore.com> gcc/ada/ * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in the nonlimited case in STEP 4. This improves the efficiency of things like (1 .. 1000 => <>). We still generate some code for that, unfortunately, but it is much improved. (Aggr_Assignment_OK_For_Backend): Return false if <> components are present. From-SVN: r274739
Bob Duff committed -
The compiler now generates faster code for functions that return discriminated types in many cases where the size is known at compile time. 2019-08-20 Bob Duff <duff@adacore.com> gcc/ada/ * exp_ch6.adb (Needs_BIP_Alloc_Form): Call Requires_Transient_Scope rather than checking constrainedness and so forth. We have previously improved Requires_Transient_Scope to return False in various cases, notably a limited record with an access discriminant. This change takes advantage of that to avoid using the secondary stack for functions returning such types. (Make_Build_In_Place_Call_In_Allocator): Be consistent by calling Needs_BIP_Alloc_Form rather than Is_Constrained and so forth. * sem_ch4.adb (Analyze_Allocator): The above change causes the compiler to generate code that is not legal Ada, in particular an uninitialized allocator for indefinite subtype. This is harmless, so we suppress the error message in this case. From-SVN: r274738
Bob Duff committed -
2019-08-20 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb, doc/gnat_rm/implementation_defined_pragmas.rst, doc/gnat_ugn/building_executable_programs_with_gnat.rst, einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb, exp_disp.adb, inline.adb, libgnat/a-locale.ads, libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb, sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb, sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and and rewordings. From-SVN: r274737
Gary Dismukes committed -
The modification to round time up to even second was added decades ago. It was done to avoid unneeded recompilations when the project was built on non-FAT filesystems and then moved to FAT filesystems. Such a situation is now very rare and does not deserve time distortion. 2019-08-20 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up to even second. From-SVN: r274736
Dmitriy Anisimkov committed -
No change in behavior for GCC-based compilations. 2019-08-20 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): If actual type is private and distinct from nominal type in declaration, propagate flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view of private type. From-SVN: r274735
Ed Schonberg committed -
When expanding a loop entry attribute for a while_loop we construct a function that incorporates the expanded condition of the loop. The itypes that may be generated in that expansion must carry the scope of the constructed function for proper handling in the backend. 2019-08-20 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a loop entry attribute for a while_loop we construct a function that incorporates the expanded condition of the loop. The itypes that may be generated in that expansion must carry the scope of the constructed function for proper handling in gigi. gcc/testsuite/ * gnat.dg/loop_entry2.adb: New testcase. From-SVN: r274734
Ed Schonberg committed -
This patch fixes a spurious visibility error on a dispatching call to a subprogram with a classwide precondition, when the call qppears in the same declarative part as the subprogram declaration itself. 2019-08-20 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a dispatching call tp a subprogram with a class-wide precondition occurrs in the same declarative part as the ancestor subprogram being called, the`expression for the precondition has not been analyzed yet. Such a call may appear, e.g. in an expression function. In that case, the replacement of formals by actuals in the call cannot use the formal entities of the subprogram being called, and the occurrence of the formals in the expression must be located by name (Chars fields) as would be done at a later freeze point, when the expression is resolved in the context of the subprogram itself. gcc/testsuite/ * gnat.dg/tagged5.adb, gnat.dg/tagged5.ads: New testcase. From-SVN: r274733
Ed Schonberg committed -
If a variable has pragma Persistent_BSS, the compiler now automatically suppresses implicit initializations caused by Initialize_Scalars and Normalize_Scalars. Variables with Persistent_BSS cannot be initialized, and previously a pragma Suppress_Initialization was required before the pragma Persistent_BSS. 2019-08-20 Bob Duff <duff@adacore.com> gcc/ada/ * sem_prag.adb (Persistent_BSS): If an initialization is present because of Initialize_Scalars or Normalize_Scalars, generate an implicit pragma Suppress_Initialization to remove that, because initialization is not allowed for these variables. Other initializations remain illegal. From-SVN: r274732
Bob Duff committed -
It's illegal to call a function with a result of an immutably limited type inside a type conversion that's used in one of the special contexts that allow such a function call by itself (see RM 7.5 (2.1-2.10)), such as in the initialization expression of an object declaration. The compiler was recursively applying OK_For_Limited_Init_In_05 to the expression inside of a rewritten type conversion, rather than directly to the Original_Node itself (which is what was cased on to get to the type conversion case alternative), which allowed such illegal initialization, and that's corrected by this fix. However, when the expression is not a rewriting of a user-written conversion, the recursive call to OK_For_Limited_Init_In_05 must be applied to the Expression of the conversion. 2019-08-20 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type conversions, apply the recursive call to the Original_Node of the expression Exp rather than the Expression of the Original_Node, in the case where Exp has been rewritten; otherwise, when Original_Node is the same as Exp, apply the recursive call to the Expression. (Check_Initialization): Revise condition for special check on type conversions of limited function calls to test Original_Node (avoiding spurious errors on expanded unchecked conversions applied to build-in-place dispatching calls). gcc/testsuite/ * gnat.dg/type_conv2.adb, gnat.dg/type_conv2.ads: New testcase. From-SVN: r274731
Gary Dismukes committed -
Where possible GNAT will store the binary representation of a record aggregate in memory for space and performance reasons. This configuration pragma changes this behaviour so that record aggregates are instead always converted into individual assignment statements. The following package pack.ads: -- pack.ads pragma Aggregate_Individually_Assign; pragma Restrictions (No_Multiple_Elaboration); package Pack is type A_Rec is record A, B, C, D : Boolean; end record; A : A_Rec := (True, False, True, True); end Pack; when compiled with gcc -c -gnatdg pack.ads should produce the following output: Source recreated from tree for Pack (spec) ------------------------------------------ pragma aggregate_individually_assign; pragma restrictions (no_multiple_elaboration); package pack is type pack__a_rec is record a : boolean; b : boolean; c : boolean; d : boolean; end record; freeze pack__a_rec [ procedure pack__a_recIP (_init : out pack__a_rec) is begin %push_constraint_error_label () %push_program_error_label () %push_storage_error_label () null; %pop_constraint_error_label %pop_program_error_label %pop_storage_error_label return; end pack__a_recIP; ] pack__a : pack__a_rec := ( a => true, b => false, c => true, d => true); pack__a.a := true; pack__a.b := false; pack__a.c := true; pack__a.d := true; null; end pack; 2019-08-20 Patrick Bernardi <bernardi@adacore.com> gcc/ada/ * exp_aggr.adb (Expand_Record_Aggregate): Always convert a record Aggregate to assignment statements if the option Aggregate_Individually_Assign is set. * opt.ads (Aggregate_Individually_Assign): New option. * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign. * sem_prag.adb (Analyze_Pragma): Likewise. * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and Name_Aggregate_Individually_Assign. * doc/gnat_rm/implementation_defined_pragmas.rst: Document pragma Aggregate_Individually_Assign. * gnat_rm.texi: Regenerate. From-SVN: r274730
Patrick Bernardi committed -
If the delta_aggregate feature is used, the -gnat2020 or -gnatX switch must be given. The following test must get an error if neither -gnat2020 nor -gnatX is specified: gcc -c delta_aggregate.ads -gnat2012 delta_aggregate.ads:4:18: delta_aggregate is an Ada 202x feature delta_aggregate.ads:4:18: compile with -gnatX package Delta_Aggregate is X : String := "Hello"; Y : String := (X with delta 1 => 'h'); end Delta_Aggregate; 2019-08-20 Bob Duff <duff@adacore.com> gcc/ada/ * par-ch4.adb: Minor wording change in error messages. * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada versions prior to Ada 2020. From-SVN: r274729
Bob Duff committed -
This patch makes the temp for initialization of an atomic variable be constant. No change in behavior; no test. 2019-08-20 Bob Duff <duff@adacore.com> gcc/ada/ * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for initialization of the atomic variable be constant. This is cleaner, and might improve efficiency. From-SVN: r274728
Bob Duff committed
-