https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118303
Bug ID: 118303 Summary: Various behaviours exposed by the testsuite result dependent on TARGET_CALLEE_COPIES Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hp at gcc dot gnu.org Target Milestone: --- Target: mmix A number of testsuite failures seem related to the setting of TARGET_CALLEE_COPIES for a target. To wit, if I disable the CALLEE_COPIES setting (to true) for MMIX like so: diff --git a/gcc/config/mmix/mmix.cc b/gcc/config/mmix/mmix.cc index e167ffcb6609..86cefe6dd55c 100644 --- a/gcc/config/mmix/mmix.cc +++ b/gcc/config/mmix/mmix.cc @@ -266,8 +266,6 @@ static HOST_WIDE_INT mmix_starting_frame_offset (void); #define TARGET_SETUP_INCOMING_VARARGS mmix_setup_incoming_varargs #undef TARGET_PASS_BY_REFERENCE #define TARGET_PASS_BY_REFERENCE mmix_pass_by_reference -#undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_PREFERRED_RELOAD_CLASS #define TARGET_PREFERRED_RELOAD_CLASS mmix_preferred_reload_class ...then several tests start to PASS, from previously failing. These are, at r15-6555-gea228f22be8160, as condensed listing: g++.sum g++.dg/tree-ssa/pr103660-0.C g++.sum g++.dg/tree-ssa/pr103660-3.C gcc.sum gcc.c-torture/compile/pr110266.c gcc.sum gcc.dg/analyzer/CVE-2005-1689-minimal.c gcc.sum gcc.dg/analyzer/data-model-1.c gcc.sum gcc.dg/ipa/iinline-4.c gcc.sum gcc.dg/ipa/inline-5.c gcc.sum gcc.dg/ipa/ipa-sra-12.c gcc.sum gcc.dg/ipa/ipa-sra-18.c gcc.sum gcc.dg/ipa/ipcp-agg-12.c gcc.sum gcc.dg/ipa/ipcp-cstagg-5.c gcc.sum gcc.dg/ipa/ipcp-cstagg-6.c gcc.sum gcc.dg/ipa/ipcp-cstagg-7.c ...and in the regular verbose form: FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++17 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++17 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++26 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++26 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++98 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-0.C -std=gnu++98 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 2 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++17 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 4 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++17 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 4 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++26 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 4 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++26 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 4 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++98 scan-tree-dump-times forwprop1 "(?:lt_expr|min_expr), " 4 FAIL: g++.dg/tree-ssa/pr103660-3.C -std=gnu++98 scan-tree-dump-times forwprop1 "(?:vec_cond_expr|min_expr), " 4 FAIL: gcc.c-torture/compile/pr110266.c -O0 (internal compiler error: in expand_expr_addr_expr_1, at expr.cc:9244) FAIL: gcc.c-torture/compile/pr110266.c -O0 (test for excess errors) FAIL: gcc.dg/analyzer/CVE-2005-1689-minimal.c (test for excess errors) FAIL: gcc.dg/analyzer/CVE-2005-1689-minimal.c inbuf.data (test for warnings, line 62) FAIL: gcc.dg/analyzer/data-model-1.c (test for warnings, line 1016) FAIL: gcc.dg/analyzer/data-model-1.c (test for warnings, line 1017) FAIL: gcc.dg/analyzer/data-model-1.c (test for warnings, line 1029) FAIL: gcc.dg/analyzer/data-model-1.c (test for warnings, line 1030) FAIL: gcc.dg/analyzer/data-model-1.c (test for excess errors) FAIL: gcc.dg/ipa/iinline-4.c scan-ipa-dump inline "hooray4[^\\\\n]*inline copy in test4" FAIL: gcc.dg/ipa/inline-5.c scan-ipa-dump-times fnsummary "Will be eliminated" 4 FAIL: gcc.dg/ipa/ipa-sra-12.c scan-ipa-dump-times sra "Will split parameter" 2 FAIL: gcc.dg/ipa/ipa-sra-12.c scan-ipa-dump-times sra "component at byte offset" 4 FAIL: gcc.dg/ipa/ipa-sra-18.c scan-ipa-dump-times sra "Will remove parameter 4" 3 FAIL: gcc.dg/ipa/ipcp-agg-12.c scan-ipa-dump-times cp "adding an extra caller" 2 FAIL: gcc.dg/ipa/ipcp-cstagg-5.c scan-ipa-dump cp "Discovered an indirect call to a known target" FAIL: gcc.dg/ipa/ipcp-cstagg-5.c scan-ipa-dump-times cp "Discovered an indirect call to a known target" 3 FAIL: gcc.dg/ipa/ipcp-cstagg-6.c scan-ipa-dump-times cp "Discovered an indirect call to a known target" 3 FAIL: gcc.dg/ipa/ipcp-cstagg-7.c scan-ipa-dump-times cp "Discovered an indirect call to a known target" 3 See also https://gcc.gnu.org/pipermail/gcc-testresults/2025-January/834223.html These may not all be due to the same actual bug, but since they're all switch from FAIL to PASS dependent on one particular setting, I'll list them all in one PR. Also, I doubt the underlying cause is actually target-dependent, so setting middle-end as a start. Change to the default TARGET_CALLEE_COPIES (false) you say? We can't have *that*, that's an ABI change! Not sure it'd affect anyone else anywhere and it may even be a performance win, but still, it'd be cheating. ;-)