This fixes a fallout of a recent change clearing the
Is_Generic_Actual_Type on the implicit full view of a private actual
type in an instance. This flag is used to help disambiguating formal
types instantiated on the same actual type within an instance, but it
should be cleared outside the instance to let the usual disambiguation
rules apply again to these types outside the instance.
This in particular means that Exp_Dist cannot rely on it to detect
subtypes representing generic actual types, hence the need for the new
predicate.
2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_dist.adb (Is_Generic_Actual_Subtype): New predicate.
(Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
Use it instead of Is_Generic_Actual_Type flag to detect subtypes
representing generic actual types.
From-SVN: r274650
This patch modifies the handling of warnings on unused formal parameters
of generic subprograms. Previously such warnings were placed on the
formal appearing in the subprogram declaration, in contrast with
warnings on non-generic subprograms, where the warning is placed on the
corresponding entity in the body of the subprogram. This patch makes the
handling of both cases uniform. It is preferable to place the warning in
the body because this also provides a better suggestion for the
placement of an Unreferenced pragma to suppress the warning when desired.
2019-08-19 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_warn.adb (Check_References, Generic_Body_Formal): When a
formal parameter of a generic subprogram is not referenced in
the body, place the corresponding warning on the corresponding
entity in the specification of the generic body, as is done for
non-generic subprograms.
gcc/testsuite/
* gnat.dg/warn28.adb, gnat.dg/warn28.ads: New testcase.
From-SVN: r274649
Use a constant for the Size_Too_Small_Message, so if it changes, it
won't change in one place but not another. DRY. It might be better to
move this code out of errout.adb, but that's for another day.
2019-08-19 Bob Duff <duff@adacore.com>
gcc/ada/
* errout.ads (Size_Too_Small_Message): New constant.
* errout.adb, freeze.adb, sem_ch13.adb: Use it.
From-SVN: r274648
This fixes a fallout of the recent change keeping the
Is_Generic_Instance flag on the wrapper package built for the
instantiation of a generic subprogram.
There is no need to visit the Instance_Spec of an
N_Subprogram_Instantiation node anymore because the regular processing
for an N_Package_Declaration node now does the job for instantiations of
generic subprograms.
The following subprogram must compile again quietly with -gnatzc:
with Gen_Proc;
package RCI is
pragma Remote_Call_Interface;
procedure Inst_Proc is new Gen_Proc;
procedure P (S : String);
end RCI;
generic
procedure Gen_Proc (S : String);
pragma Remote_Call_Interface (Gen_Proc);
with Ada.Text_IO; use Ada.Text_IO;
procedure Gen_Proc (S : String) is
begin
Put_Line ("Gen_Proc called: " & S);
end Gen_Proc;
2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_dist.adb (Build_Package_Stubs): Do not specifically visit
the declarations of an N_Subprogram_Instantiation node.
From-SVN: r274647
No impact on regular compilation.
2019-08-19 Claire Dross <dross@adacore.com>
gcc/ada/
* sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New
parameter of the generic. Function used to decide whether a
function is a pledge function.
(Check_Not_Borrowed): Disable check inside the second parameter
of a pledge function for the path borrowed by the first
parameter. Also disable checks for entities inside a Global
contract.
From-SVN: r274644
This patch adds a formal function parameter "=" (L, R : Element_Type) to
SPARK containers. The equality that is used by default for Element_Type
after this patch is the primitive equality and not the predefined any
more. It also allows to use any function with the appropriate signature
for the equality function.
2019-08-19 Joffrey Huguet <huguet@adacore.com>
gcc/ada/
* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
libgnat/a-cfinve.ads, libgnat/a-cforma.ads,
libgnat/a-cofove.ads, libgnat/a-cofuma.ads,
libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R :
Element_Type) to the generic packages.
From-SVN: r274643
This patch fixes an old-standing problem with premature freezing. When a
derived type declaration includes a constraint, we generate a subtype
declaration of an anonymous base type, with the constraint given in the
original type declaration, Conceptually, the bounds are converted to the
new base type, and this conversion freezes (prematurely) that base type,
when the bounds are simply literals. As a result, a representation
clause for the derived type is then rejected or ignared. This procedure
recognizes the simple case of literal bounds in derived enumeration type
declarations, which allows us to indicate that the conversions are not
freeze points, and the subsequent representation clause can be accepted.
2019-08-19 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous
base type if the bounds in the derived type declaration are
literals of the type.
gcc/testsuite/
* gnat.dg/rep_clause9.adb: New testcase.
From-SVN: r274641
When code is inlinined for proof in the special mode for GNATprove, Ada
rules about non-aliasing should still be checked. Now fixed.
There is no impact on compilation.
2019-08-19 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Call): Check non-aliasing rules before
GNATprove inlining.
From-SVN: r274640
This gets rid of a small issue in the inlining machinery: under very
peculiar circumstances, it would add a pending instantiation for the
body of a generic package at the point of call to an inlined subprogram
of the instance. That's theoritically problematic because the saved
context is that of the call and not that of the instance in this case,
although the strict conditions ensure that this doesn't make a real
difference in practice.
Now that the machinery can perform the pending instantiations on demand,
we can optimistically add more of them when the instantiations are
analyzed and thus remove the problematic handling at the point of call.
No functional changes.
2019-08-19 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* inline.adb (Add_Inlined_Body): Do not add pending
instantiations.
* sem_ch12.adb (Needs_Body_Instantiated): New predicate.
(Analyze_Package_Instantiation): Use it to decide whether to add
a pending instantiation for the body of the package.
From-SVN: r274639
This fixes a glitch introduced during the initial OpenACC work import
process, causing crashes on any Acc_Parallel + Acc_Loop combination.
2019-08-19 Olivier Hainque <hainque@adacore.com>
gcc/ada/
* gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc
BIND_EXPR node we have constructed on purpose. Remove unused
variable.
gcc/testsuite/
* gnat.dg/openacc1.adb: New testcase.
From-SVN: r274638
- -fsanitize=kernel-address will call targetm.asan_shadow_offset ()
at asan_shadow_offset, so it will crash if TARGET_ASAN_SHADOW_OFFSET
is not implemented, that's mean -fsanitize=kernel-address is not
supported for target without TARGET_ASAN_SHADOW_OFFSET implementation.
gcc/ChangeLog:
PR target/91441
* toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is
implemented for -fsanitize=kernel-address, and merge check logic
with -fsanitize=address.
testsuite/ChangeLog:
PR target/91441
* gcc.target/riscv/pr91441.c: New.
From-SVN: r274631
2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91485
module.c (gfc_match_use): User defined operator cannot conflict with
a rename symbol.
2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91485
* gfortran.dg/pr91485.f90: New test.
From-SVN: r274630
There is no reasonable chance that the SDKs in question will be re-
issued, so the only viable solution is a fixincludes.
2019-08-18 C.G. Dogan <gcc+cgdogan.00@gmail.com>
Iain Sandoe <iain@sandoe.co.uk>
PR target/83531
* inclhack.def (darwin_api_availability): New, strip leading
underscores from API_XXXX defines.
* fixincl.x: Regenerate.
* tests/base/os/availability.h: New file.
Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
From-SVN: r274624
This test needs the cpu and machine asserts to be implemented
which hadn't been done for PPC Darwin. Fixed thus.
gcc/
2019-08-18 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
for cpu and machine. Factor 64/32b builtins.
From-SVN: r274623
When a defer is executed at most once in a function body,
we can allocate the defer record for it on the stack instead
of on the heap.
This should make defers like this (which are very common) faster.
This is a port of CL 171758 from the gc repo.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190410
From-SVN: r274613
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78739
* match.c (gfc_match_st_function): When matching a statement function,
need to check if the statement function name shadows the function
name.
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78739
* fortran.dg/pr78739.f90: New test.
From-SVN: r274605
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78719
* decl.c (get_proc_name): Check for a CLASS entity when trying to
add attributes to an entity that already has an explicit interface.
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78719
* gfortran.dg/pr78719_1.f90: New test.
* gfortran.dg/pr78719_2.f90: Ditto.
* gfortran.dg/pr78719_3.f90: Ditto.
From-SVN: r274604
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91471
* primary.c (gfc_variable_attr): Remove a gfc_internal_error(),
which cannot be reached by conforming Fortran code, but seems to
be reachable from nonconforming Fortran code. Treat the AR_UNKNOWN
case as a no-op.
2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91471
* gfortran.dg/pr91471.f90: New test.
From-SVN: r274603
2019-08-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/91473
* testsuite/libgomp.fortran/appendix-a/a.28.5.f90: Add
-std=legacy so invalid code in the test case is accepted.
From-SVN: r274602
Improve the error message that is printed when a memory allocation
fails, by including the location, and the size of the allocation that
failed.
Regtested on x86_64-pc-linux-gnu.
gcc/fortran/ChangeLog:
2019-08-17 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/68401
* trans-decl.c (gfc_build_builtin_function_decls): Replace
os_error with os_error_at decl.
* trans.c (trans_runtime_error_vararg): Modify so the error
function decl is passed directly.
(gfc_trans_runtime_error): Pass correct error function decl.
(gfc_trans_runtime_check): Likewise.
(trans_os_error_at): New function.
(gfc_call_malloc): Use trans_os_error_at.
(gfc_allocate_using_malloc): Likewise.
(gfc_call_realloc): Likewise.
* trans.h (gfor_fndecl_os_error): Replace with gfor_fndecl_os_error_at.
libgfortran/ChangeLog:
2019-08-17 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/68401
* gfortran.map: Add GFORTRAN_10 node, add _gfortran_os_error_at
symbol.
* libgfortran.h (os_error_at): New prototype.
* runtime/error.c (os_error_at): New function.
From-SVN: r274599
In gccgo, we insert the write barriers in the frontend, and so we
cannot completely prevent write barriers on stack writes. So it
is possible for a bad pointer appearing in the write barrier
buffer. When flushing the write barrier, treat it the same as
sacnning the stack. In particular, don't mark a pointer if it
does not point to an allocated object. We already have similar
logic in greyobject. With this, hopefully, we can prevent an
unallocated object from being marked completely.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190599
From-SVN: r274598
The gc compiler recognizes the type runtime.hex and prints values
in this type as hex. Do the same here. This makes debugging
runtime crashes slightly better.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190597
From-SVN: r274591
* config/i386/mmx.md (mmxdoublemode): New mode attribute.
(mmx_uavg<mode>3): Macroize expaner from mmx_uavgv8qi3 and
mmx_uavgv4hi3 using MMXMODE12 mode iterator.
(uavg<mode>3_ceil): New expander.
* config/i386/sse.md (uavg<mode>3_ceil): Use ssedoublemode
mode iterator when creating CONST1_RTX.
(<sse2_avx2>_uavg<mode>3<mask_name>): Ditto.
(*<sse2_avx2>_uavg<mode>3<mask_name>): Use ssedoublemode
mode iterator for const1_operand predicate.
From-SVN: r274572
If a variable with an automatic attribute appears in an
equivalence statement the storage should be allocated on the
stack.
Note: most of this patch was provided by Jeff Law <law@redhat.com>.
From-SVN: r274565
I'm trying to add a define_subst use in the arm backend but am getting many build errors complaining about:
`set_attr_alternative' is unsupported by `define_subst'
Looking at the gensupport.c code it iterates over all define_insns and errors if any of them have set_attr_alternative.
The usecase I'm targetting doesn't involve patterns with set_attr_alternative, so I would like to make the define_subst handling
more robust to only error out if the define_subst is actually attempted on a set_attr_alternative.
This patch produces the error only if the set_attr_alternative attr matches the subst name.
This allows a build of the arm backend with a define_subst usage to succeed.
PR other/91255
* gensupport.c (has_subst_attribute): Error out on set_attr_alternative
only if subst_name matches curr_attr string.
From-SVN: r274564