aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2021-06-15Fortran/OpenMP: Extend defaultmap clause for OpenMP 5 [PR92568]Tobias Burnus25-77/+938
PR fortran/92568 gcc/fortran/ChangeLog: * dump-parse-tree.c (show_omp_clauses): Update for defaultmap. * f95-lang.c (LANG_HOOKS_OMP_ALLOCATABLE_P, LANG_HOOKS_OMP_SCALAR_TARGET_P): New. * gfortran.h (enum gfc_omp_defaultmap, enum gfc_omp_defaultmap_category): New. * openmp.c (gfc_match_omp_clauses): Update defaultmap matching. * trans-decl.c (gfc_finish_decl_attrs): Set GFC_DECL_SCALAR_TARGET. * trans-openmp.c (gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New. (gfc_omp_scalar_p): Take 'ptr_alloc_ok' argument. (gfc_trans_omp_clauses, gfc_split_omp_clauses): Update for defaultmap changes. * trans.h (gfc_omp_scalar_p): Update prototype. (gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New. (struct lang_decl): Add scalar_target. (GFC_DECL_SCALAR_TARGET, GFC_DECL_GET_SCALAR_TARGET): New. gcc/ChangeLog: * gimplify.c (enum gimplify_defaultmap_kind): Add GDMK_SCALAR_TARGET. (struct gimplify_omp_ctx): Extend defaultmap array by one. (new_omp_context): Init defaultmap[GDMK_SCALAR_TARGET]. (omp_notice_variable): Update type classification for Fortran. (gimplify_scan_omp_clauses): Update calls for new argument; handle GDMK_SCALAR_TARGET; for Fortran, GDMK_POINTER avoid GOVD_MAP_0LEN_ARRAY. * langhooks-def.h (lhd_omp_scalar_p): Add 'ptr_ok' argument. * langhooks.c (lhd_omp_scalar_p): Likewise. (LANG_HOOKS_OMP_ALLOCATABLE_P, LANG_HOOKS_OMP_SCALAR_TARGET_P): New. (LANG_HOOKS_DECLS): Add them. * langhooks.h (struct lang_hooks_for_decls): Add new hooks, update omp_scalar_p pointer type to include the new bool argument. libgomp/ChangeLog: * testsuite/libgomp.fortran/defaultmap-8.f90: New test. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/pr99928-1.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-2.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-3.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-4.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-5.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-6.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/pr99928-8.f90: Uncomment 'defaultmap(none)'. * gfortran.dg/gomp/defaultmap-1.f90: New test. * gfortran.dg/gomp/defaultmap-2.f90: New test. * gfortran.dg/gomp/defaultmap-3.f90: New test. * gfortran.dg/gomp/defaultmap-4.f90: New test. * gfortran.dg/gomp/defaultmap-5.f90: New test. * gfortran.dg/gomp/defaultmap-6.f90: New test. * gfortran.dg/gomp/defaultmap-7.f90: New test.
2021-06-15analyzer: track dynamic extents of regionsDavid Malcolm12-42/+473
This patch extends region_model to add tracking of the sizes of dynamically-allocated regions, both on the heap (via malloc etc) and stack (via alloca). It adds enough purging of this state to avoid blowing up any existing analyzer test cases. The state can be queried via a new "__analyzer_dump_capacity" for use in DejaGnu tests but other than that doesn't do anything - I have various followup experiments that make use of this. gcc/analyzer/ChangeLog: * engine.cc (exploded_node::on_stmt): Handle __analyzer_dump_capacity. (exploded_node::on_stmt): Drop m_sm_changes from on_stmt_flags. (state_change_requires_new_enode_p): New function... (exploded_graph::process_node): Call it, rather than querying flags.m_sm_changes, so that dynamic-extent differences can also trigger the splitting of nodes. * exploded-graph.h (struct on_stmt_flags): Drop field m_sm_changes. * program-state.cc (program_state::detect_leaks): Purge dead heap-allocated regions from dynamic extents. (selftest::test_program_state_1): Fix type of "size_in_bytes". (selftest::test_program_state_merging): Likewise. * region-model-impl-calls.cc (region_model::impl_call_analyzer_dump_capacity): New. (region_model::impl_call_free): Remove dynamic extents from the freed region. * region-model-reachability.h (reachable_regions::begin_mutable_base_regs): New. (reachable_regions::end_mutable_base_regs): New. * region-model.cc: Include "tree-object-size.h". (region_model::region_model): Support new field m_dynamic_extents. (region_model::operator=): Likewise. (region_model::operator==): Likewise. (region_model::dump_to_pp): Dump sizes of dynamic regions. (region_model::handle_unrecognized_call): Purge dynamic extents from any regions that have escaped mutably:. (region_model::get_capacity): New function. (region_model::add_constraint): Unset dynamic extents when a heap-allocated region's address is NULL. (region_model::unbind_region_and_descendents): Purge dynamic extents of unbound regions. (region_model::can_merge_with_p): Call m_dynamic_extents.can_merge_with_p. (region_model::create_region_for_heap_alloc): Assert that size_in_bytes's type is compatible with size_type_node. Update for renaming of record_dynamic_extents to set_dynamic_extents. (region_model::create_region_for_alloca): Likewise. (region_model::record_dynamic_extents): Rename to... (region_model::set_dynamic_extents): ...this. Assert that size_in_bytes's type is compatible with size_type_node. Add it to the m_dynamic_extents map. (region_model::get_dynamic_extents): New. (region_model::unset_dynamic_extents): New. (selftest::test_state_merging): Fix type of "size". (selftest::test_malloc_constraints): Likewise. (selftest::test_malloc): Verify dynamic extents. (selftest::test_alloca): Likewise. * region-model.h (region_to_value_map::is_empty): New. (region_model::dynamic_extents_t): New typedef. (region_model::impl_call_analyzer_dump_capacity): New decl. (region_model::get_dynamic_extents): New function. (region_model::get_dynamic_extents): New decl. (region_model::set_dynamic_extents): New decl. (region_model::unset_dynamic_extents): New decl. (region_model::get_capacity): New decl. (region_model::record_dynamic_extents): Rename to set_dynamic_extents. (region_model::m_dynamic_extents): New field. gcc/ChangeLog: * doc/analyzer.texi (Special Functions for Debugging the Analyzer): Add __analyzer_dump_capacity. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_capacity): New decl. * gcc.dg/analyzer/capacity-1.c: New test. * gcc.dg/analyzer/capacity-2.c: New test. * gcc.dg/analyzer/capacity-3.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15analyzer: add class region_to_value_mapDavid Malcolm2-0/+155
Add a class for associating symbolic values with regions, for use initially for recording the sizes of dynamically-allocated regions, though this also could potentially be used for e.g. tracking strlen() values. gcc/analyzer/ChangeLog: * region-model.cc (region_to_value_map::operator=): New. (region_to_value_map::operator==): New. (region_to_value_map::dump_to_pp): New. (region_to_value_map::dump): New. (region_to_value_map::can_merge_with_p): New. * region-model.h (class region_to_value_map): New class. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15analyzer testsuite: add explode-2a.c [PR101068]David Malcolm1-0/+51
Due to a bug (PR analyzer/101068), the analyzer only explores a limited subset of the possible paths through gcc.dg/analyzer/explode-2.c, and this artifically helps stop this testcase from exploding. I intend to fix this at some point, but for now, this patch adds a revised test case which captures the effective CFG due to the bug, so that we explicitly have test coverage for that CFG. gcc/testsuite/ChangeLog: PR analyzer/101068 * gcc.dg/analyzer/explode-2a.c: New test. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-06-15[Ada] Avoid unhelpful dead code warningsSteve Baird1-17/+22
gcc/ada/ * exp_util.adb (Kill_Dead_Code): Generalize the existing handling of if statements to handle case statements similarly.
2021-06-15[Ada] Remove couple of obsolete declarationsEric Botcazou1-2/+0
gcc/ada/ * raise.h (_gnat_builtin_longjmp): Delete. (set_gnat_exit_status): Likewise.
2021-06-15[Ada] Enable removal of side-effects in component declarationsPiotr Trojanek1-1/+2
gcc/ada/ * exp_util.adb (Possible_Side_Effect_In_SPARK): Handle component declaration just like full type and subtype declarations.
2021-06-15[Ada] Extend function to retrieve first/last nodes to all declarationsYannick Moy1-1/+1
gcc/ada/ * errout.adb (First_And_Last_Node): Also apply to arbitrary late declarations, not only subprogram specs.
2021-06-15[Ada] Incorrect Reinit_Field_To_Zero calls for concurrent entitiesBob Duff1-4/+7
gcc/ada/ * sem_ch3.adb (Make_Class_Wide_Type): Make sure all the calls to Reinit_Field_To_Zero are for the correct Ekinds.
2021-06-15[Ada] No_Task_Parts aspectBob Duff8-612/+677
gcc/ada/ * aspects.ads (No_Task_Parts): New aspect. * snames.ads-tmpl: Add the aspect name. * exp_ch6.adb (Might_Have_Tasks): Return False if this is a class-wide type whose specific type has No_Task_Parts. * freeze.adb (Check_No_Parts_Violations): This is an adaptation of the procedure formerly known as Check_No_Controlled_Parts_Violations, which now supports both No_Controlled_Parts and No_Task_Parts. It takes a parameter indicating which aspect is being checked. (Freeze_Entity): Call Check_No_Parts_Violations for both aspects. * sem_ch13.adb (Analyze_Aspect_Specifications): The code for Aspect_No_Controlled_Parts already works as is with Aspect_No_Task_Parts. * libgnat/a-iteint.ads: Add No_Task_Parts aspect to the two iterator iterfaces. * doc/gnat_rm/implementation_defined_aspects.rst: Add documentation for the No_Task_Parts aspect. * gnat_rm.texi: Regenerate.
2021-06-15[Ada] Fix handling of scopes for subprogram calls in unnestingArnaud Charlet1-1/+1
gcc/ada/ * exp_unst.adb (Unnest_Subprogram.Build_Table.Visit_Node): Fix handling of scopes for subprogram calls.
2021-06-15[Ada] Fix detection of access-to-variable typesPiotr Trojanek2-4/+5
gcc/ada/ * sem_prag.adb: Fix typos in comments related to access types. * sem_util.adb (Is_Access_Variable): Stronger condition.
2021-06-15[Ada] Use runtime from base compiler during stage1Arnaud Charlet4-229/+226
gcc/ada/ * Make-generated.in: Add rule to copy runtime files needed during stage1. * raise.c: Remove obsolete symbols used during bootstrap. * gcc-interface/Make-lang.in: Do not use libgnat sources during stage1. (GNAT_ADA_OBJS, GNATBIND_OBJS): Split in two parts, the common part and the part only used outside of stage1. (ADA_GENERATED_FILES): Add runtime files needed during bootstrap when recent APIs are needed. (ada/b_gnatb.adb): Remove prerequisite. * gcc-interface/system.ads: Remove obsolete entries.
2021-06-15[Ada] Minor consistency fix for Windows SEHEric Botcazou1-1/+1
gcc/ada/ * raise-gcc.c (__gnat_personality_seh0): Use PERSONALITY_FUNCTION.
2021-06-15[Ada] AI12-0138: Iterators and other nonoverridable aspectsEd Schonberg1-5/+25
gcc/ada/ * sem_util.adb (Is_Confirming): Separate the handling of Implicit_Dereference, for which no pragma is generated but which is already checked for legality in Sem_Ch13, including renamed discriminants in a derived type. (Is_Confirming, Same_Name): For expanded names, only check matching of selector, because prefix may correspond to original and derived types with different names and/or scopes. Semantic checks on aspect expression have already verified its legality. Add comments regarding possible gaps in RM description of the feature.
2021-06-15[Ada] Error when passing subprogram'Access to null-defaulted formal subprogramGary Dismukes2-30/+9
gcc/ada/ * freeze.adb (Freeze_Subprogram): Don't propagate conventions Intrinsic or Entry to anonymous access-to-subprogram types associated with subprograms having those conventions. Update related comment. * sem_attr.adb (Resolve_Attribute, Attribute_*Access): Remove special-case warning code for cases where a called subprogram has convention Intrinsic as well as its formal's type (the expected type for the Access attribute), since this case can no longer occur.
2021-06-15[Ada] Fix typos in comment about expansion of attribute ImagePiotr Trojanek1-1/+1
gcc/ada/ * exp_imgv.adb (Expand_User_Defined_Enumeration_Image): Fix typos.
2021-06-15[Ada] Allow Known_Static_Component_Size (etc) on private typesBob Duff1-5/+5
gcc/ada/ * einfo-utils.adb (Known_Component_Size, Known_Static_Component_Size, Unknown_Component_Size): Use Implementation_Base_Type instead of Base_Type.
2021-06-15[Ada] Add Interface_Name field to E_Loop_ParameterBob Duff1-0/+1
gcc/ada/ * gen_il-gen-gen_entities.adb (E_Loop_Parameter): Add Interface_Name field.
2021-06-15[Ada] Disable certain checks in predefined unitsBob Duff1-0/+8
gcc/ada/ * sem_cat.adb (Check_Non_Static_Default_Expr): Allow nonstatic expression in predefined unit with pragma Preelaborate.
2021-06-15[Ada] Clarify the semantics of signed intrinsic shift operationsYannick Moy2-12/+16
gcc/ada/ * doc/gnat_rm/intrinsic_subprograms.rst: More details on shift operations for signed types. Also add the missing Import and Convention on the example. * gnat_rm.texi: Regenerate.
2021-06-15[Ada] Small cleanup in exception handling C codeEric Botcazou1-6/+4
gcc/ada/ * raise-gcc.c: Include <cstdarg> instead of <stdarg.h> in C++. Include <stdbool.h> and unconditionally <stdlib.h> in C.
2021-06-15[Ada] Remove redundant guard from Find_Overlaid_EntityPiotr Trojanek2-47/+45
gcc/ada/ * sem_util.ads (Find_Overlaid_Entity): Simplify comment for spec. * sem_util.adb (Find_Overlaid_Entity): Remove defensive code from body.
2021-06-15[Ada] Remove const qualifier on a couple of pointed-to typesEric Botcazou2-5/+6
gcc/ada/ * argv.c: Add include of <stdlib.h> for the runtime. (gnat_argv): Change type to char ** and initialize to NULL. (gnat_envp): Likewise. * argv-lynxos178-raven-cert.c: Add include of <stdlib.h>. (gnat_argv): Change type to char ** and initialize to NULL. (gnat_envp): Likewise.
2021-06-15[Ada] Fix bug in if_expressions introduced by var-size nodes changesBob Duff2-11/+9
gcc/ada/ * gen_il-gen.adb (Setter_Needs_Parent): Add missing Then_Actions. Fix self-contradictory comment. * exp_util.adb (Insert_Actions): Minor comment improvments.
2021-06-15[Ada] Add support for folding more and/or expressionsArnaud Charlet2-46/+114
gcc/ada/ * sem_eval.adb (Eval_Logical_Op, Test_Expression_Is_Foldable): Add support for folding more "and"/"or" expressions. * exp_util.adb (Side_Effect_Free): Fix handling of membership tests.
2021-06-15[Ada] Replace repeated calls by references to a local objectPiotr Trojanek1-9/+9
gcc/ada/ * sem_res.adb (Resolve_Actual): Replace repeated calls to "Etype (F)" with references to "F_Typ", which keeps the results of exactly that call.
2021-06-15[Ada] Variable-sized node types: improve error messagesBob Duff1-4/+6
gcc/ada/ * gen_il-gen.adb (To_Bit_Offset): Use 'Base to avoid overflow in computations in Last_Bit when Offset = 'Last. (Choose_Offset): Give a better error message when we run out of fields. In particular, point out that Gen_IL.Internals.Bit_Offset'Last needs to be increased.
2021-06-15[Ada] Variable-sized node types -- cleanupBob Duff25-4450/+4576
gcc/ada/ * atree.ads, einfo-utils.ads, einfo-utils.adb, fe.h, gen_il.adb, gen_il.ads, gen_il-gen-gen_entities.adb, gen_il-gen-gen_nodes.adb, sem_ch12.adb, sem_ch3.adb, sem_util.adb, sinfo-utils.ads, treepr.adb, types.ads: Clean up ??? comments and other comments. * atree.adb: Clean up ??? comments and other comments. (Validate_Node): Fix bug: "Off_0 (N) < Off_L (N)" should be "Off_0 (N) <= Off_L (N)". * gen_il-gen.adb, gen_il-gen.ads: Clean up ??? comments and other comments. Add support for getter-specific and setter-specific preconditions. Detect the error of putting a field in the wrong subrange. Misc cleanup. (Node_Field vs. Entity_Field): Clean up Nmake. Improve comments. * gen_il-utils.ads: Misc cleanup. Move... * gen_il-internals.ads: ... here. * gen_il-utils.adb: Misc cleanup. Move... * gen_il-internals.adb: ... here. * gen_il-fields.ads: Move Was_Default_Init_Box_Association, which was in the wrong subrange. Add comments. Misc cleanup. * gen_il-types.ads: Add Named_Access_Kind. * sinfo-cn.adb: Clean up ??? comments and other comments. Remove redundant assertions. * einfo.ads, sinfo.ads: Clean up ??? comments and other comments. Remove all the comments indicating field offsets. These are obsolete now that Gen_IL computes the offsets automatically.
2021-06-15[Ada] Rename Ada 202* to Ada 2022Arnaud Charlet51-251/+290
gcc/ada/ * einfo.ads, errout.adb, errout.ads, exp_aggr.adb, exp_ch5.adb, exp_ch6.adb, exp_ch8.adb, exp_ch9.adb, exp_imgv.adb, exp_put_image.adb, fe.h, impunit.adb, impunit.ads, libgnat/a-cobove.ads, libgnat/a-convec.ads, opt.ads, par-ch12.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb, par-prag.adb, par-util.adb, scans.ads, scng.adb, sem_aggr.adb, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb, sem_res.adb, sem_type.adb, sem_util.adb, sem_util.ads, sinfo.ads, snames.ads-tmpl, sprint.adb, switch-c.adb, usage.adb, doc/gnat_ugn/building_executable_programs_with_gnat.rst, doc/gnat_rm/implementation_defined_aspects.rst, gcc-interface/trans.c: Update all references to Ada 2020 to Ada 2022. Rename pragma Ada_2020 to Ada_2022. Update documentation accordingly. * gnat_ugn.texi, gnat_rm.texi: Regenerate.
2021-06-15[Ada] Avoid inappropriate error messages regarding aggregates and variant partsSteve Baird2-8/+21
gcc/ada/ * sem_util.adb (Gather_Components): Factor the test that was already being used to govern emitting a pre-Ada_2020 error message into an expression function, OK_Scope_For_Discrim_Value_Error_Messages. Call that new function in two places: the point where the same test was being performed previously, and in governing emission of a newer Ada_2020 error message. In both cases, the out-mode parameter Gather_Components.Report_Errors is set to True even if no error messages are generated within Gather_Components. * sem_util.ads: Correct a comment.
2021-06-15[Ada] Add more initialization of Stored_ConstraintRichard Kenner2-2/+21
gcc/ada/ * sem_ch3.adb (Array_Type_Declaration, Build_Derived_Type): Reinitialize Stored_Constraint when needed. (Set_Modular_Size): Likewise. * atree.adb: (Check_Vanishing_Fields): Add node id to debugging information.
2021-06-15[Ada] Fix bug in subtype of private type with invariantsBob Duff4-20/+40
gcc/ada/ * sem_util.adb (Propagate_Invariant_Attributes): Call Set_Has_Own_Invariants on the base type, because these are Base_Type_Only. The problem is that the base type of a type is indeed a base type when Set_Base_Type is called, but then the type is mutated into a subtype in rare cases. * atree.ads, atree.adb (Is_Entity): Export. Correct subtype of parameter in body. * gen_il-gen.adb: Improve getters so that "Pre => ..." can refer to the value of the field. Put Warnings (Off) on some with clauses that are not currently used, but might be used by such Pre's.
2021-06-15[Ada] Robust switching from incomplete to access typesPiotr Trojanek3-38/+36
gcc/ada/ * sem_ch3.adb (Access_Type_Declaration): Add comments to explain the ordering of Mutate_Kind and Set_Directly_Designated_Type; remove temporary setting of Ekind to E_Access_Type for building _master objects, since now the Ekind is already set to its final value. Move repeated code into Setup_Access_Type routine and use it so that Process_Subtype is executed before mutating the kind of the type entity. * gen_il-gen-gen_entities.adb (Gen_Entities): Remove Directly_Designated_Type from E_Void, E_Private_Record, E_Limited_Private_Type and Incomplete_Kind; now it only belongs to Access_Kind entities. * sem_util.adb: Minor reformatting.
2021-06-15expr: Fix up VEC_PACK_TRUNC_EXPR expansion [PR101046]Jakub Jelinek2-0/+17
The following testcase ICEs, because we have a mode mismatch. VEC_PACK_TRUNC_EXPR's operands have different modes from the result (same vector mode size but twice as large element), but we were passing non-NULL subtarget with the mode of the result to the expansion of its arguments, so the VEC_PERM_EXPR in one of the operands which had V8SImode operands and result had V16HImode target. Fixed by clearing the subtarget if we are changing mode. 2021-06-15 Jakub Jelinek <jakub@redhat.com> PR target/101046 * expr.c (expand_expr_real_2) <case VEC_PACK_FIX_TRUNC_EXPR, case VEC_PACK_TRUNC_EXPR>: Clear subtarget when changing mode. * gcc.target/i386/pr101046.c: New test.
2021-06-15Handle multiple latches in irreducible region markRichard Biener4-8/+14
The following makes irreducible region discovery handle multiple latches. 2021-06-14 Richard Biener <rguenther@suse.de> * cfgloopanal.c (mark_irreducible_loops): Use a dominance check to identify loop latches. * cfgloop.c (verify_loop_structure): Likewise. * loop-init.c (apply_loop_flags): Allow marked irreducible regions even with multiple latches. * predict.c (rebuild_frequencies): Simplify.
2021-06-15Assert we have irreducible regions marked in the threaderRichard Biener1-0/+2
This adds an assert that would fire if any thread path registry user runs into the check that relies on such regions marked. 2021-06-15 Richard Biener <rguenther@suse.de> * tree-ssa-threadupdate.c (jump_thread_path_registry::mark_threaded_blocks): Assert we have marked irreducible regions.
2021-06-15testsuite: Fix Wattributes test cases for s390 and add new tests.Robin Dapp2-10/+62
There are several FAILs because we have an s390-specific check for a warning which is not necessary anymore. Remove it. Add a new test case that expects a warning about conflicting function alignment. This would fail on s390 before but most likely on other targets as well so it can be a target-independent test. Also, add a test to verify that we do not emit a note when specifying conflicting alignment for the same declaration. Need to explicitly handle every dg-note because handling one disables dg-note pruning. gcc/testsuite/ChangeLog: * c-c++-common/Wattributes.c: Remove s390-specific check and add new tests. * gcc.dg/Wattributes-6.c: Likewise.
2021-06-15c-family: Copy DECL_USER_ALIGN even if DECL_ALIGN is similar.Robin Dapp3-23/+14
When re-declaring a function with differing attributes DECL_USER_ALIGN is usually not merged/copied when DECL_ALIGN is similar. On s390 this will cause a warning message not to be shown. Similarly, we warned about the wrong alignment when short-circuiting an alignment initialization in common_handle_aligned_attribute (). Fix this by copying DECL_USER_ALIGN even if DECL_ALIGN is similar as well as getting rid of the short-circuited initialization. gcc/c-family/ChangeLog: * c-attribs.c (common_handle_aligned_attribute): Remove short circuit and dead code. gcc/c/ChangeLog: * c-decl.c (merge_decls): Copy DECL_USER_ALIGN if DECL_ALIGN is similar. gcc/cp/ChangeLog: * decl.c (duplicate_decls): Likewise.
2021-06-14rs6000: Fix test case failures by PR100085 [PR101020]Xionghu Luo1-2/+4
Tested pass, committing as obvious. gcc/testsuite/ChangeLog: 2021-06-14 Xionghu Luo <luoxhu@linux.ibm.com> PR target/101020 * gcc.target/powerpc/float128-call.c: Adjust counts for be and le.
2021-06-15Daily bump.GCC Administrator7-1/+163
2021-06-14Teach compute_objsize about placement new [PR100876].Martin Sebor6-3/+207
Resolves: PR c++/100876 - -Wmismatched-new-delete should understand placement new when it's not inlined gcc/ChangeLog: PR c++/100876 * builtins.c (gimple_call_return_array): Check for attribute fn spec. Handle calls to placement new. (ndecl_dealloc_argno): Avoid placement delete. gcc/testsuite/ChangeLog: PR c++/100876 * g++.dg/warn/Wmismatched-new-delete-4.C: New test. * g++.dg/warn/Wmismatched-new-delete-5.C: New test. * g++.dg/warn/Wstringop-overflow-7.C: New test. * g++.dg/warn/Wfree-nonheap-object-6.C: New test. * g++.dg/analyzer/placement-new.C: Prune out expected warning.
2021-06-14rs6000: MMA builtin usage ICEs when used in a #pragma omp parallel and using ↵Peter Bergner2-6/+30
-fopenmp [PR100777] Using an MMA builtin within an openmp parallel code block, leads to an SSA verification ICE on the temporaries we create while expanding the MMA builtins at gimple time. The solution is to use create_tmp_reg_or_ssa_name(), which knows when to create either an SSA or register temporary. 2021-06-14 Peter Bergner <bergner@linux.ibm.com> gcc/ PR target/100777 * config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Use create_tmp_reg_or_ssa_name(). gcc/testsuite/ PR target/100777 * gcc.target/powerpc/pr100777.c: New test.
2021-06-14Limit new value calculations to first order effects.Andrew MacLeod3-18/+16
When utilzing poor values during propagation, we mostly care about values that were undefined/processed directly used in calcualting the SSA_NAME being processed. 2nd level derivations of such poor values rarely affect the inital calculation. Leave them to when they are directly encountered. * gimple-range-cache.cc (ranger_cache::ranger_cache): Adjust. (ranger_cache::enable_new_values): Set to specified value and return the old value. (ranger_cache::disable_new_values): Delete. (ranger_cache::fill_block_cache): Disable non 1st order derived poor values. * gimple-range-cache.h (ranger_cache): Adjust prototypes. * gimple-range.cc (gimple_ranger::range_of_expr): Adjust.
2021-06-14i386: Split V2HImode *punpckwd to SSE instruction [PR101058]Uros Bizjak3-9/+25
V2HImode *punpckwd should not be split to the insn that depends on TARGET_MMX_WITH_SSE, since the later is disabled on 32bit targets. Also return true early from ix86_vectorize_vec_perm_const when testing with V2HI mode. *punpckwd can be used to implement all permutations. 2021-06-14 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/101058 * config/i386/i386-expand.c (ix86_vectorize_vec_perm_const): Return true early when testing with V2HImode. * config/i386/mmx.md (*punpckwd): Split to sse2_pshuflw_1. gcc/testsuite/ PR target/101058 * gcc.target/i386/pr101058.c: New test.
2021-06-14c-family: Add fix-it suggestions for more <stdlib.h> names [PR101052]Jonathan Wakely3-0/+35
PR c++/101052 gcc/c-family/ChangeLog: * known-headers.cc (get_stdlib_header_for_name): Add known headers for EXIT_FAILURE, EXIT_SUCCESS, abort, atexit, calloc, exit, and getenv. gcc/testsuite/ChangeLog: * g++.dg/spellcheck-stdlib.C: Add checks for <cstdlib> names. * gcc.dg/spellcheck-stdlib.c: Likewise.
2021-06-14arm: Auto-vectorization for MVE: add pack/unpack patternsChristophe Lyon7-43/+168
This patch adds vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>, vec_pack_trunc_<mode> patterns for MVE. It does so by moving the unpack patterns from neon.md to vec-common.md, while adding them support for MVE. The pack expander is derived from the Neon one (which in turn is renamed into neon_quad_vec_pack_trunc_<mode>). The patch introduces mve_vec_unpack<US>_lo_<mode> and mve_vec_unpack<US>_hi_<mode> which are similar to their Neon counterparts, except for the assembly syntax. The patch introduces mve_vec_pack_trunc_lo_<mode> to avoid the need for a zero-initialized temporary, which is needed if the vec_pack_trunc_<mode> expander calls @mve_vmovn[bt]q_<supf><mode> instead. With this patch, we can now vectorize the 16 and 8-bit versions of vclz and vshl, although the generated code could still be improved. For test_clz_s16, we now generate vldrh.16 q3, [r1] vmovlb.s16 q2, q3 vmovlt.s16 q3, q3 vclz.i32 q2, q2 vclz.i32 q3, q3 vmovnb.i32 q1, q2 vmovnt.i32 q1, q3 vstrh.16 q1, [r0] which could be improved to vldrh.16 q3, [r1] vclz.i16 q1, q3 vstrh.16 q1, [r0] if we could avoid the need for unpack/pack steps. For reference, clang-12 generates: vldrh.s32 q0, [r1] vldrh.s32 q1, [r1, #8] vclz.i32 q0, q0 vstrh.32 q0, [r0] vclz.i32 q0, q1 vstrh.32 q0, [r0, #8] 2021-06-11 Christophe Lyon <christophe.lyon@linaro.org> gcc/ * config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): New pattern. (mve_vec_unpack<US>_hi_<mode>): New pattern. (@mve_vec_pack_trunc_lo_<mode>): New pattern. (mve_vmovntq_<supf><mode>): Prefix with '@'. * config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move to vec-common.md. (vec_unpack<US>_lo_<mode>): Likewise. (vec_pack_trunc_<mode>): Rename to neon_quad_vec_pack_trunc_<mode>. * config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): New pattern. (vec_unpack<US>_lo_<mode>): New. (vec_pack_trunc_<mode>): New. gcc/testsuite/ * gcc.target/arm/simd/mve-vclz.c: Update expected results. * gcc.target/arm/simd/mve-vshl.c: Likewise. * gcc.target/arm/simd/mve-vec-pack.c: New test. * gcc.target/arm/simd/mve-vec-unpack.c: New test.
2021-06-14C/C++: Fix unused set var warning with omp_clause_affinity [PR100913]Tobias Burnus2-6/+2
PR c/100913 gcc/c/ChangeLog: * c-parser.c (c_parser_omp_clause_affinity): No need to set iterator var in the error case. gcc/cp/ChangeLog: * parser.c (cp_parser_omp_clause_affinity): No need to set iterator var in the error case.
2021-06-14tree-optimization/100934 - properly mark irreducible regions for DOMRichard Biener2-1/+23
The jump threading code requires marked irreducible regions for the purpose of validating jump threading paths but DOM fails to provide that resulting in mised number of iteration upper bounds clearing. 2021-06-14 Richard Biener <rguenther@suse.de> PR tree-optimization/100934 * tree-ssa-dom.c (pass_dominator::execute): Properly mark irreducible regions. * gcc.dg/torture/pr100934.c: New testcase.
2021-06-14docs: Fix -Wno-cpp noteMartin Liska1-2/+1
gcc/ChangeLog: * doc/invoke.texi: Put r{...} on the same line as @item.