aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2022-01-07[Ada] Remove extra space before THEN keywordsPiotr Trojanek5-5/+5
gcc/ada/ * exp_ch5.adb, exp_disp.adb, exp_util.adb, par-ch4.adb, sem_ch13.adb: Remove extra space before THEN that occurs at the end of a line.
2022-01-07[Ada] Fix exit status of GNAT.Expect.Close call on running processDmitriy Anisimkov2-14/+13
gcc/ada/ * expect.c (__gnat_waitpid): Use macros WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG to get exit status or signal that caused the child process to terminate/stop. Do not process exit status in case of error in waitpid call. * adaint.c (__gnat_kill): Use of GenerateConsoleCtrlEvent is removed in Windows variant as it actually is not working and was terminating the calling process. Set signal number into exit code parameter of TerminateProcess to work the same like in Linux.
2022-01-07[Ada] Remove explicit expansion of block with general case statementPiotr Trojanek1-2/+0
gcc/ada/ * exp_ch5.adb (Expand_N_Case_Statement): Remove explicit expansion.
2022-01-07[Ada] Update -gnatwr doc for import of parent packageEtienne Servais2-1/+6
gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update -gnatwr documentation. * gnat_ugn.texi: Regenerate.
2022-01-07[Ada] Fix comment about subprogram unnesting and unconstrained arraysPiotr Trojanek1-1/+2
gcc/ada/ * exp_unst.adb (Unnest_Subprogram): Sync comment with the current code.
2022-01-07[Ada] Fix inconsistent quoting in messages about compile-time errorsPiotr Trojanek6-15/+14
gcc/ada/ * exp_ch4.adb (Raise_Accessibility_Error): Move exception name to the message string; move << control characters to the end, for consistency. * sem_ch6.adb (Analyze_Function_Return): Likewise. * sem_util.adb (Compile_Time_Constraint_Error): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity): Remove quotes around Storage_Error. * gcc-interface/trans.c (gnat_to_gnu): Remove quotes around Constraint_Error. gcc/testsuite/ * gnat.dg/aggr26.adb: Update expected error message.
2022-01-07[Ada] Consistent suppression for warnings inside null loopsPiotr Trojanek1-20/+22
gcc/ada/ * errout.adb (Error_Msg): Move warning suppression code from Error_Msg_NLE (Error_Msg_NLE): Warning suppression is now done by the internal call to Error_Msg.
2022-01-07[Ada] Remove unnecessary guard for inserting non-empty listPiotr Trojanek5-28/+8
gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Remove unnecessary guards. * exp_ch4.adb (Expand_N_If_Expression): Likewise; clarify comment. * exp_ch5.adb (Expand_N_If_Statement, Expand_Iterator_Loop_Over_Container): Likewise. * exp_ch9.adb (Expand_N_Task_Type_Declaration): Remove redundant guard. * freeze.adb (Freeze_All_Ent): Reduce scope of a local variable.
2022-01-07[Ada] Remove unnecessary guards for appending non-empty listsPiotr Trojanek3-9/+3
gcc/ada/ * exp_ch3.adb (Build_Init_Procedure): Remove unnecessary guard. * exp_disp.adb (Make_DT): Likewise. * sem_ch12.adb (Analyze_Associations): Likewise.
2022-01-07[Ada] Check scalar range in arrays constructed by concatenationEtienne Servais1-3/+23
gcc/ada/ * sem_res.adb (Resolve_Op_Concat_Arg): Check range when concatenating scalars.
2022-01-07[Ada] treepr: print value only for discrete typesBob Duff1-3/+3
gcc/ada/ * treepr.adb (Print_Node_Ref): Change "not Is_Array_Type" to "Is_Discrete_Type".
2022-01-07[Ada] Use non-internal representation for access subprograms if UC to AddressRichard Kenner2-3/+19
gcc/ada/ * libgnat/g-spipat.ads (Boolean_Func, Natural_Func, VString_Func): Mark as Favor_Top_Level. * sem_ch13.adb (Validate_Unchecked_Conversion): Avoid using internal representation if Unchecked_Conversion between an access to subprogram and System.Address within the same unit.
2022-01-07[Ada] treepr: Print value of static expressionBob Duff1-0/+19
gcc/ada/ * treepr.adb (Print_Node_Ref): Print the value if available.
2022-01-07[Ada] Add an option to Get_Fullest_View to not recurseRichard Kenner2-22/+32
gcc/ada/ * sem_util.ads, sem_util.adb (Get_Fullest_View): Add option to not recurse and return the next-most-fullest view.
2022-01-07[Ada] Warn on import of parent packageBob Duff24-28/+12
gcc/ada/ * sem_ch10.adb (Check_Redundant_Withs): Add a warning if a library unit with's its own ancestor. Note that this warning is not triggered for something like "with P.R;" in P.Q, because there the "with P;" is considered implicit. * fname-sf.adb, libgnarl/s-stusta.adb, libgnarl/s-tasdeb.ads, libgnat/a-calfor.adb, libgnat/a-tiboio.adb, libgnat/a-wwboio.adb, libgnat/a-zzboio.adb, libgnat/i-cobol.adb, libgnat/s-bitops.adb, libgnat/s-bitops.ads, libgnat/s-direio.adb, libgnat/s-dwalin.adb, libgnat/s-geveop.adb, libgnat/s-mmosin__unix.adb, libgnat/s-os_lib.adb, libgnat/s-os_lib.ads, libgnat/s-pooglo.ads, libgnat/s-secsta.adb, libgnat/s-shasto.adb, libgnat/s-stausa.ads, libgnat/s-stratt.ads, libgnat/s-ststop.adb: Remove with of parent. * sinfo.ads: Minor comment fix.
2022-01-07[Ada] Small cleanup of osint-m.adbBob Duff1-11/+0
gcc/ada/ * osint-m.adb: Remove with_clause and pragma.
2022-01-07Allow propagations from inner loop to outer loop.liuhongt2-2/+31
NULL is considered as an outer loop of any other loop. gcc/ChangeLog: PR rtl-optimization/103750 * fwprop.c (forward_propagate_into): Allow propagations from inner loop to outer loop. gcc/testsuite/ChangeLog: * g++.target/i386/pr103750-fwprop-1.C: New test.
2022-01-07nvptx: Add support for PTX's cnot instruction.Roger Sayle2-0/+101
This is a simple patch, now that the nvptx backend has transitioned to STORE_FLAG_VALUE=1, that adds support for NVidia's cnot instruction, that implements C/C++ style logical negation. Previously, the simple function: int foo(int x) { return !x; } on nvptx-none with -O2 would generate: mov.u32 %r24, %ar0; setp.eq.u32 %r28, %r24, 0; selp.u32 %value, 1, 0, %r28; with this patch, GCC now generates: mov.u32 %r24, %ar0; cnot.b32 %value, %r24; 2022-01-07 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog * config/nvptx/nvptx.md (*cnot<mode>2): New define_insn. gcc/testsuite/ChangeLog * gcc.target/nvptx/cnot-1.c: New test case.
2022-01-07rs6000: Define a pattern for mffscrni. If the RN is a constant, it can call ↵Haochen Gui3-10/+38
gen_rs6000_mffscrni directly. gcc/ * config/rs6000/rs6000.md (rs6000_mffscrni): Define. (rs6000_set_fpscr_rn): Change the type of operand[0] from DI to SI. Call gen_rs6000_mffscrni when operand[0] is a const_0_to_3_operand. gcc/testsuite/ * gcc.target/powerpc/mffscrni_p9.c: New testcase for mffscrni. * gcc.target/powerpc/test_fpscr_rn_builtin.c: Test mffscrn and mffscrni separately.
2022-01-07c++: temporarily restore VEC_INIT_EXPR gimplify [PR103936]Jason Merrill2-0/+24
PR103936 demonstrates that some VEC_INIT_EXPR can still survive into GENERIC; until that's fixed let's put back the handling in cp_gimplify_expr. PR c++/103936 PR c++/65591 gcc/cp/ChangeLog: * cp-gimplify.c (cp_gimplify_expr): Restore VEC_INIT_EXPR handling. gcc/testsuite/ChangeLog: * g++.dg/init/aggr15.C: New test.
2022-01-07Support commutative alternative for AVX512 vpcmpeq{b,w,d,q}liuhongt12-60/+85
gcc/ChangeLog: * config/i386/sse.md (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Extend to UNSPEC_PCMP_UNSIGNED. gcc/testsuite/ChangeLog: * gcc.target/i386/pr103774.c: New test. * gcc.target/i386/avx512bw-vpcmpequb-1.c: Adjust scan assembler from vpcmpub to (?:vpcmpub|vpcmpeqb). * gcc.target/i386/avx512bw-vpcmpequw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpub-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpuw-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpequd-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpequq-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequd-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpuq-1.c: Ditto.
2022-01-07Optimize V16HF vector insert to element 0 for AVX2.liuhongt3-28/+42
gcc/ChangeLog: PR target/103753 * config/i386/i386-expand.c (ix86_expand_vector_set): Not use gen_avx2_pblendph_1 when elt == 0. * config/i386/sse.md (avx2_pblendph): Rename to .. (avx2_pblend<ssemodesuffix>_1).. this, and extend to V16HI. (*avx2_pblendw): Rename to .. (*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF. (avx2_pblendw): Rename to .. (*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF. (blendsuf): Removed. (sse4_1_pblend<blendsuf>): Renamed to .. (sse4_1_pblend<ssemodesuffix>): .. this. gcc/testsuite/ChangeLog: * gcc.target/i386/pr103753.c: New test.
2022-01-06Fortran: Fix handling of optional argument to SIZE intrinsic [PR103898]Sandra Loosemore2-1/+20
This patch fixes a think-o in the code that triggered an ICE in the test case. 2021-01-06 Sandra Loosemore <sandra@codesourcery.com> PR fortran/103898 gcc/fortran/ * trans-intrinsic.c (gfc_conv_intrinsic_size): Make size_var actually be a variable and fix surrounding code. gcc/testsuite/ * gfortran.dg/pr103898.f90: New test.
2022-01-06c++: when delegating constructor throws [PR103711]Jason Merrill2-0/+38
We were always calling the complete destructor if the target constructor throws, even if we were calling the base constructor. PR c++/103711 gcc/cp/ChangeLog: * init.c (perform_target_ctor): Select destructor by in_chrg. gcc/testsuite/ChangeLog: * g++.dg/eh/delegating1.C: New test.
2022-01-06c++: nested catch in ctor fn-try-block [PR61611]Jason Merrill2-1/+42
Being in_function_try_handler isn't enough to satisfy the condition of reaching the end of such a handler; in this case, we're reaching the end of a handler within that handler, so we don't want the special semantics. PR c++/61611 gcc/cp/ChangeLog: * except.c (in_nested_catch): New. (expand_end_catch_block): Check it. gcc/testsuite/ChangeLog: * g++.dg/eh/ctor-fntry1.C: New test.
2022-01-06c++: destroy retval on throwing cleanup in try [PR33799]Jason Merrill5-18/+84
My earlier attempt to fix this bug didn't handle the case where both the return and the throwing cleanup are within a try-block that catches and discards the exception. Fixed by adding the retval cleanup to any try-blocks as well as the function body. PR102191 pointed out that we also weren't handling templates properly, so I moved the call out of the parser. PR c++/33799 PR c++/102191 gcc/cp/ChangeLog: * except.c (maybe_splice_retval_cleanup): Check current_binding_level. * semantics.c (do_poplevel): Call it here. * parser.c (cp_parser_compound_statement): Not here. gcc/testsuite/ChangeLog: * g++.dg/eh/return1.C: Add temporary in try block case. * g++.dg/cpp2a/constexpr-dtor11.C: New test.
2022-01-06c++: clean up ref-extended temp on throwing dtor [PR53868]Jason Merrill5-4/+93
We have wrap_temporary_cleanups to handle the EH region nesting problems between cleanups for complete variables and cleanups for temporaries used in their construction, but we weren't calling it for temporaries extended from binding to a reference. We still don't want this for array cleanups (since my PR94041 fix), so I move that exception from initialize_local_var to wrap_temporary_cleanups. PR c++/53868 gcc/cp/ChangeLog: * decl.c (cp_finish_decl): Use wrap_temporary_cleanups for cleanups from set_up_extended_ref_temp. (wrap_temporary_cleanups): Ignore array cleanups. (initialize_local_var): Don't check for array here. * cp-tree.h (BIND_EXPR_VEC_DTOR): New. * init.c (build_vec_delete_1): Set it. gcc/testsuite/ChangeLog: * g++.dg/eh/ref-temp1.C: New test. * g++.dg/eh/ref-temp2.C: New test.
2022-01-06c++: keep destroying array after one dtor throws [PR66451]Jason Merrill6-6/+81
When we're cleaning up an array, if one destructor throws, we should still try to clean up the rest of the array. We can use TRY_CATCH_EXPR for this, instead of a TARGET_EXPR like my other recent patches, because a destructor call can't involve any temporaries that need to live longer. I thought about only doing this when we call build_vec_delete_1 from build_vec_init, but it seems appropriate for delete-expressions as well; we've said that the array's lifetime is over, it makes sense to keep trying to destroy it. The standard isn't clear, but clang seems to agree with me. PR c++/66451 gcc/cp/ChangeLog: * init.c (build_vec_delete_1): Handle throwing dtor. (build_vec_init): Tell it we're in a cleanup already. gcc/testsuite/ChangeLog: * g++.dg/eh/array3.C: New test. * g++.dg/eh/array1.C: Mark destructor as throw(). * g++.dg/ipa/devirt-40.C: Likewise. * g++.dg/warn/pr83054.C: Likewise. * g++.dg/eh/delete1.C: Shorten array to one element.
2022-01-06c++: don't cleanup the last aggregate eltJason Merrill2-5/+28
Now that we're building cleanups for aggregate elements more often, it seems worth optimizing by avoiding building one for the last element; once it is initialized, the complete object is fully initialized, the element cleanups end in favor of the complete object cleanup, and so a cleanup for the last element would guard nothing at all. gcc/cp/ChangeLog: * typeck2.c (split_nonconstant_init_1): Don't cleanup the last elt. (split_nonconstant_init): Adjust. gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/aggregate1.C: New test.
2022-01-06c++: EH and partially constructed aggr temp [PR66139]Jason Merrill9-43/+265
Now that PR94041 is fixed, I can return to addressing PR66139, missing cleanups for partially constructed aggregate temporaries. My previous approach of calling split_nonconstant_init in cp_gimplify_init_expr broke because gimplification is too late to be introducing destructor calls. So instead I now call it under cp_fold_function, just before cp_genericize; doing it from cp_genericize itself ran into trouble with the rewriting of invisible references. So now the prediction in cp_gimplify_expr that cp_gimplify_init_expr might need to replace references to TARGET_EXPR_SLOT within TARGET_EXPR_INITIAL has come to pass. constexpr.c already had the simple search-and-replace tree walk I needed, but it needed to be fixed to actually replace all occurrences instead of just the first one. Handling of VEC_INIT_EXPR at gimplify time had similar issues that we worked around with build_vec_init_elt, so I'm moving that to cp_fold_function as well. But it seems that build_vec_init_elt is still useful for setting the VEC_INIT_EXPR_IS_CONSTEXPR flag, so I'm leaving it alone. This also fixes 52320, because build_aggr_init of each X from build_vec_init builds an INIT_EXPR rather than call split_nonconstant_init at that point, and now that INIT_EXPR gets split later. PR c++/66139 PR c++/52320 gcc/cp/ChangeLog: * constexpr.c (replace_decl): Rename from replace_result_decl. * cp-tree.h (replace_decl): Declare it. * cp-gimplify.c (cp_gimplify_init_expr): Call it. (cp_gimplify_expr): Don't handle VEC_INIT_EXPR. (cp_genericize_init, cp_genericize_init_expr) (cp_genericize_target_expr): New. (cp_fold_r): Call them. * tree.c (build_array_copy): Add a TARGET_EXPR. * typeck2.c (digest_init_r): Look through a TARGET_EXPR. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/initlist116.C: New test. * g++.dg/cpp0x/initlist117.C: New test. * g++.dg/cpp0x/lambda/lambda-eh.C: New test. * g++.dg/eh/aggregate1.C: New test.
2022-01-06c++: temporary lifetime with array aggr init [PR94041]Jason Merrill8-74/+298
The previous patch fixed temporary lifetime for aggregate initialization of classes; this one extends that fix to arrays. This specifically reverses my r74790, the patch for PR12253, which was made wrong when these semantics were specified in DR201. Since the array cleanup region encloses the regions for any temporaries, we don't need to add an additional region for the array object itself in either initialize_local_var or split_nonconstant_init; we do, however, need to tell split_nonconstant_init how to disable the cleanup once an enclosing object is fully constructed, at which point we want to run that destructor instead. PR c++/94041 gcc/cp/ChangeLog: * decl.c (initialize_local_var): Fix comment. * init.c (build_new_1): Do stabilize array init. (build_vec_init): Use TARGET_EXPR for cleanup. Initialization of an element from an explicit initializer is not a full-expression. * tree.c (expand_vec_init_expr): Pass flags through. * typeck2.c (split_nonconstant_init_1): Handle VEC_INIT_EXPR. (split_nonconstant_init): Handle array cleanups. * cp-tree.h: Adjust. gcc/testsuite/ChangeLog: * g++.dg/init/array12.C: * g++.dg/init/aggr7-eh2.C: New test. * g++.dg/init/aggr7-eh3.C: New test.
2022-01-06c++: temporary lifetime with aggregate init [PR94041]Jason Merrill4-20/+121
In C++98 the lifetime of temporaries in aggregate initialization was unclear, but C++11 DR201 clarified that only temporaries created for default-initialization of an array element with no corresponding initializer-clause are destroyed immediately; all others persist until the end of the full-expression. But we never implemented that, and continued treating individual element initializations as full-expressions, such as in my patch for PR50866 in r180442. This blocked my attempted fix for PR66139, which extended the use of split_nonconstant_init, and thus the bug, to aggregate initialization of temporaries within an expression. The longer temporary lifetime creates further EH region overlap problems like the ones that wrap_temporary_cleanups addresses: in aggr7.C, we start out with a normal nesting of A1 c.b1 A2 c.b2 ... ~A2 ~A1 where on the way in, throwing from one of the inits will clean up from the previous inits. But once c.b2 is initialized, throwing from ~A2 must not clean up c.b1; instead it needs to clean up c. So as in build_new_1, we deal with this by guarding the B cleanups with flags that are cleared once c is fully constructed; throwing from one of the ~A still hits that region, but does not call ~B. And then wrap_temporary_cleanups deals with calling ~C, but we need to tell it not to wrap the subobject cleanups. The change from expressing the subobject cleanups with CLEANUP_STMT to TARGET_EXPR was also necessary because we need them to collate with the ~A in gimplify_cleanup_point_expr; the CLEANUP_STMT representation only worked with treating subobject initializations as full-expressions. PR c++/94041 gcc/cp/ChangeLog: * decl.c (check_initializer): Remove obsolete comment. (wrap_cleanups_r): Don't wrap CLEANUP_EH_ONLY. (initialize_local_var): Change assert to test. * typeck2.c (maybe_push_temp_cleanup): New. (split_nonconstant_init_1): Use it. (split_nonconstant_init): Clear cleanup flags. gcc/testsuite/ChangeLog: * g++.dg/init/aggr7-eh.C: New test. * g++.dg/cpp0x/initlist122.C: Also test aggregate variable.
2022-01-06c++: loop over array elts w/o explicit init [PR92385]Jason Merrill7-31/+112
The PR complains that initializing a large array with {} takes a long time to compile; this was because digest_init would turn {} into a long CONSTRUCTOR with an initializer for each element, instead of more sensibly generating a loop. The standard doesn't specify this implementation, but it does allow for it by specifying that a temporary created "when a default constructor is called to initialize an element of an array with no corresponding initializer" is destroyed "before the construction of the next array element, if any." rather than living until the end of the complete object initialization as usual. This change is also needed before the PR94041 fix extends the lifetime of temporaries from elements with explicit initializers. To implement this, I change digest_init so that in cases where initialization of trailing array elements isn't constant, we return a VEC_INIT_EXPR instead of a bare CONSTRUCTOR; when it is encountered later, we call build_vec_init to generate the actual initialization code. PR c++/92385 gcc/cp/ChangeLog: * typeck2.c (PICFLAG_VEC_INIT): New. (process_init_constructor_array): Set it. (process_init_constructor): Handle it. (split_nonconstant_init_1): Handle VEC_INIT_EXPR. * init.c (build_vec_init): Likewise. * cp-gimplify.c (cp_gimplify_expr): Factor out... * tree.c (expand_vec_init_expr): ...this function. (build_vec_init_elt): Handle BRACE_ENCLOSED_INITIALIZER_P. (build_vec_init_expr): Likewise. * constexpr.c (cxx_eval_vec_init): Likewise. (reduced_constant_expression_p): Check arrays before C++20. * cp-tree.h (expand_vec_init_expr): Declare. gcc/testsuite/ChangeLog: * g++.dg/init/array61.C: New test.
2022-01-06c++: don't preevaluate new-initializerJason Merrill3-52/+17
The preevaluation code was causing trouble with my fix for PR94041, and now I see that it's actually wrong since P0145 was adopted for C++17, mandating order of evaluation for many expressions that were previously unspecified. I don't see a need to preserve the preevaluation code for older standard modes. gcc/cp/ChangeLog: * init.c (build_new_1): Remove preevaluation code. gcc/testsuite/ChangeLog: * g++.old-deja/g++.martin/new1.C: Don't expect preeval. * g++.dg/tree-ssa/stabilize1.C: Removed.
2022-01-07Daily bump.GCC Administrator7-1/+450
2022-01-06analyzer: make use of may_be_aliased in alias detection [PR103546]David Malcolm2-7/+86
Whilst debugging PR analyzer/103546 (false +ve in flex-generated lexers) I noticed that the analyzer was considering that writes through symbolic pointers could be treated as clobbering static globals such as: static YY_BUFFER_STATE * yy_buffer_stack = NULL; even for such variables that never have their address taken. This patch fixes this issue at least, so that the analyzer can preserve knowledge of such globals on code paths with writes through symbolic pointers. It does not fix the false +ve in the lexer code. gcc/analyzer/ChangeLog: PR analyzer/103546 * store.cc (store::eval_alias_1): Refactor handling of decl regions, adding a test for may_be_aliased, rejecting those for which it returns false. gcc/testsuite/ChangeLog: PR analyzer/103546 * gcc.dg/analyzer/aliasing-3.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2022-01-06Fortran: Fix ICE in argument_rank_mismatch [PR103287]Sandra Loosemore3-1/+23
This patch removes an incorrect assertion. A user-friendly error for this case is already given elsewhere. 2022-01-05 Steve Kargl <kargl@gcc.gnu.org> Sandra Loosemore <sandra@codesourcery.com> PR fortran/103287 gcc/fortran/ * interface.c (argument_rank_mismatch): Replace incorrect assertion with return. gcc/testsuite/ * gfortran.dg/c-interop/pr103287-1.f90: new. * gfortran.dg/c-interop/pr103287-2.f90: new.
2022-01-06x86: Generate INT3 for __builtin_eh_returnH.J. Lu2-3/+24
Generate INT3 after indirect jmp in exception return for -fcf-protection with -mharden-sls=indirect-jmp. gcc/ PR target/103925 * config/i386/i386.c (ix86_output_indirect_function_return): Generate INT3 after indirect jmp for -mharden-sls=indirect-jmp. gcc/testsuite/ PR target/103925 * gcc.target/i386/harden-sls-6.c: New test.
2022-01-06x86: Rename -harden-sls=indirect-branch to -harden-sls=indirect-jmpH.J. Lu4-8/+8
Indirect branch also includes indirect call instructions. Rename -harden-sls=indirect-branch to -harden-sls=indirect-jmp to match its intended behavior. PR target/102952 * config/i386/i386-opts.h (harden_sls): Replace harden_sls_indirect_branch with harden_sls_indirect_jmp. * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): Likewise. (ix86_output_indirect_jmp): Likewise. (ix86_output_call_insn): Likewise. * config/i386/i386.opt: Replace indirect-branch with indirect-jmp. Replace harden_sls_indirect_branch with harden_sls_indirect_jmp. * doc/invoke.texi (-harden-sls=): Replace indirect-branch with indirect-jmp.
2022-01-06compiler: permit converting unnamed types when ignoring struct tagsIan Lance Taylor2-3/+2
Test case is https://golang.org/cl/375796. Fixes golang/go#50439 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/375797
2022-01-06i386: Improve HImode interunit movesUros Bizjak5-35/+51
Currently, the compiler moves HImode values between GPR and XMM registers with: %vpinsrw\t{$0, %k1, %d0|%d0, %k1, 0} %vpextrw\t{$0, %1, %k0|%k0, %1, 0} but it could use slightly faster and shorter: %vmovd\t{%k1, %0|%0, %k1} %vmovd\t{%1, %k0|%k0, %1} 2022-01-06 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/i386.c (ix86_output_ssemov) <MODE_DI>: Add %q modifier for operands in general registers. <MODE_SI>: Add %q modifier for operands in general registers. * config/i386/i386.md (*movhi_internal): Change type attribute of xmm-gpr interunit alternatives 9,10 to ssemov and mode attribute to SImode for non-avx512fp16 targets. (*movhf_internal): Ditto for xmm-gpr interunit alternatives 6,8. * config/i386/mmx.md (*movv2qi_internal): Ditto for xmm-gpr interunit alternatives 8,9. gcc/testsuite/ChangeLog: * gcc.target/i386/pr102811-2.c (dg-final): Update scan-assembler-times directives. * gcc.target/i386/sse2-float16-2.c (dg-final): Update scan-assembler directives.
2022-01-06[Ada] Warn on subtype declaration of null rangeBob Duff2-4/+28
gcc/ada/ * sem_res.adb (Resolve_Range): Warn on null range, unless we are inside a generic unit or an instance thereof. * sem_ch3.adb (Analyze_Subtype_Indication): Minor: avoid double negative.
2022-01-06[Ada] Remove unnecessary declare blockPiotr Trojanek1-38/+35
gcc/ada/ * errout.adb (Adjust_Name_Case): Remove unnecessary declare block.
2022-01-06[Ada] Proof of System.Generic_Array_Operations at silver levelYannick Moy4-51/+490
gcc/ada/ * libgnat/a-ngcoar.adb: Add pragma to ignore assertions in instance. * libgnat/a-ngrear.adb: Likewise. * libgnat/s-gearop.adb: Prove implementation is free of runtime errors. * libgnat/s-gearop.ads: Add contracts to protect against runtime errors in the generic part.
2022-01-06[Ada] Simplify traversal for removing warnings from dead codePiotr Trojanek1-25/+11
gcc/ada/ * errout.adb (Remove_Warning_Messages): Use traversal procedure instead of traversal function, since we discard status of each step anyway.
2022-01-06[Ada] Remove a locally handled exceptionPiotr Trojanek1-17/+10
gcc/ada/ * exp_ch4.adb (Expand_Concatenate): There is no reason for using declaring, raising and catching an exception; a simple return statement is enough.
2022-01-06[Ada] Move messages on division by zero to the right operandPiotr Trojanek1-1/+5
gcc/ada/ * sem_eval.adb (Eval_Arithmetic_Op): Add Loc parameter to all calls to Apply_Compile_Time_Constraint_Error related to division by zero.
2022-01-06[Ada] Remove unnecessary guards for non-empty listsPiotr Trojanek7-110/+90
gcc/ada/ * errout.adb (Remove_Warning_Messages): Remove unnecessary guard. * exp_util.adb (Kill_Dead_Code): Likewise. * par_sco.adb (Traverse_Declarations_Or_Statements): Likewise. * sem_ch3.adb (Build_Derived_Record_Type): Likewise. * sem_ch4.adb (Traverse_Interfaces): Likewise. * sem_eval.adb (Traverse_Interfaces): Likewise. * sem_util.adb (Collect_Interfaces): Likewise. (Has_Non_Null_Statements, Side_Effect_Free_Statements): Likewise; turn into WHILE loops, for consistency.
2022-01-06[Ada] Fix typo on compatibilityEtienne Servais1-1/+1
gcc/ada/ * sem_type.adb (Full_View_Covers): Fix typo.
2022-01-06[Ada] Fix regression in freezing code for instantiationsEric Botcazou1-11/+19
gcc/ada/ * sem_ch12.adb (Insert_Freeze_Node_For_Instance): When going to the outer level, do not jump over following instantiations in the list.