aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-10-19testsuite: Enable and adjust powerpc fold-vec-extract/insert testcases.David Edelsohn31-37/+39
This patch enables a number of testcases on non-Linux targets, adjusts the target requirements, and updates the expected results. gcc/testsuite/ChangeLog: * gcc.target/powerpc/fold-vec-extract-char.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-char.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-char.p9.c: Remove target. Expect 3 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-double.p7.c: Remove target. Add -mbig-endian for Linux. * gcc.target/powerpc/fold-vec-extract-double.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-extract-int.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-int.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-int.p9.c: Remove target. Expect 3 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Remove target. Expect 4 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Remove target. Expect 4 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-extract-short.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-short.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-short.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-insert-char-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-char-p9.c: Remove target. * gcc.target/powerpc/fold-vec-insert-double.c: Remove target. * gcc.target/powerpc/fold-vec-insert-float-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-float-p9.c: Remove target. * gcc.target/powerpc/fold-vec-insert-int-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-int-p9.c: Remove target. Require 8 addi for ilp32. * gcc.target/powerpc/fold-vec-insert-longlong.c: Remove target. * gcc.target/powerpc/fold-vec-insert-short-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-short-p9.c: Remove target. * gcc.target/powerpc/fold-vec-select-double.c: Remove target. * gcc.target/powerpc/fold-vec-select-float.c: Remove target. * gcc.target/powerpc/fold-vec-splats-int.c: Require lp64. * gcc.target/powerpc/fold-vec-splats-longlong.c: Require lp64.
2020-10-19coroutines: Emit error for invalid promise return types [PR97438].Iain Sandoe2-0/+55
At one stage, use cases were proposed for allowing the promise type to contain both return_value and return_void. That was not accepted into C++20, so we should reject it as per the PR. gcc/cp/ChangeLog: PR c++/97438 * coroutines.cc (struct coroutine_info): Add a field to record that we emitted a promise type error. (coro_promise_type_found_p): Check for the case that the promise type contains both return_void and return_value. Emit an error if so, with information about the wrong type methods. gcc/testsuite/ChangeLog: PR c++/97438 * g++.dg/coroutines/pr97438.C: New test.
2020-10-19cplxlower: Avoid a transform when looking at a default definitionMartin Jambor2-1/+42
In PR 97456, IPA-SRA triggers a bug in tree-complex.c where it converts: <bb 2> a$_M_value_21 = COMPLEX_EXPR <ISRA.18_10(D), ISRA.18_10(D)>; (where ISRA.18 is IPA-SRA created PARM_DECL with DECL_IGNORED_P set, which is why it only happens with IPA-SRA) into: <bb 2> a$_M_value_21 = COMPLEX_EXPR <a$_M_value$real_10(D), a$_M_value$real_10(D)>; i.e. it replaces two uses of the parameter default-def with two uninitialized default-defs of a new variable - all in hope to produce code with better debug info. This patch fixes it by avoiding the transform when the SSA_NAME to be replaced is a default definition. gcc/ChangeLog: 2020-10-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/97456 * tree-complex.c (set_component_ssa_name): Do not replace ignored decl default definitions with new component vars. Reorder if conditions. gcc/testsuite/ChangeLog: 2020-10-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/97456 * gcc.dg/tree-ssa/pr97456.c: New test.
2020-10-19libstdc++: Use reserved name for C++20 attributeJonathan Wakely1-1/+1
Although the compiler supports the [[no_unique_address]] attribute, it's not a reserved name prior to C++20, so we can't use it in std::tuple. Use [[__no_unique_address__]] instead. libstdc++-v3/ChangeLog: * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved form of __no_unique_address__ attribute because no_unique_address is not reserved prior to C++20.
2020-10-19libstdc++: Optimize container node-handle type for sizeJonathan Wakely2-38/+114
The use of std::optional in _Node_handle makes the node handle types for associative and unordered containers larger than necessary. It also greatly increases the amount of code included, as <optional> is quite large. The boolean flag that records whether the std::optional contains a value is redundant, because the _Node_handle::_M_ptr member provides the same information. If the node handle has a non-null pointer it also has an allocator, and not otherwise. By replacing std::optional with a custom union type (and using _M_ptr to tell which union member is active) all node handle sizes can be reduced by sizeof(allocator_type::pointer). This makes the node handle types incompatible with previous releases, so must be done before the C++17 ABI is fixed for GCC 11. libstdc++-v3/ChangeLog: * include/bits/node_handle.h (_Node_handle_common): Replace std::optional with custom type. * testsuite/20_util/variant/exception_safety.cc: Add missing header include.
2020-10-19preprocessor: Fix non-fn fn-like macro at EOF [PR97471]Nathan Sidwell4-16/+24
We inject EOF tokens between macro argument lists, but had confused/stale logic in the non-fn invocation. Renamed the magic 'eof' token, as it's now only used for macro argument termination. Always rewind the non-OPEN_PAREN token. libcpp/ * internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'. * init.c (cpp_create_reader): Adjust. * macro.c (collect_args): Use endarg for separator. Always rewind in the not-fn case. gcc/testsuite/ * c-c++-common/cpp/pr97471.c: New.
2020-10-19rs6000: correct BE vextract_fp_from_short[hl] vperm masksDavid Edelsohn1-2/+2
xvcvhpsp instruction converts a vector of bfloat16 half precision to single precision. The intrinsics vextract_fp_from_shorth and vextract_fp_from_shortl select the high or low four elements of a half precision vector to convert. The intrinsics use vperm to select the appropriate portion of the half precision vector and redistribute the values for the xvcvhpsp instruction. The big endian versions of the masks for the intrinsics were initialized wrong. This patch replaces the masks with the correct values. This corrects the failure of builtins-3-p9-runnable.c testcase on big endian systems. Bootstrapped powerpc-ibm-aix7.2.3.0 Power9. gcc/ChangeLog: * config/rs6000/vsx.md (vextract_fp_from_shorth): Fix vals_be. (vextract_fp_from_shortl) Same.
2020-10-19Gracefully handle right shifts larger than the precision.Aldy Hernandez2-0/+15
gcc/ChangeLog: PR tree-optimization/97488 * range-op.cc (operator_lshift::op1_range): Handle large right shifts. gcc/testsuite/ChangeLog: * gcc.dg/pr97488.c: New test.
2020-10-19IPA: fix one more UBSAN errorMartin Liska1-1/+1
It fixes: /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482:22: runtime error: load of value 255, which is not a valid value for type 'bool' #0 0x18e5df3 in modref_tree<int>::merge(modref_tree<int>*, vec<modref_parm_map, va_heap, vl_ptr>*) /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482 #1 0x18dc180 in ipa_merge_modref_summary_after_inlining(cgraph_edge*) /home/marxin/Programming/gcc2/gcc/ipa-modref.c:1779 #2 0x18c1c72 in inline_call(cgraph_edge*, bool, vec<cgraph_edge*, va_heap, vl_ptr>*, int*, bool, bool*) /home/marxin/Programming/gcc2/gcc/ipa-inline-transform.c:492 #3 0x4a3589c in inline_small_functions /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2216 #4 0x4a3b230 in ipa_inline /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2697 #5 0x4a3d902 in execute /home/marxin/Programming/gcc2/gcc/ipa-inline.c:3096 #6 0x1edf831 in execute_one_pass(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2509 #7 0x1ee26af in execute_ipa_pass_list(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2936 #8 0x103f31b in ipa_passes /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2700 #9 0x103fb40 in symbol_table::compile() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2777 #10 0x104092b in symbol_table::finalize_compilation_unit() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:3022 #11 0x235723b in compile_file /home/marxin/Programming/gcc2/gcc/toplev.c:485 #12 0x235fff9 in do_compile /home/marxin/Programming/gcc2/gcc/toplev.c:2321 #13 0x23605fc in toplev::main(int, char**) /home/marxin/Programming/gcc2/gcc/toplev.c:2460 #14 0x4e2b93b in main /home/marxin/Programming/gcc2/gcc/main.c:39 #15 0x7ffff6f0ae09 in __libc_start_main ../csu/libc-start.c:314 #16 0x9a0be9 in _start (/home/marxin/Programming/gcc2/objdir/gcc/cc1+0x9a0be9) gcc/ChangeLog: * ipa-modref.c (compute_parm_map): Clear vector.
2020-10-19tree-optimization/97486 - avoid edge insertion in SLP vectorizingRichard Biener2-0/+36
This avoids edge inserting and eventual splitting during BB SLP vectorization for now. 2020-10-19 Richard Biener <rguenther@suse.de> PR tree-optimization/97486 * tree-vect-slp.c (vect_slp_function): Split after stmts ending a BB. * gcc.dg/vect/bb-slp-pr97486.c: New testcase.
2020-10-19libstdc++: Remove unused headerJonathan Wakely1-57/+0
This header was not part of the patch submitted and reviewed, and was not added to include/Makefile.am so never gets installed anyway. It appears to have been committed by mistake, so let's remove it. libstdc++-v3/ChangeLog: * include/precompiled/expc++.h: Removed.
2020-10-19doc: Add closing parenthesis to -ffat-lto-objects docsJonathan Wakely1-1/+1
gcc/ChangeLog: * doc/invoke.texi (OPptimize Options): Add missing closing parenthesis.
2020-10-19[Ada] Ada_2020: Implement Key_Expression for named container aggregatesEd Schonberg3-39/+149
gcc/ada/ * par-ch4.adb: (P_Aggregate_Or_Paren_Expr): Recognize Iterated_Element_Component. (P_Iterated_Component_Association): Rebuild node as an Iterated_ Element_Association when Key_Expression is present, and attach either the Loop_Parameter_Specification or the Iterator_Specification to the new node. * sem_aggr.adb: (Resolve_Container_Aggregate): Resolve_Iterated_Association handles bota Iterated_Component_ and Iterated_Element_Associations, in which case it analyzes and resoles the orresponding Key_Expression. * exp_aggr.adb (Expand_Iterated_Component): If a Key_Expression is present, use it as the required parameter in the call to the insertion routine for the destination container aggregate. Call this routine for both kinds of Iterated_Associations.
2020-10-19[Ada] Missing check on array concatenationArnaud Charlet1-2/+3
gcc/ada/ * exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
2020-10-19[Ada] Suppress warnings in expansion of "for ... of" loopsBob Duff1-1/+7
gcc/ada/ * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Set the Warnings_Off flag on the pointer object used in the expansion of iterators and similar.
2020-10-19[Ada] Use alternate stack for signal handling on PowerPC/LinuxEric Botcazou1-1/+1
gcc/ada/ * Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead of s-taspri__posix-noaltstack.ads for s-taspri.ads.
2020-10-19[Ada] Remove excessive guards in building predicate functionsPiotr Trojanek1-4/+4
gcc/ada/ * sem_ch13.adb (Add_Call): Remove excessive condition and unnecessary call to Set_Has_Predicates.
2020-10-19[Ada] Alternative display of multi-line messages for GNATproveYannick Moy3-15/+39
gcc/ada/ * debug.adb: Use debug switch -gnatdF for this alternative display of messages. * errout.adb (Output_Messages): Alternative display when -gnatdF is used. * erroutc.adb (Output_Msg_Text): Likewise.
2020-10-19[Ada] AI12-0352: Early derivation and equality of untagged typesArnaud Charlet1-2/+19
gcc/ada/ * sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
2020-10-19[Ada] Compiler abort on in_out function parameter with type invariantEd Schonberg1-1/+7
gcc/ada/ * exp_ch6.adb (Add_View_Conversion_Invariants): Do not insert generated invariant checks when the call is a function call. These tests are properly inserted in the code in procedure Insert_Post_Call_Actions, which takes care of finding the proper insertion point for the checks. (Insert_Post_Call_Actions): Add question marks to indicate possible gap in handling function calls that appear as aggregate components.
2020-10-19[Ada] Wrong freezing for expression function with contracts in a genericArnaud Charlet2-2/+2
gcc/ada/ * contracts.adb (Process_Preconditions_For): Do not exclude instances. * sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious warning on internally generated variables.
2020-10-19[Ada] Implement initialization of CUDA runtimeGhjuvan Lacambre8-2/+731
gcc/ada/ * debug.adb: Document -gnatd_c flag as being used for CUDA. * gnat_cuda.ads: New file. * gnat_cuda.adb: New file. * rtsfind.ads: Add Interfaces_C_Strings package and RE_Fatbin_Wrapper, RE_Register_Fat_Binary, RE_Register_Fat_Binary_End, RE_Register_Function, RE_Chars_Ptr, RE_New_Char_Array entities. * rtsfind.adb: Create new Interfaces_C_Descendant subtype, handle it. * sem_ch7.adb (Analyze_Package_Body_Helper): Call CUDA init procedure. * sem_prag.adb (Analyze_Pragma): Call Add_Cuda_Kernel procedure. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add gnat_cuda.o.
2020-10-19[Ada] Expanded names in ghost assignmentsBob Duff10-202/+246
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.
2020-10-19[Ada] Do not replace bounds for packed arrays that depend on discriminantsGhjuvan Lacambre1-1/+5
gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Check if type depends on discriminant.
2020-10-19[Ada] Ada2020: AI12-0304 Put_Image attrs of lang-def typesBob Duff2-10/+16
gcc/ada/ * libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call Iterate.
2020-10-19[Ada] ACATS 4.1R - Exception missedArnaud Charlet2-7/+19
gcc/ada/ * sem_aggr.adb (Resolve_Record_Aggregate): Properly apply subtype constraints when using a Default_Value. * freeze.adb: Fix typo.
2020-10-19[Ada] Reject use of Relaxed_Initialization on scalar/access param or resultYannick Moy1-0/+23
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.
2020-10-19[Ada] No range check on fixed point to integer conversionArnaud Charlet4-36/+55
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.
2020-10-19[Ada] Clarify protection offered by preconditions on Ada.Text_IO unitsYannick Moy1-2/+3
gcc/ada/ * libgnat/a-textio.ads: Update top-level comment.
2020-10-19[Ada] Fix typo in error message about contract casesPiotr Trojanek1-1/+1
gcc/ada/ * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
2020-10-19[Ada] Simplify detection of by-copy typesPiotr Trojanek1-3/+1
gcc/ada/ * exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy types.
2020-10-19[Ada] Clarify current design of Errout wrt global variable usageYannick Moy1-0/+9
gcc/ada/ * errout.ads: Add comment regarding lack of preservation of Errout state across successive calls to the API.
2020-10-19[Ada] Ada2020: AI12-0304 Put_Image attrs of lang-def typesBob Duff61-43/+904
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.
2020-10-19[Ada] Ada2020: matching parentheses and bracketsBob Duff3-13/+34
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 ].
2020-10-19[Ada] Crash in expression function defined in protected objectJavier Miranda1-0/+17
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.
2020-10-19[Ada] AI12-0170: Abstract subprogram calls in class-wide precond exprsGary Dismukes1-2/+6
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.
2020-10-19[Ada] Private type unexpectedly visibleJavier Miranda1-0/+19
gcc/ada/ * sem_ch7.adb (Uninstall_Declarations): Uninstall the declaration of a subtype declaration defined in the private part of a package.
2020-10-19[Ada] Clean up support of square bracketsArnaud Charlet2-4/+9
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.
2020-10-19[Ada] Remove useless initialization and refine type of a local variablePiotr Trojanek1-1/+1
gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Cleanup.
2020-10-19[Ada] Refine type of a local variablePiotr Trojanek1-1/+1
gcc/ada/ * exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to Entity_Id.
2020-10-19[Ada] Simplify membership test for operatorsPiotr Trojanek1-3/+1
gcc/ada/ * exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary and unary ones.
2020-10-19[Ada] Simplify repeated calls with membership testPiotr Trojanek1-2/+2
gcc/ada/ * inline.adb (Expand_Inlined_Call): Simplify repeated calls to Nkind.
2020-10-19Handle right shifts by zero in range-ops.Aldy Hernandez2-0/+21
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.
2020-10-19tree-optimization/97466 - remove spurious assertRichard Biener1-66/+62
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.
2020-10-19[PATCH] fold x << (n % C) to x << (n & C-1) if C meets power2guojiufu2-1/+25
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.
2020-10-19Simplify comparison GIMPLE IL verificationRichard Biener1-7/+2
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.
2020-10-19libsanitizer: Add recently added commit to LOCAL_PATCHES.Martin Liska1-0/+1
libsanitizer/ChangeLog: * LOCAL_PATCHES: Add one commit.
2020-10-19Daily bump.GCC Administrator5-1/+76
2020-10-18revamp ada.numerics.auxAlexandre Oliva15-477/+598
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.
2020-10-18libsanitizer, Darwin, Bootstrap : Fix bootstrap on Darwin <= 15.Iain Sandoe1-0/+20
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.