aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>2024-07-12 13:27:08 +0200
committerStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>2024-07-12 13:27:08 +0200
commit56de68aba6cb9cf3022d9e303eec6c6cdb49ad4d (patch)
tree84362a6877f313e5e8d2542c78e635d54c92584c /gcc
parent7bcef7532b10040bb82567136a208d0c4560767d (diff)
downloadgcc-56de68aba6cb9cf3022d9e303eec6c6cdb49ad4d.zip
gcc-56de68aba6cb9cf3022d9e303eec6c6cdb49ad4d.tar.gz
gcc-56de68aba6cb9cf3022d9e303eec6c6cdb49ad4d.tar.bz2
s390: Align *cjump_64 and *icjump_64
During machine reorg we optimize backward jumps and transform insns as e.g. (jump_insn 118 117 119 (set (pc) (if_then_else (ne (reg:CCRAW 33 %cc) (const_int 8 [0x8])) (label_ref 134) (pc))) "dec_math_1.f90":204:8 discrim 1 2161 {*cjump_64} (expr_list:REG_DEAD (reg:CCRAW 33 %cc) (int_list:REG_BR_PROB 719407028 (nil))) -> 134) into (jump_insn 118 117 432 (set (pc) (if_then_else (ne (reg:CCRAW 33 %cc) (const_int 8 [0x8])) (pc) (label_ref 433))) "dec_math_1.f90":204:8 discrim 1 -1 (expr_list:REG_DEAD (reg:CCRAW 33 %cc) (int_list:REG_BR_PROB 719407028 (nil))) -> 433) The latter is not recognized anymore since *icjump_64 only matches CC_REGNUM against zero. Fixed by aligning *cjump_64 and *icjump_64. gcc/ChangeLog: * config/s390/s390.md (*icjump_64): Allow raw CC comparisons, i.e., any constant integer between 0 and 15 for CC comparisons.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/s390/s390.md3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 1311a5f..2555006 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -9530,7 +9530,8 @@
(define_insn "*icjump_64"
[(set (pc)
(if_then_else
- (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
+ (match_operator 1 "s390_comparison" [(reg CC_REGNUM)
+ (match_operand 2 "const_int_operand" "")])
(pc)
(label_ref (match_operand 0 "" ""))))]
""