aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/h8300
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>2015-02-05 10:04:04 -0700
committerJeff Law <law@gcc.gnu.org>2015-02-05 10:04:04 -0700
commitb291a2021d9d8ccce1d50771cac9672c58ead0f6 (patch)
tree80f9b2809975f2b7adb91e28e0021f0d45343b7b /gcc/config/h8300
parent29e1d31b2cf2720fad010f1079b679c5edfb206f (diff)
downloadgcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.zip
gcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.tar.gz
gcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.tar.bz2
re PR target/58400 (gcc for h8300 internal compiler error: insn does not satisfy its constraints at fs/ext4/mballoc.c: In function 'mb_free_blocks':)
* config/h8300/constraints.md ("U" constraint): Use strict variant of REG_OK_FOR_BASE_P after reload has started. PR target/58400 gcc.target/h8300/pr58400.c: New test. From-SVN: r220457
Diffstat (limited to 'gcc/config/h8300')
-rw-r--r--gcc/config/h8300/constraints.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/h8300/constraints.md b/gcc/config/h8300/constraints.md
index 1d2ad5f..15bfedb 100644
--- a/gcc/config/h8300/constraints.md
+++ b/gcc/config/h8300/constraints.md
@@ -171,10 +171,14 @@
(define_constraint "U"
"An operand valid for a bset destination."
(ior (and (match_code "reg")
- (match_test "REG_OK_FOR_BASE_P (op)"))
+ (match_test "(reload_in_progress || reload_completed)
+ ? REG_OK_FOR_BASE_STRICT_P (op)
+ : REG_OK_FOR_BASE_P (op)"))
(and (match_code "mem")
(match_code "reg" "0")
- (match_test "REG_OK_FOR_BASE_P (XEXP (op, 0))"))
+ (match_test "(reload_in_progress || reload_completed)
+ ? REG_OK_FOR_BASE_STRICT_P (XEXP (op, 0))
+ : REG_OK_FOR_BASE_P (XEXP (op, 0))"))
(and (match_code "mem")
(match_code "symbol_ref" "0")
(match_test "TARGET_H8300S"))