Age | Commit message (Collapse) | Author | Files | Lines |
|
gcc/ada/
* ghost.adb (Whole_Object_Ref): New function to compute the name
of the whole object.
(Mark_And_Set_Ghost_Assignment): Rewrite to use
Whole_Object_Ref. We need to partly analyze the left-hand side
in order to distinguish expanded names and record components.
* lib-xref.ads, lib-xref.adb (Deferred_References): Move table
to body, and add Defer_Reference to update the table, avoiding
duplicates.
(Generate_Reference): Avoid duplicates.
* sem_ch8.ads, sem_ch8.adb (Find_Direct_Name): Remove _OK
parameters, which are no longer needed. Ignore errors in
Ignore_Errors mode.
* sem_util.ads, sem_util.adb (Preanalyze_Without_Errors): Make
this public, so we can call it from Ghost.
* errout.ads, scng.adb, sem_prag.adb: Minor.
|
|
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference): Check if type
depends on discriminant.
|
|
gcc/ada/
* libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call
Iterate.
|
|
gcc/ada/
* sem_aggr.adb (Resolve_Record_Aggregate): Properly apply
subtype constraints when using a Default_Value.
* freeze.adb: Fix typo.
|
|
gcc/ada/
* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix bug
where a call to Error_Msg_N leads to crash due to
Error_Msg_Name_1 being removed by the call, while a subsequent
call to Error_Msg_N tries to use it. The variable
Error_Msg_Name_1 should be restored prior to the next call. Also
add checking for the new rules.
|
|
gcc/ada/
* checks.adb (Apply_Type_Conversion_Checks): Minor code clean
up.
* exp_ch4.adb (Discrete_Range_Check): Optimize range checks.
Update comments.
(Expand_N_Type_Conversion): Generate range check when rewriting
a type conversion if needed. Add assertion.
* exp_ch6.adb (Expand_Simple_Function_Return): Minor code clean
up.
* sem_res.adb (Resolve_Type_Conversion): Apply range check when
needed. Update comments.
|
|
gcc/ada/
* libgnat/a-textio.ads: Update top-level comment.
|
|
gcc/ada/
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
|
|
gcc/ada/
* exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy
types.
|
|
gcc/ada/
* errout.ads: Add comment regarding lack of preservation of
Errout state across successive calls to the API.
|
|
gcc/ada/
* exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the
base type to recognize various cases of access types.
* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb,
libgnat/a-cbhama.ads, libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads, libgnat/a-cborma.adb,
libgnat/a-cborma.ads, libgnat/a-cborse.adb, libgnat/a-cborse.ads,
libgnat/a-cdlili.adb, libgnat/a-cdlili.ads, libgnat/a-cidlli.adb,
libgnat/a-cidlli.ads, libgnat/a-cihama.adb, libgnat/a-cihama.ads,
libgnat/a-cihase.adb, libgnat/a-cihase.ads, libgnat/a-cimutr.adb,
libgnat/a-cimutr.ads, libgnat/a-ciorma.adb, libgnat/a-ciorma.ads,
libgnat/a-ciormu.adb, libgnat/a-ciormu.ads, libgnat/a-ciorse.adb,
libgnat/a-ciorse.ads, libgnat/a-coboho.adb, libgnat/a-coboho.ads,
libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-cohama.adb,
libgnat/a-cohama.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads,
libgnat/a-coinho.adb, libgnat/a-coinho.ads,
libgnat/a-coinho__shared.adb, libgnat/a-coinho__shared.ads,
libgnat/a-coinve.adb, libgnat/a-coinve.ads, libgnat/a-comutr.adb,
libgnat/a-comutr.ads, libgnat/a-coorma.adb, libgnat/a-coorma.ads,
libgnat/a-coormu.adb, libgnat/a-coormu.ads, libgnat/a-coorse.adb,
libgnat/a-coorse.ads, libgnat/a-strunb.adb, libgnat/a-strunb.ads,
libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads:
Implement Put_Image attibute.
* libgnat/a-stteou.ads, libgnat/s-putima.ads,
libgnat/a-stouut.ads, libgnat/a-stoubu.adb: Make
Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
System.Put_Images Pure, so they can be with'ed by Pure units
that should have Put_Image defined.
* libgnat/a-stouut.adb: Add missing column adjustments, and
remove a redundant one.
* libgnat/s-putima.adb (Put_Arrow): New routine to print an
arrow. Avoids adding a with clause to some containers.
|
|
gcc/ada/
* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Require matching
parens or brackets.
* par.adb, par-tchk.adb (T_Right_Bracket): New procedure to give
an error on missing ].
|
|
gcc/ada/
* sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
of the Entity attribute in constants associated with
discriminals of protected types.
|
|
gcc/ada/
* sem_disp.adb (Check_Dispatching_Context): When the enclosing
subprogram is abstract, bypass early return if the call is
tag-indeterminate, to continue with the later error checking.
|
|
gcc/ada/
* sem_ch7.adb (Uninstall_Declarations): Uninstall the
declaration of a subtype declaration defined in the private part
of a package.
|
|
gcc/ada/
* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify code since
we are always under -gnatX if we encounter a Tok_Left_Bracket.
* scng.adb (Scan): [] is an aggregate under -gnatX and a wide
character otherwise.
|
|
gcc/ada/
* exp_ch6.adb (Expand_Call_Helper): Cleanup.
|
|
gcc/ada/
* exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
Entity_Id.
|
|
gcc/ada/
* exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
and unary ones.
|
|
gcc/ada/
* inline.adb (Expand_Inlined_Call): Simplify repeated calls to
Nkind.
|
|
If the shift amount in operator_lshift::op1_range was zero, an invalid range
of [1, 0] was being created.
gcc/ChangeLog:
PR tree-optimization/97467
* range-op.cc (operator_lshift::op1_range): Handle shifts by 0.
gcc/testsuite/ChangeLog:
* gcc.dg/pr97467.c: New test.
|
|
This removes an assertion that was supposed to be only for temporary
debugging. I've also re-indented the code which I missed as well.
2020-10-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/97466
* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
spurious assert, re-indent.
|
|
This patch fixes PR66552 which is also as:
https://gcc.gnu.org/pipermail/gcc-patches/2020-February/540930.html
which requests to optimizes (x shift (n mod C)) to
(x shift (n bit_and (C - 1))) when C is a constant and power of two.
gcc/ChangeLog
2020-10-19 Li Jia He <helijia@gcc.gnu.org>
PR tree-optimization/66552
* match.pd (x << (n % C) -> x << (n & C-1)): New simplification.
gcc/testsuite/ChangeLog
2020-10-19 Li Jia He <helijia@gcc.gnu.org>
PR tree-optimization/66552
* gcc.dg/pr66552.c: New testcase.
|
|
There's an old extra allowance for same-mode pointer comparison
for which I don't see any good reason today where the only special-case
of pointers in useless_type_conversion_p is that of function/method
pointers vs. non-function/method pointers.
2020-10-19 Richard Biener <rguenther@suse.de>
* tree-cfg.c (verify_gimple_comparison): Drop special-case
for pointer comparison.
|
|
libsanitizer/ChangeLog:
* LOCAL_PATCHES: Add one commit.
|
|
|
|
Instead of mapping elementary functions for all types to a single
type, use the intrinsics available for the various base types.
A new Ada.Numerics.Aux_Generic_Float is introduced to explicitly
dispatch, based on the 'Digits attribute of the base type, to the
various newly-added Aux_Short_Float, Aux_Float, Aux_Long_Float, or
Aux_Long_Long_Float.
The Aux_Short_Float unit is implemented in terms of the Aux_Float one,
and the others rely on the elementary functions from the C Math
library for float, double and long double types, respectively.
An Aux_Linker_Options is added, and units that import intrinsics from
libm/libc depend on it to provide the "-lm" linker option if needed.
The option is provided by default, but there is an alternate version
that doesn't, that is used for vxworks targets.
The Aux variant that used to open-code Sin and Cos for the ancient
ppc-darwin, because of insufficient precision in libc, is dropped,
along with the alternate dummy body for Aux. Both are presumed no
longer needed.
The original Ada.Numerics.Aux is retained, for backward compatibility,
as a wrapper for a newly-added Aux_Compat, that renames
Aux_Long_Float, except on x86, in which an alternate version renames
Aux_Long_Long_Float.
Generic_Elementary_Functions and Generic_Complex_Types are adjusted to
use Aux_Generic_Float, avoiding the type conversions and inefficiencies of
computing results in higher precision than requested.
Generic_Complex_Elementary_Functions is adjusted to enable an
additional instance of the sincos optimization, even without -gnatn.
for gcc/ada/ChangeLog
* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Compile Ada.Numerics
child units Aux_Generic_Float, Aux_Long_Long_Float, Aux_Long_Float,
Aux_Float, Aux_Short_Float, Aux_Compat, and Aux_Linker_Options.
(X86_TARGET_PAIRS): Drop dummy body for Aux. Use x86 version
of Aux_Compat.
(X86_64_TARGET_PAIRS): Likewise.
(LIBGNAT_TARGET_PAIRS): On VxWorks, select the nolibm
variants. Drop the darwin version of Aux. Drop the redundant
libc-x86 numaux variants on x86* kfreebsd variants.
* libgnat/a-nagefl.ads: New Aux_Generic_Float.
* libgnat/a-naliop.ads: New Aux_Linker_Options.
* libgnat/a-naliop__nolibm.ads: New.
* libgnat/a-nallfl.ads: New Aux_Long_Long_Float.
* libgnat/a-nalofl.ads: New Aux_Long_Float.
* libgnat/a-nuaufl.ads: New Aux_Float.
* libgnat/a-nashfl.ads: New Aux_Short_Float.
* libgnat/a-ngcefu.adb (Exp): Factor out the Im (X) passed to
Sin and Cos in the Complex variant too.
* libgnat/a-ngcoty.adb: Switch to Aux_Generic_Float. Drop
redundant conversions.
* libgnat/a-ngelfu.adb: Likewise.
* libgnat/a-nuauco.ads: New Aux_Compat.
* libgnat/a-nuauco__x86.ads: New.
* libgnat/a-numaux.ads: Replace with Compat wrapper.
* libgnat/a-numaux__darwin.adb: Remove.
* libgnat/a-numaux__darwin.ads: Remove.
* libgnat/a-numaux__dummy.adb: Remove.
* libgnat/a-numaux__libc-x86.ads: Remove.
* libgnat/a-numaux__vxworks.ads: Remove.
|
|
The latest upstream merge for libsanitizer introduces code that makes
use of some macro values that are not available in SDKs for versions
of Darwin <= 15 (macOS 10.11).
Add definitions for these where they are not present.
libsanitizer/ChangeLog:
* sanitizer_common/sanitizer_mac.h: Ensure that TARGET_OS_
macros are defined where the macOS SDK does not contain
them.
(TARGET_OS_OSX, TARGET_OS_IOS, TARGET_OS_TV, TARGET_OS_WATCH):
Define where needed.
|
|
The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array
when a negative stride was used for addressing the elements of the rank-1
array, because a check on strides was erroneously placed before the check
on the rank. Interchange order of checks.
libgfortran/ChangeLog:
* m4/matmul_internal.m4: Move check for rank-1 times rank-2 before
checks on strides for rank-2 times rank-2.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Likewise.
* generated/matmul_c4.c: Likewise.
* generated/matmul_c8.c: Likewise.
* generated/matmul_i1.c: Likewise.
* generated/matmul_i16.c: Likewise.
* generated/matmul_i2.c: Likewise.
* generated/matmul_i4.c: Likewise.
* generated/matmul_i8.c: Likewise.
* generated/matmul_r10.c: Likewise.
* generated/matmul_r16.c: Likewise.
* generated/matmul_r4.c: Likewise.
* generated/matmul_r8.c: Likewise.
* generated/matmulavx128_c10.c: Likewise.
* generated/matmulavx128_c16.c: Likewise.
* generated/matmulavx128_c4.c: Likewise.
* generated/matmulavx128_c8.c: Likewise.
* generated/matmulavx128_i1.c: Likewise.
* generated/matmulavx128_i16.c: Likewise.
* generated/matmulavx128_i2.c: Likewise.
* generated/matmulavx128_i4.c: Likewise.
* generated/matmulavx128_i8.c: Likewise.
* generated/matmulavx128_r10.c: Likewise.
* generated/matmulavx128_r16.c: Likewise.
* generated/matmulavx128_r4.c: Likewise.
* generated/matmulavx128_r8.c: Likewise.
gcc/testsuite/ChangeLog:
* gfortran.dg/matmul_20.f90: New test.
|
|
|
|
This patch removes unnnecessary or simplifies requirements for various
Power9 testcase.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/p9-dimode1.c: Remove target.
* gcc.target/powerpc/p9-dimode2.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-1.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-2.c: Require lp64.
* gcc.target/powerpc/p9-minmax-1.c: Remove target.
* gcc.target/powerpc/p9-minmax-2.c: Remove target.
* gcc.target/powerpc/p9-minmax-3.c: Remove target.
* gcc.target/powerpc/p9-splat-1.c: Require lp64.
* gcc.target/powerpc/p9-splat-2.c: Remove target.
* gcc.target/powerpc/p9-splat-3.c: Remove target.
* gcc.target/powerpc/p9-splat-4.c: Require lp64.
* gcc.target/powerpc/p9-vbpermd.c: Require lp64.
* gcc.target/powerpc/p9-vneg.c: Require lp64.
* gcc.target/powerpc/p9-vparity.c: Require lp64.
* gcc.target/powerpc/p9-vpermr.c: Require LE.
* gcc.target/powerpc/p9-xxbr-1.c: Remove target.
* gcc.target/powerpc/p9-xxbr-2.c: Require lp64.
* gcc.target/powerpc/p9-xxbr-3.c: Require lp64.
|
|
libstdc++-v3/ChangeLog:
PR libstdc++/97449
* include/std/variant
(__gen_vtable_impl<>::_S_apply_single_alt):
Diagnose visitor return type mismatches here..
(__gen_vtable_impl</*base case*/>::_S_apply):
..not here.
|
|
This patch removes the unnecessary "le" target requirement
of the builtins-3-p9.c testcase.
gcc/testsuite/ChangeLog:
2020-10-16 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/builtins-3-p9.c: Remove le.
|
|
|
|
Two tests in the powerpc-specific testsuite explicitly add the -m32
and -m64 commandline options, which only are valid for Linux. And the
tests check for lp64 or ilp32, which is redundant. This patch removes
the unnecessary commandline options.
gcc/testsuite/ChangeLog:
2020-10-16 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/pr96139-a.c: Remove -m32.
* gcc.target/powerpc/pr96139-b.c: Remove -m64.
|
|
Simplification of the elemental intrinsic INDEX with constant array-valued
arguments failed with an ICE or did not reduce to a constant array, depending
also on the presence of the optional KIND argument. Add a further attempt of
simplification in the case of elemental intrinsics, and make sure the KIND
argument is not removed prematurely during simplification of INDEX.
gcc/fortran/ChangeLog:
PR fortran/95979
* expr.c (gfc_check_init_expr): Fix check of return code from
gfc_intrinsic_func_interface.
* intrinsic.c (gfc_intrinsic_func_interface): Add further attempt
of simplification of elemental intrinsics with array arguments.
* iresolve.c (gfc_resolve_index_func): Keep optional KIND argument
for simplification of elemental use of INDEX.
gcc/testsuite/ChangeLog:
PR fortran/95979
* gfortran.dg/index_4.f90: New test.
|
|
Dont show names that have been removed.
* vr-values.c (dump_all_value_ranges): Only dump names which are
still active.
|
|
Return a constant range if POINTER_PLUS is [0,0] plus a const.
* range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus
[0, 0] + const return a [const, const] range.
|
|
Call evrp_folder::range_of_expr directly so we dont end up calling
hybrid_folder::range_of_expr and doing double lookups/comparisons.
* gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call
evrp_folder::value_of_expr directly.
(hybrid_folder::value_of_stmt): Ditto.
|
|
Don't assert, simply Return false for negative shifts as we can't tell
anything about the operand.
PR tree-optimization/97462
gcc/
* range-op.cc (operator_lshift::op1_range): Don't trap on negative
shifts.
gcc/testsuite/
* gcc.dg/pr97462.c: New file.
|
|
My changes to friend handling meant that there are now cases where a
friend doesn't get a lang-specific object. So we need to check there
is one before looking inside it.
PR c++/97460
gcc/cp/
* pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend
case.
gcc/testsuite/
* g++.dg/template/pr97460.C: New.
|
|
cp_parser_declaration peeks at 1 or 2 tokens, when I changed it not to
peek past EOF, I set the second token to NULL. But there are paths
through the function that just look at the second token. Fixed by
setting that token to EOF rather than NULL in this case.
PR c++/96258
gcc/cp/
* parser.c (cp_parser_declaration): Make token2 point to EOF if
token1 was EOF.
gcc/testsuite/
* g++.dg/parse/pr96258.C: New.
|
|
As for condition variables, the C++0x threads support relies on
VxWorks entry points not available in VxWorks versions prior to 6.
We just expose absence of support for C++0x threads on such systems.
2020-10-15 Rasmus Villemoes <rv@rasmusvillemoes.dk>
libgcc/
* config/gthr-vxworks.h: Condition the ___GTHREADS_CXX0X
section on VxWorks >= 6.
* config/gthr-vxworks-thread.c: Condition the entire
implementation on __GTHREAD_CXX0X.
|
|
The condition variables support relies on kernel entry points
to enforce critical aspects of it's expected behavior.
Some of these entry points are not available prior to VxWorks 6,
so we just expose absence of support for condition variables on
such systems.
2020-10-15 Rasmus Villemoes <rv@rasmusvillemoes.dk>
libgcc/
* config/gthr-vxworks.h: Condition the __GTHREAD_HAS_COND
section on VxWorks >= 6.
* config/gthr-vxworks-cond.c: Condition the entire
implementation on __GTHREAD_HAS_COND.
|
|
This fixes an oversight and addresses a few build time warnings.
2020-10-15 Rasmus Villemoes <rv@rasmusvillemoes.dk>
libgcc/
* config/gthr-vxworks.c: #include <taskLib.h>.
|
|
2020-10-15 Rasmus Villemoes <rv@rasmusvillemoes.dk>
libgcc/
* config/gthr-vxworks.h: Rewrite remaining occurrence
of _VXW_PRE_69 as _VXWORKS_PRE(6,9).
|
|
As of today, the __gthread_enter/leave entry points are
only meaningful on VxWorks 6. Refactor the VX_ENTER_TLS_DTOR
macros accordingly.
2020-10-15 Rasmus Villemoes <rv@rasmusvillemoes.dk>
libgcc/
* config/gthr-vxworks-tls.c (VX_ENTER_TLS_DTOR): Nil
except on VxWorks 6.
Co-authored-by: Olivier Hainque <hainque@adacore.com>
|
|
The ports that support RTPs achieve the kernel/rtp compilation
and link distinction through the multilib mechanism.
This patch just removes the bogus explicit extraneous
materialization of this distinction in the common VxWorks
configuration files and leaves the rtp specialization all
to the multilib machinery.
2020-10-15 Olivier Hainque <hainque@adacore.com>
libgcc/
* config/t-vxcrtstuff: Remove the -kernel/-rtp specialization.
gcc/
* config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.
|
|
This conditions the use of system headers to fetch a
_WRS_VXWORKS_MAJOR macro on the non definition of that
macro. This allows builds where a specific value is
predefined, e.g. with a self spec, useful in environments
where the system headers don't actually define that macro
(e.g. vxworks 5 or 653).
In addition, _WRS_VXWORKS_MINOR is only provided by the
system headers when really meaningful, e.g. from 6.4 to 6.9.
We just pick a conservative default to 0 for all the cases
where it is not exposed by the system headers or otherwise.
2020-10-15 Olivier Hainque <hainque@adacore.com>
gcc/
* config/vxworks/_vxworks-versions.h: Only include
version.h if _WRS_VXWORKS_MAJOR is not defined.
Provide a default _WRS_VXWORKS_MINOR (0).
|
|
(pr97327).
This patch fixes (PR97327) the warning -mcpu=cortex-m55 conflicts with -march=armv8.1-m.main
for -mfloat-abi=soft by adding the isa_bit_mve_float to clearing FP bit list.
The following combination are fixed with this patch:
$ cat bug.c
int main(){
return 0;
}
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft bug.c -c
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft -march=armv8.1-m.main+mve bug.c -c
Before this patch for above combinations:
cc1: warning: switch '-mcpu=cortex-m55' conflicts with '-march=armv8.1-m.main' switch
After this patch for above combinations no warning/errors.
gcc/ChangeLog:
2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
PR target/97327
* config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.
gcc/testsuite/ChangeLog:
PR target/97327
* gcc.target/arm/mve/intrinsics/pr97327.c: New test.
|