aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-11-25[Ada] Spurious error on instance with predicated actualEd Schonberg1-4/+14
gcc/ada/ * sem_eval.adb (Subtypes_Statically_Compatible): Scalar types with compatible static bounds are statically compatible if predicates are compatible, even if they are not static subtypes. Same for private types without discriminants.
2020-11-25[Ada] Fix couple of minor issues with local exception propagationEric Botcazou2-6/+17
gcc/ada/ * exp_ch11.adb (Expand_N_Raise_Statement): Use Is_Entity_Name consistently in tests on the name of the statement. * exp_prag.adb (Expand_Pragma_Check): In the local propagation case, wrap the raise statement in a block statement.
2020-11-25[Ada] Remove shadowing by a nested subprogram parameterPiotr Trojanek1-6/+6
gcc/ada/ * exp_ch8.adb (Expand_N_Exception_Renaming_Declaration): Move "Nam" constant after the body of a nested subprogram; change "T" from variable to constant.
2020-11-25[Ada] Merge duplicated processing for gnatmake -u and -U switchesPiotr Trojanek1-12/+2
gcc/ada/ * make.adb (Scan_Make_Arg): Merge ELSIF branches for -u and -U.
2020-11-25[Ada] Document attribute Has_Tagged_Values in GNAT RMPiotr Trojanek5-487/+516
gcc/ada/ * doc/gnat_rm/implementation_defined_attributes.rst (Has_Tagged_Values): Document based on the existing description of Has_Access_Type and the comment for Has_Tagged_Component, which is where frontend evaluates this attribute. * gnat_rm.texi: Regenerate. * sem_attr.adb (Analyze_Attribute): Merge processing of Has_Access_Type and Has_Tagged_Component attributes. * sem_util.adb (Has_Access_Type): Fix casing in comment. * sem_util.ads (Has_Tagged_Component): Remove wrong (or outdated) comment about the use of this routine to implement the equality operator.
2020-11-25[Ada] Minor whitespace fix in expansion of attribute SizePiotr Trojanek1-7/+7
gcc/ada/ * exp_attr.adb (Expand_Size_Attribute): Remove whitespace; simplify with a membership test, which are now allowed in the frontend code.
2020-11-25[Ada] Use hardcoded names when converting aspects to pragmasPiotr Trojanek1-13/+13
gcc/ada/ * sem_ch13.adb (Analyze_One_Aspect): Fix inconsistent calls to Make_Aitem_Pragma.
2020-11-25[Ada] Reuse Is_Named_Number where possiblePiotr Trojanek2-4/+2
gcc/ada/ * sem_ch13.adb (Check_Expr_Constants): Simplify with Is_Named_Number. * sem_prag.adb (Process_Convention): Likewise.
2020-11-25[Ada] Simplify aspect processing with membership testsPiotr Trojanek1-107/+83
gcc/ada/ * sem_ch13.adb (Analyze_One_Aspect): Detect aspect identifiers with membership tests. (Check_Aspect_At_End_Of_Declarations): Likewise. (Freeze_Entity_Checks): Likewise; a local constant is no longer needed. (Is_Operational_Item): Similar simplification for attribute identifiers. (Is_Type_Related_Rep_Item): Likewise. (Resolve_Iterable_Operation): Detect names with a membership test. (Validate_Independence): Replace repeated Ekind with a membership test.
2020-11-25[Ada] Fix copy-paste mistake in diagnostics for aspect Effective_WritesPiotr Trojanek1-2/+2
gcc/ada/ * sem_ch13.adb (Analyze_One_Aspect): Replace duplicate of Effective_Reads.
2020-11-25[Ada] Simplify Ekind tests with wrappers and membership testsPiotr Trojanek1-13/+10
gcc/ada/ * einfo.adb: Use composite wrappers (e.g. Is_Subprogram_Or_Entry) and membership tests where it appears to improve clarity.
2020-11-25[Ada] Simplify Is_Standard_xxx_Type routines with membership testsPiotr Trojanek1-31/+9
gcc/ada/ * einfo.adb (Is_Standard_Character_Type, Is_Standard_String_Type): Simplify. (Last_Formal): Use procedural variant of Next_Formal.
2020-11-25[Ada] Consistently use explicit Entity_Id type instead of aliasPiotr Trojanek1-11/+11
gcc/ada/ * einfo.adb: Replace "E" with Entity_Id in local object declarations.
2020-11-25[Ada] Don't constant-fold renamed qualified expressionsSteve Baird1-1/+43
gcc/ada/ * exp_ch2.adb (Expand_Entity_Reference): A new local predicate Is_Object_Renaming_Name indicates whether a given expression occurs (after looking through qualified expressions and type conversions) as the name of an object renaming declaration. If Current_Value is available but this new predicate is True, then ignore the availability of Current_Value.
2020-11-25[Ada] Remove dead and duplicated diagnostics for generic access typesPiotr Trojanek1-18/+3
gcc/ada/ * sem_ch12.adb (Instantiate_Type): Remove extra whitespace. (Validate_Access_Type_Instance): Remove dead (and duplicated) code.
2020-11-25[Ada] Remove hyphens in two cases of "side-effect" used as a nounGary Dismukes1-2/+2
gcc/ada/ * exp_util.adb (Possible_Side_Effect_In_SPARK): Replace hyphen with a space in "side-effect" (two instances).
2020-11-25[Ada] Crash on right shift operator for signed integersJustin Squirek3-8/+22
gcc/ada/ * doc/gnat_rm/intrinsic_subprograms.rst (Shifts and Rotates): Document behavior on negative numbers * gnat_rm.texi: Regenerate. * sem_eval.adb (Fold_Shift): Set modulus to be based on the RM size for non-modular integer types.
2020-11-25[Ada] Reinstate utime based code for vx6 in __gnat_copy_attribsOlivier Hainque1-1/+16
gcc/ada/ * adaint.c (__gnat_copy_attribs): Reinstate code based on utime for timestamp processing on VxWorks 6.
2020-11-25[Ada] Minimize side-effect removal in GNATprove modeYannick Moy3-13/+34
gcc/ada/ * exp_util.adb (Remove_Side_Effects): Only remove side-effects in GNATprove mode when this is useful. * sem_res.adb (Set_Slice_Subtype): Make sure in GNATprove mode to define the Itype when needed, so that run-time errors can be analyzed. * sem_util.adb (Enclosing_Declaration): Correctly take into account renaming declarations.
2020-11-25[Ada] Adjust support for 128-bit integer types in System.Random_NumbersEric Botcazou1-0/+35
gcc/ada/ * libgnat/s-rannum.adb (Random_Discrete): Specifically deal with the case where the size of the base type is larger than 64 bits.
2020-11-25[Ada] Fix internal compilation error on circular type in SPARK codeYannick Moy1-2/+2
gcc/ada/ * sem_ch3.adb (Access_Type_Declaration): Set Etype before checking for volatility compatibility.
2020-11-25[Ada] Add support for 128-bit integer types to GNAT.Random_NumbersEric Botcazou2-2/+16
gcc/ada/ * libgnat/g-rannum.ads (Random): New functions returning 128-bit. * libgnat/g-rannum.adb (Random): Implement them and alphabetize. (To_Signed): New unchecked conversion function for 128-bit.
2020-11-25[Ada] Allow debugging finalization-related expanded codeArnaud Charlet1-1/+33
gcc/ada/ * exp_ch7.adb (Build_Finalization_Master, Build_Finalizer, Build_Object_Declarations, Make_Deep_Array_Body, Wrap_Transient_Expression): Call Set_Debug_Info_Needed on temporaries when Debug_Generated_Code is True.
2020-11-25[Ada] Unrecursify Set_Digit/Set_Image_Unsigned procedureLiaiss Merzougue2-36/+50
gcc/ada/ * libgnat/s-imagei.adb (Set_Digits): Rewrite the procedure to remove recursion. (Image_Integer, Set_Image_Integer): Update assertions and remove redundant ones. * libgnat/s-imageu.adb (Set_Image_Unsigned): Rewrite the procedure to remove recursion.
2020-11-25[Ada] Remove repeated calls to Attribute_NamePiotr Trojanek2-11/+11
gcc/ada/ * exp_util.adb (Attribute_Constrained_Static_Value): Fix body box. * sem_attr.adb (Eval_Attribute): Replace repeated calls to Attribute_Name with a captured value of the Attribute_Id; also, remove extra parens around Is_Generic_Type.
2020-11-25[Ada] Fix crash on invalid `pragma Profile`Ghjuvan Lacambre1-1/+5
gcc/ada/ * sem_prag.adb (Analyze_Pragma): Emit error on wrong argument nkind.
2020-11-25[Ada] Reuse Is_Named_Number where possiblePiotr Trojanek2-2/+2
gcc/ada/ * sem_attr.adb, sem_prag.adb: Use Is_Named_Number.
2020-11-25[Ada] Fix style and typos in code for expanding attribute referencesPiotr Trojanek2-34/+33
gcc/ada/ * exp_attr.adb, exp_util.adb: Fix style and typos in comments.
2020-11-25[Ada] Minor refine type of a counter variablePiotr Trojanek1-2/+2
gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): A variable that is only incremented in the code has now type Nat; conversion is now unnecessary.
2020-11-25arm: Add test that was missing from old commit [PR91816]Stam Markianos-Wright1-0/+63
A while back I submitted GCC10 commit: 44f77a6dea2f312ee1743f3dde465c1b8453ee13 for PR91816. Turns out I was an idiot and forgot to include the test in the actual git commit. Tested that the test still passes on a cross arm-none-eabi and also in a Cortex A-15 bootstrap with no regressions. gcc/testsuite/ChangeLog: PR target/91816 * gcc.target/arm/pr91816.c: New test.
2020-11-25libstdc++: Fix silly typos [PR 97936]Jonathan Wakely1-2/+2
libstdc++-v3/ChangeLog: PR libstdc++/97936 * include/bits/atomic_wait.h (__platform_wait): Check errno, not just the value of EAGAIN. (__waiters::__waiters()): Fix name of data member.
2020-11-25libstdc++: Fix handling of futex wake [PR 97936]Jonathan Wakely3-4/+2
The __platform_wait function is supposed to wait until *addr != old. The futex syscall checks the initial value and returns EAGAIN if *addr != old is already true, which should cause __platform_wait to return. Instead it loops and keeps doing a futex wait, which keeps returning EAGAIN. libstdc++-v3/ChangeLog: PR libstdc++/97936 * include/bits/atomic_wait.h (__platform_wait): Return if futex sets EAGAIN. * testsuite/30_threads/latch/3.cc: Re-enable test. * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
2020-11-25middle-end: Reject flexible array members in __builtin_clear_padding [PR97943]Jakub Jelinek5-1/+85
As mentioned in the PR, we currently ICE on flexible array members in structs and unions during __builtin_clear_padding processing. Jason said in the PR he'd prefer an error in these cases over forcefully handling it as [0] arrays (everything is padding then) or consider the arrays to have as many whole elements as would fit into the tail padding. So, this patch implements that. 2020-11-25 Jakub Jelinek <jakub@redhat.com> PR middle-end/97943 * gimple-fold.c (clear_padding_union, clear_padding_type): Error on and ignore flexible array member fields. Ignore fields with error_mark_node type. * c-c++-common/builtin-clear-padding-2.c: New test. * c-c++-common/builtin-clear-padding-3.c: New test. * g++.dg/ext/builtin-clear-padding-1.C: New test. * gcc.dg/builtin-clear-padding-2.c: New test.
2020-11-25Daily bump.GCC Administrator11-1/+512
2020-11-25changelog: fix parsing of a revert commitMartin Liska1-13/+14
contrib/ChangeLog: * gcc-changelog/git_commit.py: Use revert_regex instead of string prefix. Convert sets to literals.
2020-11-24libstdc++: Disable failing tests [PR 97936]Jonathan Wakely4-7/+11
These tests are unstable and causing failures due to timeouts. Disable them until the cause can be found, so that testing doesn't have to wait for them to timeout. libstdc++-v3/ChangeLog: PR libstdc++/97936 PR libstdc++/97944 * testsuite/29_atomics/atomic_integral/wait_notify.cc: Disable. Do not require pthreads, but add -pthread when appropriate. * testsuite/30_threads/jthread/95989.cc: Likewise. * testsuite/30_threads/latch/3.cc: Likewise. * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
2020-11-24PR c/97955 - ICE in build_array_type_1 on invalid redeclaration of function ↵Martin Sebor2-2/+9
with VLA parameter gcc/c-family/ChangeLog: * c-warn.c (warn_parm_array_mismatch): Avoid invalid redeclarations. gcc/testsuite/ChangeLog: * gcc.dg/pr97955.c: New test.
2020-11-24Fix coarrays in namelist.Thomas Koenig2-2/+40
gcc/fortran/ChangeLog: * trans-array.c (cas_array_ref): Correct assert. * trans-io.c (cas_nml_addr_expr): New function. (transfer_namelist_element): Call when needed.
2020-11-24Add a note.Martin Sebor1-1/+1
gcc/testsuite/ChangeLog: * gcc.dg/Wstringop-overflow-47.c: Add a note.
2020-11-24c++: ICE with int{} in template. [PR97899]Jason Merrill2-0/+14
split_nonconstant_init_1 was confused by a CONSTRUCTOR with non-aggregate type, which (with COMPOUND_LITERAL_P set) we use in a template to represent a braced functional cast. It seems to me that there's no good reason to do split_nonconstant_init at all in a template. gcc/cp/ChangeLog: PR c++/97899 * typeck2.c (store_init_value): Don't split_nonconstant_init in a template. gcc/testsuite/ChangeLog: PR c++/97899 * g++.dg/cpp0x/initlist-template3.C: New test.
2020-11-24Revert: "Fix -ffast-math flags handling inconsistencies"Ulrich Weigand2-35/+29
This reverts commit c4fa3728ab4f78984a549894e0e8c4d6a253e540, which caused a regression in the default for flag_excess_precision. 2020-11-24 Ulrich Weigand <uweigand@de.ibm.com> gcc/ PR tree-optimization/97970 * doc/invoke.texi (-ffast-math): Revert last change. * opts.c: Revert last change.
2020-11-24Adjust regex pattern to expect an additional attribute and function return typeMartin Sebor1-8/+8
gcc/testsuite/ChangeLog: * gfortran.dg/gomp/declare-target-4.f90: Adjust pattern to expect an additional attribute and function return type.
2020-11-24[PR97933] LRA: find correctly last empty dest block.Vladimir N. Makarov1-5/+3
gcc/ 2020-11-24 Vladimir Makarov <vmakarov@redhat.com> PR bootstrap/97933 * lra.c (lra_process_new_insns): Stop on the first real insn after head of e->dest.
2020-11-24arm: correctly handle negating INT_MIN in arm_split_atomic_op [PR97534]Richard Earnshaw2-1/+10
arm_split_atomic_op handles subtracting a constant by converting it into addition of the negated constant. But if the type of the operand is int and the constant is -1 we currently end up generating invalid RTL which can lead to an abort later on. The problem is that in a HOST_WIDE_INT, INT_MIN is represented as 0xffffffff80000000 and the negation of this is 0x0000000080000000, but that's not a valid constant for use in SImode operations. The fix is straight-forward which is to use gen_int_mode rather than simply GEN_INT. This knows how to correctly sign-extend the negated constant when this is needed. gcc/ PR target/97534 * config/arm/arm.c (arm_split_atomic_op): Use gen_int_mode when negating a const_int. gcc/testsuite * gcc.dg/pr97534.c: New test.
2020-11-24preprocessor: Add deferred macrosNathan Sidwell6-51/+123
Deferred macros are needed for C++ modules. Header units may export macro definitions and undefinitions. These are resolved lazily at the point of (potential) use. (The language specifies that, it's not just a useful optimization.) Thus, identifier nodes grow a 'deferred' field, which fortunately doesn't expand the structure on 64-bit systems as there was padding there. This is non-zero on NT_MACRO nodes, if the macro is deferred. When such an identifier is lexed, it is resolved via a callback that I added recently. That will either provide the macro definition, or discover it there was an overriding undef. Either way the identifier is no longer a deferred macro. Notice it is now possible for NT_MACRO nodes to have a NULL macro expansion. libcpp/ * include/cpplib.h (struct cpp_hashnode): Add deferred field. (cpp_set_deferred_macro): Define. (cpp_get_deferred_macro): Declare. (cpp_macro_definition): Reformat, add overload. (cpp_macro_definition_location): Deal with deferred macro. (cpp_alloc_token_string, cpp_compare_macro): Declare. * internal.h (_cpp_notify_macro_use): Return bool (_cpp_maybe_notify_macro_use): Likewise. * directives.c (do_undef): Check macro is not undef before warning. (do_ifdef, do_ifndef): Deal with deferred macro. * expr.c (parse_defined): Likewise. * lex.c (cpp_allocate_token_string): Break out of ... (create_literal): ... here. Call it. (cpp_maybe_module_directive): Deal with deferred macro. * macro.c (cpp_get_token_1): Deal with deferred macro. (warn_of_redefinition): Deal with deferred macro. (compare_macros): Rename to ... (cpp_compare_macro): ... here. Make extern. (cpp_get_deferred_macro): New. (_cpp_notify_macro_use): Deal with deferred macro, return bool indicating definedness. (cpp_macro_definition): Deal with deferred macro.
2020-11-24aarch64: Fix aapcs64 testsuite failuresRichard Sandiford2-2/+2
Various aapcs64 tests were failing at -O1 and above because the assignments to testfunc_ptr were being deleted as dead. That in turn happened because FUNC_VAL_CHECK hid the tail call to myfunc using an LR asm trick: asm volatile ("mov %0, x30" : "=r" (saved_return_address)); asm volatile ("mov x30, %0" : : "r" ((unsigned long long) myfunc)); and so the compiler couldn't see any calls that might read testfunc_ptr. That in itself could be fixed by adding a memory clobber to the second asm above, forcing the compiler to keep both the testfunc_ptr and the saved_return_address assignments. But since this is an ABI test, it seems better to make sure that we don't do any IPA at all. The fact that doing IPA caused a problem was kind-of helpful and so it might be better to avoid making the test “work” in the presence of IPA. The patch therefore just replaced “noinline” with “noipa”. gcc/testsuite/ * gcc.target/aarch64/aapcs64/abitest.h (FUNC_VAL_CHECK): Use noipa rather than noinline. * gcc.target/aarch64/aapcs64/abitest-2.h (FUNC_VAL_CHECK): Likewise.
2020-11-24libstdc++: Run all tests in fileJonathan Wakely1-1/+2
libstdc++-v3/ChangeLog: * testsuite/30_threads/jthread/95989.cc: Run all three test functions, not just the first one twice.
2020-11-24libstdc++: Throw instead of segfaulting in std::thread constructor [PR 67791]Jonathan Wakely1-0/+10
This turns a mysterious segfault into an exception with a more useful message. If the exception isn't caught, the user sees this instead of just a segfault: terminate called after throwing an instance of 'std::system_error' what(): Enable multithreading to use std::thread: Operation not permitted Aborted (core dumped) libstdc++-v3/ChangeLog: PR libstdc++/67791 * src/c++11/thread.cc (thread::_M_start_thread(_State_ptr, void (*)())): Check that gthreads is available before calling __gthread_create.
2020-11-24libstdc++: Use __libc_single_threaded for locale initializationJonathan Wakely2-3/+3
Most initialization of locales and facets happens before main() during startup, when the program is likely to only have one thread. By using the new __gnu_cxx::__is_single_threaded() function instead of checking __gthread_active_p() we can avoid using pthread_once or atomics for the common case. That said, I'm not sure why we don't just use a local static variable instead, as __cxa_guard_acquire() already optimizes for the single-threaded case: static const bool init = (_S_initialize_once(), true); I'll revisit that for GCC 12. libstdc++-v3/ChangeLog: * src/c++98/locale.cc (locale::facet::_S_get_c_locale()) (locale::id::_M_id() const): Use __is_single_threaded. * src/c++98/locale_init.cc (locale::_S_initialize()): Likewise.
2020-11-24Tweak plugin-gcn.c definesAndrew Stubbs1-1/+2
Ensure the code will continue to compile when elf.h gets these definitions. libgomp/ChangeLog: * plugin/plugin-gcn.c: Don't redefine relocations if elf.h has them. (reserved): Delete unused define.