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. ;-)

Reply via email to