summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorbergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-12 21:45:37 +0000
committerbergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-12 21:45:37 +0000
commit6f38a66db679a9d4034c4f681fe7c8455bfde094 (patch)
tree97db062dd1b11e54b0d0fffd54b801b7831bc114 /gcc/config
parent53e605661a7855bf12153c4dc68df9d9745957df (diff)
downloadgcc-6f38a66db679a9d4034c4f681fe7c8455bfde094.tar.gz
* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
the offset == 0 "then" clauses. * config/rs6000/predicates.md (gpc_reg_operand): Check for reload_in_progress. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119800 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/predicates.md7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 6aefe2dd0c9..0b4f7df44d6 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -81,10 +81,13 @@
(and (match_code "const_int")
(match_test "INTVAL (op) > 0 && exact_log2 (INTVAL (op)) >= 0")))
-;; Return 1 if op is a register that is not special.
+;; Return 1 if op is a register that is not special. We accept anything
+;; during reload_in_progress since eliminate_regs_in_insn() sometimes
+;; creates invalid insns which will be fixed up later in reload.
(define_predicate "gpc_reg_operand"
(and (match_operand 0 "register_operand")
- (match_test "(GET_CODE (op) != REG
+ (match_test "(reload_in_progress
+ || GET_CODE (op) != REG
|| (REGNO (op) >= ARG_POINTER_REGNUM
&& !XER_REGNO_P (REGNO (op)))
|| REGNO (op) < MQ_REGNO)