[Bug rtl-optimization/71724] [5/6/7 Regression] ICE: Segmentation fault, deep recursion between combine_simplify_rtx and subst
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 21 22:25:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71724
--- Comment #5 from Segher Boessenkool <segher at gcc dot gnu.org> ---
I am using the following, which also fixes the infinite loop, and seems to
not regress code quality much at all (I found *one* pattern where it made
things one machine insn worse, involving a define_insn_and_split (with
cost 0, so any finite cost is better -- combine did manage to do something
that is better according to its costs!)
But I am worried something similar then needs to be done to true_rtx, and
I don't see what.
===
diff --git a/gcc/combine.c b/gcc/combine.c
index c7255f0..ecdd3fd 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -5658,7 +5658,7 @@ combine_simplify_rtx (rtx x, machine_mode op0_mode, int
in
here since true_rtx or false_rtx might share RTL with x as a
result of the if_then_else_cond call above. */
true_rtx = subst (copy_rtx (true_rtx), pc_rtx, pc_rtx, 0, 0, 0);
- false_rtx = subst (copy_rtx (false_rtx), pc_rtx, pc_rtx, 0, 0, 0);
+ false_rtx = subst (copy_rtx (false_rtx), cond, const0_rtx, 0, 0, 0);
/* If true_rtx and false_rtx are not general_operands, an
if_then_else
is unlikely to be simpler. */
===
More information about the Gcc-bugs
mailing list