Hi,
The patch fixed the wrong "if" fall through in "cstore<mode>4"
expand, which causes comparison pattern expanded twice on P10.
The attachments are the patch diff and change log file.
Bootstrapped and tested on powerpc64le-linux with no regressions.
Is this okay for trunk? Any recommendations? Thanks a lot.
PR target/100952
* config/rs6000/rs6000.md (cstore<mode>4): Fix wrong fall through.
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3f59b544f6a..3ae7aa29c1d 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11627,7 +11627,7 @@ (define_expand "cstore<mode>4"
/* Expanding EQ and NE directly to some machine instructions does not help
but does hurt combine. So don't. */
- if (GET_CODE (operands[1]) == EQ)
+ else if (GET_CODE (operands[1]) == EQ)
emit_insn (gen_eq<mode>3 (operands[0], operands[2], operands[3]));
else if (<MODE>mode == Pmode
&& GET_CODE (operands[1]) == NE)