summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Daily bump.GCC Administrator2021-09-2312-1/+1020
|
* Fortran: diagnostic for argument w/type parameters for assumed-type dummySandra Loosemore2021-09-222-11/+11
| | | | | | | | | | | | | | 2021-09-22 Sandra Loosemore <sandra@codesourcery.com> PR fortran/101319 gcc/fortran/ * interface.c (gfc_compare_actual_formal): Extend existing assumed-type diagnostic to also check for argument with type parameters. gcc/testsuite/ * gfortran.dg/c-interop/assumed-type-dummy.f90: Remove xfail.
* Fortran: Fixes for F2018 C838 (PR fortran/101334)Sandra Loosemore2021-09-224-10/+13
| | | | | | | | | | | | | | | | | | | | | The compiler was failing to diagnose the error required by F2018 C838 when passing an assumed-rank array argument to a non-assumed-rank dummy. It was also incorrectly giving an error for calls to the 2-argument form of the ASSOCIATED intrinsic, which is supposed to be permitted by C838. 2021-09-19 Sandra Loosemore <sandra@codesourcery.com> PR fortran/101334 gcc/fortran/ * check.c (gfc_check_associated): Allow an assumed-rank array for the pointer argument. * interface.c (compare_parameter): Also give rank mismatch error on assumed-rank array. gcc/testsuite/ * gfortran.dg/c-interop/c535b-2.f90: Remove xfails. * gfortran.dg/c-interop/c535b-3.f90: Likewise.
* Fortran: Fix testcases that violate C838, + revealed ICESandra Loosemore2021-09-224-6/+16
| | | | | | | | | | | | | | | | | | | | | The three test cases fixed in this patch violated F2018 C838, which only allows passing an assumed-rank argument to an assumed-rank dummy. Wrapping the call in "select rank" revealed a null pointer dereference which is fixed by guarding the use of the result of GFC_DECL_SAVED_DESCRIPTOR similar to what is already done elsewhere. 2021-09-19 Sandra Loosemore <sandra@codesourcery.com> gcc/fortran/ * trans-stmt.c (trans_associate_var): Check that result of GFC_DECL_SAVED_DESCRIPTOR is not null before using it. gcc/testsuite/ * gfortran.dg/assumed_rank_18.f90 (g): Wrap call to h in select rank. * gfortran.dg/assumed_type_10.f90 (test_array): Likewise for call to test_lib. * gfortran.dg/assumed_type_11.f90 (test_array): Likewise.
* Fortran: Improve -Wmissing-include-dirs warnings [PR55534]Tobias Burnus2021-09-2217-44/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It turned out that enabling the -Wmissing-include-dirs for libcpp did output too many warnings – at least as run with -B and similar options during the GCC build and warning for internal include dirs like finclude, unlikely of relevance to for a real-world user. This patch now only warns for -I and -J by default but permits to get the full warnings including libcpp ones with -Wmissing-include-dirs. It additionally documents this in the manual. With that change, the -Wno-missing-include-dirs could be removed from libgfortran's configure and libgomp's testsuite always cflags. This reverts those bits of the previous commit r12-3722-g417ea5c02cef7f000e66d1af22b066c2c1cda047 Additionally, it turned out that all call to load_file called exit explicitly - except for the main file via gfc_init -> gfc_new_file. The latter also output a file not existing fatal error, such that two errors where printed. Now exit is called in line with the other users of load_file. Finally, when compileing with "nonexisting/file.f90", first a warning that "nonexisting" does not exist as include path was printed before the file not found error was printed. Now the directory in which the physical file is located is added silently, relying on the file-not-found diagnostic for those. PR fortran/55534 gcc/ChangeLog: * doc/invoke.texi (-Wno-missing-include-dirs.): Document Fortran behavior. gcc/fortran/ChangeLog: * cpp.c (gfc_cpp_register_include_paths, gfc_cpp_post_options): Add new bool verbose_missing_dir_warn argument. * cpp.h (gfc_cpp_post_options): Update prototype. * f95-lang.c (gfc_init): Remove duplicated file-not found diag. * gfortran.h (gfc_check_include_dirs): Takes bool verbose_missing_dir_warn arg. (gfc_new_file): Returns now void. * options.c (gfc_post_options): Update to warn for -I and -J, only, by default but for all when user requested. * scanner.c (gfc_do_check_include_dir): (gfc_do_check_include_dirs, gfc_check_include_dirs): Take bool verbose warn arg and update to avoid printing the same message twice or never. (load_file): Fix indent. (gfc_new_file): Return void and exit when load_file failed as all other load_file users do. libgfortran/ChangeLog: * configure.ac (AM_FCFLAGS): Revert r12-3722 by removing -Wno-missing-include-dirs. * configure: Regenerate. libgomp/ChangeLog: * testsuite/libgomp.fortran/fortran.exp (ALWAYS_CFLAGS): Revert r12-3722 by removing -Wno-missing-include-dirs. * testsuite/libgomp.oacc-fortran/fortran.exp (ALWAYS_CFLAGS): Likewise. gcc/testsuite/ChangeLog: * gfortran.dg/include_14.f90: Add -J testcase and update dg-output. * gfortran.dg/include_15.f90: Likewise. * gfortran.dg/include_16.f90: Likewise. * gfortran.dg/include_17.f90: Likewise. * gfortran.dg/include_18.f90: Likewise. * gfortran.dg/include_19.f90: Likewise.
* More NEGATE_EXPR folding in match.pdRoger Sayle2021-09-223-16/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As observed by Jakub in comment #2 of PR 98865, the expression -(a>>63) is optimized in GENERIC but not in GIMPLE. Investigating further it turns out that this is one of a few transformations performed by fold_negate_expr in fold-const.c that aren't yet performed by match.pd. This patch moves/duplicates them there, and should be relatively safe as these transformations are already performed by the compiler, but just in different passes. This revised patch adds a Boolean simplify argument to tree-ssa-sccvn.c's vn_nary_build_or_lookup_1 to control whether simplification should be performed before value numbering, updating the callers, but then avoiding simplification when constructing/value-numbering NEGATE_EXPR. This avoids the regression of gcc.dg/tree-ssa/ssa-free-88.c, and enables the new test case(s) to pass. 2021-09-22 Roger Sayle <roger@nextmovesoftware.com> Richard Biener <rguenther@suse.de> gcc/ChangeLog * match.pd (negation simplifications): Implement some negation folding transformations from fold-const.c's fold_negate_expr. * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Add a SIMPLIFY argument, to control whether the op should be simplified prior to looking up/assigning a value number. (vn_nary_build_or_lookup): Update call to vn_nary_build_or_lookup_1. (vn_nary_simplify): Likewise. (visit_nary_op): Likewise, but when constructing a NEGATE_EXPR now call vn_nary_build_or_lookup_1 disabling simplification. gcc/testsuite/ChangeLog * gcc.dg/fold-negate-1.c: New test case.
* x86: Clean up gcc.target/i386/auto-init-* testsH.J. Lu2021-09-228-23/+16
| | | | | | | | | | | | | | | | | 1. Replace ia32 with { ! lp64 } to enable ILP32 tests for -mx32. 2. Replace lp64 with { ! ia32 } to enable x86-64 ISA tests for -mx32. 3. For auto-init-3.c, add -msse and -mfpmath=387 for ia32. * gcc.target/i386/auto-init-2.c: Replace ia32 with { ! lp64 }. * gcc.target/i386/auto-init-3.c (dg-options): Add -msse. (dg-additional-options): Add -mfpmath=387 for ia32. Replace lp64 with { ! ia32 }. Add a space after ia32. * gcc.target/i386/auto-init-4.c: Replace lp64 with { ! ia32 }. * gcc.target/i386/auto-init-5.c: Likewise. * gcc.target/i386/auto-init-padding-3.c: Likewise. * gcc.target/i386/auto-init-padding-7.c: Likewise. * gcc.target/i386/auto-init-padding-8.c: Likewise. * gcc.target/i386/auto-init-padding-9.c: Likewise.
* c++: concept-ids and value-dependence [PR102412]Patrick Palka2021-09-224-14/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem here is that uses_template_parms returns true for all concept-ids (even those with non-dependent arguments), so when a concept-id is used as a default template argument then during deduction the default argument is considered dependent even after substituting into it, which leads to deduction failure (from type_unification_real). This patch fixes this by implementing the resolution of CWG 2446 which says a concept-id is dependent only if its arguments are. DR 2446 PR c++/102412 gcc/cp/ChangeLog: * constexpr.c (cxx_eval_constant_expression) <case TEMPLATE_ID_EXPR>: Check value_dependent_expression_p instead of processing_template_decl. * pt.c (value_dependent_expression_p) <case TEMPLATE_ID_EXPR>: Return true only if any_dependent_template_arguments_p. (instantiation_dependent_r) <case CALL_EXPR>: Remove this case. <case TEMPLATE_ID_EXPR>: Likewise. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-nondep2.C: New test. * g++.dg/cpp2a/concepts-nondep3.C: New test.
* [Ada] Simplify contract of Ada.Strings.Fixed.Trim for proofYannick Moy2021-09-222-50/+17
| | | | | | | gcc/ada/ * libgnat/a-strfix.ads (Trim): Simplify contracts. * libgnat/a-strfix.adb (Trim): Remove white space.
* [Ada] Reuse routines for detecting attributes Old and ResultPiotr Trojanek2021-09-222-5/+2
| | | | | | | gcc/ada/ * exp_ch4.adb (Expand_N_Op_Eq): Reuse Is_Attribute_Result. * exp_prag.adb (Expand_Attributes): Reuse Is_Attribute_Old.
* [Ada] Spurious error on deferred constant with predicateYannick Moy2021-09-221-1/+2
| | | | | | | gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): Do not insert a predicate check after a deferred constant declaration.
* [Ada] Fix conformance errors and erroneous codeBob Duff2021-09-2219-103/+65
| | | | | | | | | | | | | gcc/ada/ * contracts.adb, einfo-utils.adb, einfo-utils.ads, exp_ch7.adb, exp_ch9.adb, exp_disp.adb, exp_prag.adb, exp_smem.adb, exp_util.adb, freeze.adb, sem_aggr.adb, sem_attr.adb, sem_ch8.adb, sem_prag.ads, sem_util.adb, sem_util.ads: Fix conformance errors. * errout.adb, erroutc.adb: Remove pragmas Suppress. * err_vars.ads: Initialize variables that were previously being read uninitialized.
* [Ada] Clarify parts of Ada.Strings.Unbounded in SPARK or notYannick Moy2021-09-221-1/+4
| | | | | | | | gcc/ada/ * libgnat/a-strunb.ads: Mark package in SPARK with private part not in SPARK. (Free): Mark not in SPARK.
* [Ada] Update status of some attributesArnaud Charlet2021-09-221-4/+4
| | | | | | gcc/ada/ * snames.ads-tmpl: Update status of some attributes.
* [Ada] VxWorks inconsistent use of return type (STATUS)Doug Rupp2021-09-2212-152/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ada/ * libgnarl/s-interr__vxworks.adb (Interfaces.C): Remove as unused. (System.VxWorks.Ext): Import. (System.VxWorks.Ext.STATUS): use type. (STATUS): New subtype. (OK): New constant. (Interrupt_Connector): Return STATUS type vice int. (Interrupt_Connect, Notify_Interrupt, Unbind_Handler, Interrupt_Server_Task): Rename Status to Result. Assert Result = OK. * libgnarl/s-osinte__vxworks.adb (To_Clock_Ticks): Define constant IERR, and return it vice ERROR. (Binary_Semaphore_Delete): Return STATUS type vice int. (Binary_Semaphore_Obtain): Likewise. (Binary_Semaphore_Release): Likewise. (Binary_Semaphore_Flush): Likewise. * libgnarl/s-osinte__vxworks.ads (SVE): Renaming of System.VxWorks.Ext. (STATUS): Use SVE in declaration of subtype. (BOOL): Likewise. (vx_freq_t): Likewise. (t_id): Likewise. (gitpid): Use SVE in renaming of subprogram (Task_Stop): Likewise. (Task_Cont): Likewise. (Int_Lock): Likewise. (Int_Unlock): Likewise. (Set_Time_Slice): Likewise. (semDelete): Likewise. (taskCpuAffinitySet): Likewise. (taskMaskAffinitySet): Likewise. (sigset_t): Use SVE in declaration of type. (OK): Remove as unused. (ERROR): Likewise. (taskOptionsGet): return STATUS vice int. (taskSuspend): Likewise. (taskResume): Likewise. (taskDelay): Likewise. (taskVarAdd): Likewise. (taskVarDelete): Likewise. (taskVarSet): Likewise. (tlkKeyCreate): Likewise. (taskPrioritySet): Likewise. (semGive): Likewise. (semTake): Likewise. (Binary_Semaphore_Delete): Likewise. (Binary_Semaphore_Obtain): Likewise. (Binary_Semaphore_Release): Likewise. (Binary_Semaphore_Flush): Likewise. (Interrupt_Connect): Likewise. * libgnarl/s-taprop__vxworks.adb (System.VxWorks.Ext.STATUS): use type. (int): Syntactically align subtype. (STATUS): New subtype. (OK): New constant. (Finalize_Lock): Check STATUS vice int. Assert OK. (Finalize_Lock): Likewise. (Write_Lock): Likewise. (Write_Lock): Likewise. (Write_Lock): Likewise. (Unlock): Likewise. (Unlock): Likewise. (Unlock): Likewise. (Unlock): Likewise. (Sleep): Likewise. (Sleep): Likewise. (Sleep): Likewise. (Timed_Sleep): Likewise and test Result. (Timed_Delay): Likewise and test Result. (Wakeup): Likewise. (Yield): Likewise. (Finalize_TCB): Likewise. (Suspend_Until_True): Check OK. (Stop_All_Tasks): Declare Dummy STATUS vice in. Check OK. (Is_Task_Context): Use OSI renaming. (Initialize): Use STATUS vice int. * libgnarl/s-vxwext.adb (IERR): Renamed from ERROR. (taskCpuAffinitySet): Return IERR (int). (taskMaskAffinitySet): Likewise. * libgnarl/s-vxwext.ads (STATUS): New subtype. (OK): New STATUS constant. (ERROR): Likewise. * libgnarl/s-vxwext__kernel-smp.adb (IERR): Renamed from ERROR. (Int_Lock): Return IERR. (semDelete): Return STATUS. (Task_Cont): Likewise. (Task_Stop): Likewise. * libgnarl/s-vxwext__kernel.adb (IERR): Renamed from ERROR. (semDelete): Return STATUS. (Task_Cont): Likewise. (Task_Stop): Likewise. (taskCpuAffinitySet): Return IERR (int) (taskMaskAffinitySet): Likewise. * libgnarl/s-vxwext__kernel.ads (STATUS): New subtype. (OK): New STATUS constant. (ERROR): Likewise. (Interrupt_Connect): Return STATUS (semDelete): Likewise. (Task_Cont): Likewise. (Task_Stop): Likewise. (Set_Time_Slice): Likewise. * libgnarl/s-vxwext__rtp-smp.adb (IERR): Renamed from ERROR. (Int_Lock): return IERR constant vice ERROR. (Interrupt_Connect): Return STATUS. (semDelete): Likewise. (Set_Time_Slice): Likewise. * libgnarl/s-vxwext__rtp.adb (IERR): Renamed from ERROR. (Int_Lock): return IERR constant vice ERROR. (Int_Unlock): Return STATUS. (semDelete): Likewise. (Set_Time_Slice): Likewise. (taskCpuAffinitySet): Return IERR (int) (taskMaskAffinitySet): Likewise. * libgnarl/s-vxwext__rtp.ads (STATUS): New subtype. (OK): New STATUS constant. (ERROR): Likewise. (Interrupt_Connect): Return STATUS (semDelete): Likewise. (Task_Cont): Likewise. (Task_Stop): Likewise. (Set_Time_Slice): Likewise.
* [Ada] More flexibility in preprocessorArnaud Charlet2021-09-221-5/+20
| | | | | | | gcc/ada/ * prep.adb (Preprocess): Allow for more flexibility when Relaxed_RM_Semantics is set.
* [Ada] Contracts written for the Ada.Strings.Bounded libraryPierre-Alexandre Bazin2021-09-226-723/+4911
| | | | | | | | | | | | | | | | | | | | | gcc/ada/ * libgnat/a-strbou.adb: Turn SPARK_Mode on. * libgnat/a-strbou.ads: Write contracts. * libgnat/a-strfix.ads (Index): Fix grammar error in a comment. * libgnat/a-strsea.ads (Index): Likewise. * libgnat/a-strsup.adb: Rewrite the body to take into account the new definition of Super_String using Relaxed_Initialization and a predicate. (Super_Replicate, Super_Translate, Times): Added loop invariants, and ghost lemmas for Super_Replicate and Times. (Super_Trim): Rewrite the body using search functions to determine the cutting points. (Super_Element, Super_Length, Super_Slice, Super_To_String): Remove (now written as expression functions in a-strsup.ads). * libgnat/a-strsup.ads: Added contracts. (Super_Element, Super_Length, Super_Slice, Super_To_String): Rewrite as expression functions.
* [Ada] Add adequate guard before calling First_Rep_ItemYannick Moy2021-09-221-1/+4
| | | | | | gcc/ada/ * sem_ch13.adb (Build_Predicate_Functions): Add guard.
* [Ada] VxWorks inconsistent use of return type (BOOL)Doug Rupp2021-09-2210-18/+35
| | | | | | | | | | | | | | | | | | | | | | | gcc/ada/ * libgnarl/s-vxwext.ads (BOOL): New int type. (Interrupt_Context): Change return type to BOOL. * libgnarl/s-vxwext__kernel.ads: Likewise. * libgnarl/s-vxwext__rtp-smp.adb: Likewise. * libgnarl/s-vxwext__rtp.adb: Likewise. * libgnarl/s-vxwext__rtp.ads: Likewise. * libgnarl/s-osinte__vxworks.adb (Interrupt_Context): Change return type to BOOL. * libgnarl/s-osinte__vxworks.ads (BOOL) New subtype. (taskIsSuspended): Change return type to BOOL. (Interrupt_Context): Change return type to BOOL. Adjust comments accordingly. * libgnarl/s-taprop__vxworks.adb (System.VxWorks.Ext.BOOL): use type. (Is_Task_Context): Test Interrupt_Context against 0. * libgnat/i-vxwork.ads (BOOL): New int. (intContext): Change return type to BOOL. Adjust comments. * libgnat/i-vxwork__x86.ads: Likewise.
* [Ada] Add Package_Body helper routine to be used in GNATprovePiotr Trojanek2021-09-223-2/+31
| | | | | | | gcc/ada/ * sem_aux.adb, sem_aux.ads (Package_Body): Moved from GNATprove. * sem_elab.adb (Spec_And_Body_From_Entity): Refine type of parameter.
* [Ada] Minor doc improvementArnaud Charlet2021-09-222-3/+9
| | | | | | | | gcc/ada/ * doc/gnat_ugn/platform_specific_information.rst: Improve doc on permission and containers. * gnat_ugn.texi: Regenerate.
* [Ada] Fix infinite loop in compilation of illegal codeYannick Moy2021-09-224-5/+12
| | | | | | | | | | | | gcc/ada/ * atree.adb (Rewrite): Fix parent node of shared aspects. * atree.ads (Rewrite): Add ??? comment on incorrect documentation. * einfo-utils.adb (Known_Esize): Fix logic. * sem_ch13.adb (Alignment_Check_For_Size_Change, Analyze_Attribute_Definition_Clause): Protect against unset Size.
* [Ada] More precise analysis of function renamings in GNATproveYannick Moy2021-09-222-13/+20
| | | | | | | | gcc/ada/ * freeze.adb (Build_Renamed_Body): Special case for GNATprove. * sem_ch6.adb (Analyze_Expression_Function): Remove useless test for a node to come from source, which becomes harmful otherwise.
* [Ada] Removal of technical debtJustin Squirek2021-09-2220-137/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ada/ * ali.adb, ali.ads (Scan_ALI): Remove use of deprecated parameter Ignore_ED, and all specification for Lower in call to Get_File_Name. * ali-util.adb (Read_Withed_ALIs): Modify call to Scan_ALI. * clean.adb (Clean_Executables): Likewise. * gnatbind.adb (Add_Artificial_ALI_File, Executable section): Likewise. * gnatlink.adb (Executable section): Likewise. * gnatls.adb (Executable section): Likewise. * make.adb (Check, Wait_For_Available_Slot): Likewise. * aspects.ads: Add Aspect_No_Controlled_Parts to Nonoverridable_Aspect_Id * opt.ads: Remove function pointers used as a workaround for ASIS. * osint-c.adb (Executable section): Remove setting of function pointer workarounds needed for ASIS. * osint.adb (Read_Default_Search_Dirs): Correct behavior to detect EOL characters. * par_sco.adb (Output_Header): Remove comment regarding use of First_Sloc. (Traverse_Sync_Definition): Renamed to Traverse_Protected_Or_Task_Definition. * pprint.adb (Interal_List_Name): Add description about purpose, and refactor conditional statement. (Prepend): Removed. * repinfo.adb (List_Rep_Info, Write_Info_Line): Remove use of subprogram pointer. * scng.adb (Scan): Remove CODEFIX question, and minor comment change. * sem_attr.adb (Analyze_Image_Attribute): Remove special processing for 'Img. * sem_ch6.adb (Check_Untagged_Equality): Add RM reference. (FCE): Add comment describing behavior. (Is_Non_Overriding_Operation): Minor comment formatting change. * sem_type.adb (Is_Actual_Subprogram): Add comment about Comes_From_Source test. (Matching_Types): Describe non-matching cases. * sem_util.adb (Is_Confirming): Add stub case for No_Controlled_Parts.
* [Ada] Fix access to predicated parent in ItypeYannick Moy2021-09-221-0/+3
| | | | | | | gcc/ada/ * sem_ch13.adb (Build_Predicate_Functions): Access Predicated_Parent only on subtypes.
* [Ada] Allow more cases of import with Relaxed_RM_SemanticsArnaud Charlet2021-09-221-1/+5
| | | | | | | gcc/ada/ * sem_prag.adb (Process_Import_Or_Interface): Relax error when Relaxed_RM_Semantics.
* [Ada] Improve performance for case-insensitive regular expressionsSteve Baird2021-09-221-10/+53
| | | | | | | | | | | | gcc/ada/ * libgnat/s-regpat.adb (Match): Handle the case where Self.First is not NUL (so we know the first character we are looking for), but case-insensitive matching has been specified. (Optimize): In the case of an EXACTF Op, set Self.First as is done in the EXACT case, except with the addition of a call to Lower_Case.
* [Ada] Remove System.Img_Enum_New unitEric Botcazou2021-09-223-257/+0
| | | | | | | | gcc/ada/ * libgnat/s-imenne.ads, libgnat/s-imenne.adb: Delete. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove s-imenne.o. (GNATBIND_OBJS): Likewise.
* [Ada] Fix obsolete comments/name referring to girder discriminantsYannick Moy2021-09-225-28/+28
| | | | | | | | | | gcc/ada/ * einfo.ads: Fix comments. * exp_aggr.adb: Fix variable name. * exp_util.adb: Fix comments. * sem_ch13.adb: Fix comments. * sem_ch3.adb: Fix comments and variable name.
* [Ada] VxWorks inconsistent use of return type (Int_Unlock)Doug Rupp2021-09-229-14/+13
| | | | | | | | | | | | | | | gcc/ada/ * libgnarl/s-osinte__vxworks.ads: Make procedure vice function. * libgnarl/s-vxwext.ads: Likewise. * libgnarl/s-vxwext__kernel-smp.adb: Likewise. * libgnarl/s-vxwext__kernel.adb: Likewise. * libgnarl/s-vxwext__kernel.ads: Likewise. * libgnarl/s-vxwext__rtp-smp.adb: Likewise. * libgnarl/s-vxwext__rtp.adb: Likewise. * libgnarl/s-vxwext__rtp.ads: Likewise. * libgnarl/s-taprop__vxworks.adb (Stop_All_Tasks): Call Int_Unlock as a procedure.
* [Ada] VxWorks inconsistent use of return type (vx_freq_t)Doug Rupp2021-09-224-1/+12
| | | | | | | | | | | gcc/ada/ * libgnarl/s-osinte__vxworks.ads (SVE): New package renaming (vx_freq_t): New subtype. (sysClkRateGet): Return vx_freq_t. * libgnarl/s-vxwext.ads (vx_freq_t): New type. * libgnarl/s-vxwext__kernel.ads: Likewise. * libgnarl/s-vxwext__rtp.ads: Likewise.
* [Ada] Replace use of 'Image with use of Error_Msg_UintGhjuvan Lacambre2021-09-221-10/+11
| | | | | | | gcc/ada/ * sem_case.adb (Composite_Case_Ops): Replace 'Image with Error_Msg_Uint.
* [Ada] Generate temporary for if-expression with -fpreserve-control-flowEric Botcazou2021-09-221-0/+40
| | | | | | | | gcc/ada/ * exp_ch4.adb (Expand_N_If_Expression): Generate an intermediate temporary when the expression is a condition in an outer decision and control-flow optimizations are suppressed.
* [Ada] Add -gnatX support for casing on array valuesSteve Baird2021-09-224-54/+459
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ada/ * exp_ch5.adb (Expand_General_Case_Statement.Pattern_Match): Add new function Indexed_Element to handle array element comparisons. Handle case choices that are array aggregates, string literals, or names denoting constants. * sem_case.adb (Composite_Case_Ops.Array_Case_Ops): New package providing utilities needed for casing on arrays. (Composite_Case_Ops.Choice_Analysis): If necessary, include array length as a "component" (like a discriminant) when traversing components. We do not (yet) partition choice analysis to deal with unequal length choices separately. Instead, we embed everything in the minimum-dimensionality Cartesian product space needed to handle all choices properly; this is determined by the length of the longest choice pattern. (Composite_Case_Ops.Choice_Analysis.Traverse_Discrete_Parts): Include length as a "component" in the traversal if necessary. (Composite_Case_Ops.Choice_Analysis.Parse_Choice.Traverse_Choice): Add support for case choices that are string literals or names denoting constants. (Composite_Case_Ops.Choice_Analysis): Include length as a "component" in the analysis if necessary. (Check_Choices.Check_Case_Pattern_Choices.Ops.Value_Sets.Value_Index_Count): Improve error message when capacity exceeded. * doc/gnat_rm/implementation_defined_pragmas.rst: Update documentation to reflect current implementation status. * gnat_rm.texi: Regenerate.
* [Ada] Fix imprecise wording for error on scalar storage orderEric Botcazou2021-09-221-3/+9
| | | | | | | | gcc/ada/ * freeze.adb (Check_Component_Storage_Order): Give a specific error message for non-byte-aligned component in the packed case. Replace "composite" with "record" in both cases.
* [Ada] Make Ada.Task_Initialization compatible with No_Elaboration_Code_AllArnaud Charlet2021-09-224-15/+17
| | | | | | | | | gcc/ada/ * libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: Make compatible with No_Elaboration_Code_All. * libgnarl/s-taskin.ads, libgnarl/s-tassta.adb: Adjust accordingly.
* [Ada] Change message format on missing returnArnaud Charlet2021-09-221-1/+1
| | | | | | gcc/ada/ * sem_ch6.adb (Check_Returns): Change message on missing return.
* [Ada] Mark gnatfind and gnatxref obsoleteArnaud Charlet2021-09-222-0/+10
| | | | | | | gcc/ada/ * gnatfind.adb, gnatxref.adb: Mark these tools as obsolete before removing them completely.
* Set bound/cmp/control for until wrap loop.Jiufu Guo2021-09-222-1/+50
| | | | | | | | | | | | | | | | | | | | | | | | | In patch r12-3136, niter->control, niter->bound and niter->cmp are derived from number_of_iterations_lt. While for 'until wrap condition', the calculation in number_of_iterations_lt is not align the requirements on the define of them and requirements in determine_exit_conditions. This patch calculate niter->control, niter->bound and niter->cmp in number_of_iterations_until_wrap. gcc/ChangeLog: 2021-09-22 Jiufu Guo <guojiufu@linux.ibm.com> PR tree-optimization/102087 * tree-ssa-loop-niter.c (number_of_iterations_until_wrap): Update bound/cmp/control for niter. gcc/testsuite/ChangeLog: 2021-09-22 Jiufu Guo <guojiufu@linux.ibm.com> * gcc.dg/pr102087.c: New test. PR tree-optimization/102087
* Check for BB before calling register_outgoing_edges.Aldy Hernandez2021-09-221-5/+3
| | | | | | | | | | | | | | We may be asked to fold an artificial statement not in the CFG. Since there are no outgoing edges from those, avoid calling register_outgoing_edges. Tested on x86-64 Linux. gcc/ChangeLog: * gimple-range-fold.cc (fold_using_range::range_of_range_op): Move check for non-empty BB here. (fur_source::register_outgoing_edges): ...from here.
* path solver: Use range_on_path_entry instead of looking at equivalences.Aldy Hernandez2021-09-222-33/+1
| | | | | | | | | | | | | | | | | | Cycling through equivalences to improve a range is nowhere near as efficient as asking the ranger what the range on entry is. Testing on a hybrid VRP threader, shows that this improves our VRP threading benefit from 14.5% to 18.5% and our overall jump threads from 0.85% to 1.28%. Tested on x86-64 Linux. gcc/ChangeLog: * gimple-range-path.cc (path_range_query::internal_range_of_expr): Remove call to improve_range_with_equivs. (path_range_query::improve_range_with_equivs): Remove * gimple-range-path.h: Remove improve_range_with_equivs.
* AVX512FP16: Add permutation and mask blend intrinsics.dianhong xu2021-09-223-0/+178
| | | | | | | | | | | | | | | | | | | | gcc/ChangeLog: * config/i386/avx512fp16intrin.h: (_mm512_mask_blend_ph): New intrinsic. (_mm512_permutex2var_ph): Ditto. (_mm512_permutexvar_ph): Ditto. * config/i386/avx512fp16vlintrin.h: (_mm256_mask_blend_ph): New intrinsic. (_mm256_permutex2var_ph): Ditto. (_mm256_permutexvar_ph): Ditto. (_mm_mask_blend_ph): Ditto. (_mm_permutex2var_ph): Ditto. (_mm_permutexvar_ph): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-14.c: New test.
* AVX512FP16: Add complex conjugation intrinsic instructions.dianhong xu2021-09-224-0/+169
| | | | | | | | | | | | | | | | | | | | | gcc/ChangeLog: * config/i386/avx512fp16intrin.h: Add new intrinsics. (_mm512_conj_pch): New intrinsic. (_mm512_mask_conj_pch): Ditto. (_mm512_maskz_conj_pch): Ditto. * config/i386/avx512fp16vlintrin.h: Add new intrinsics. (_mm256_conj_pch): New intrinsic. (_mm256_mask_conj_pch): Ditto. (_mm256_maskz_conj_pch): Ditto. (_mm_conj_pch): Ditto. (_mm_mask_conj_pch): Ditto. (_mm_maskz_conj_pch): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-conjugation-1.c: New test. * gcc.target/i386/avx512fp16vl-conjugation-1.c: New test.
* AVX512FP16: Add reduce operators(add/mul/min/max).dianhong xu2021-09-224-0/+579
| | | | | | | | | | | | | | | | | | | | | | | | | gcc/ChangeLog: * config/i386/avx512fp16intrin.h (_MM512_REDUCE_OP): New macro (_mm512_reduce_add_ph): New intrinsic. (_mm512_reduce_mul_ph): Ditto. (_mm512_reduce_min_ph): Ditto. (_mm512_reduce_max_ph): Ditto. * config/i386/avx512fp16vlintrin.h (_MM256_REDUCE_OP/_MM_REDUCE_OP): New macro. (_mm256_reduce_add_ph): New intrinsic. (_mm256_reduce_mul_ph): Ditto. (_mm256_reduce_min_ph): Ditto. (_mm256_reduce_max_ph): Ditto. (_mm_reduce_add_ph): Ditto. (_mm_reduce_mul_ph): Ditto. (_mm_reduce_min_ph): Ditto. (_mm_reduce_max_ph): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-reduce-op-1.c: New test. * gcc.target/i386/avx512fp16vl-reduce-op-1.c: Ditto.
* AVX512FP16: Support load/store/abs intrinsics.dianhong xu2021-09-223-0/+256
| | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ChangeLog: * config/i386/avx512fp16intrin.h (__m512h_u, __m256h_u, __m128h_u): New typedef. (_mm512_load_ph): New intrinsic. (_mm256_load_ph): Ditto. (_mm_load_ph): Ditto. (_mm512_loadu_ph): Ditto. (_mm256_loadu_ph): Ditto. (_mm_loadu_ph): Ditto. (_mm512_store_ph): Ditto. (_mm256_store_ph): Ditto. (_mm_store_ph): Ditto. (_mm512_storeu_ph): Ditto. (_mm256_storeu_ph): Ditto. (_mm_storeu_ph): Ditto. (_mm512_abs_ph): Ditto. * config/i386/avx512fp16vlintrin.h (_mm_abs_ph): Ditto. (_mm256_abs_ph): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-13.c: New test.
* Small tweak to comments in range_cannot_be_superflatEric Botcazou2021-09-221-2/+4
| | | | | gcc/ada/ * gcc-interface/decl.c (range_cannot_be_superflat): Tweak comments.
* IBM Z: TPF: Add cc clobber to profiling expandersAndreas Krebbel2021-09-221-2/+4
| | | | | | | | The code sequence emitted uses CC internally. gcc/ChangeLog: * config/s390/tpf.md (prologue_tpf, epilogue_tpf): Add cc clobber.
* Fortran: Add gfc_simple_for_loop aux functionTobias Burnus2021-09-222-0/+36
| | | | | | | | | Function to generate a simple loop (to be used internally). Callers will be added in follow-up commits. gcc/fortran/ * trans-expr.c (gfc_simple_for_loop): New. * trans.h (gfc_simple_for_loop): New prototype.
* obstack.h __PTR_ALIGN vs. ubsanAlan Modra2021-09-221-3/+3
| | | | | | | | | | | | Current ubsan complains on every use of __PTR_ALIGN (when ptrdiff_t is as large as a pointer), due to making calculations relative to a NULL pointer. This patch avoids the problem by extracting out and simplifying __BPTR_ALIGN for the usual case. I've continued to use ptrdiff_t here, where it might be better to throw away __BPTR_ALIGN entirely and just assume uintptr_t exists. * obstack.h (__PTR_ALIGN): Expand and simplify __BPTR_ALIGN rather than calculating relative to a NULL pointer.
* IBM Z: Fix PR102222Andreas Krebbel2021-09-222-0/+26
| | | | | | | | | | | | | | | | Avoid emitting a strict low part move if the insv target actually affects the whole target reg. gcc/ChangeLog: PR target/102222 * config/s390/s390.c (s390_expand_insv): Emit a normal move if it is actually a full copy of the source operand into the target. Don't emit a strict low part move if source and target mode match. gcc/testsuite/ChangeLog: * gcc.target/s390/pr102222.c: New test.